• Login
sketchucation logo sketchucation
  • Login
๐Ÿค‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

How to install a Ruby Gem for use in SketchUp

Scheduled Pinned Locked Moved Developers' Forum
27 Posts 8 Posters 9.4k Views 8 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    Jim
    last edited by 18 Jan 2010, 14:32

    When I installed yaml, I noticed there may be a case issue - I had to use:

    require 'Yaml' (or require 'YAML') because require 'yaml' did not work; although the library file names were all lower case. (Windows XP SP 3)

    I unfortunately no longer have it installed so I'm going from memory here...

    Hi

    1 Reply Last reply Reply Quote 0
    • T Offline
      tbd
      last edited by 18 Jan 2010, 14:44

      @adamb said:

      Can you give the actual error you get.

      when in Sketchup, require 'ruby_prof.so' breaks in LoadLibrary function with 'Exception C0000139 Entry Point Not Found' which is weird as it works in normal Ruby

      SketchUp Ruby Consultant | Podium 1.x developer
      http://plugins.ro

      1 Reply Last reply Reply Quote 0
      • T Offline
        todd burch
        last edited by 18 Jan 2010, 14:54

        Could it be a PATH issue?

        1 Reply Last reply Reply Quote 0
        • T Offline
          tbd
          last edited by 18 Jan 2010, 15:35

          @unknownuser said:

          Could it be a PATH issue?

          there is only loading the .so file which has dependency only for kernel32.dll, msvcrt and msvcrt-ruby18 - all loaded by SU anyway.

          SketchUp Ruby Consultant | Podium 1.x developer
          http://plugins.ro

          1 Reply Last reply Reply Quote 0
          • A Offline
            AdamB
            last edited by 18 Jan 2010, 16:29

            Yep, I see the same thing here. On windows it simply wont load. I've rebuilt it locally too.

            Developer of LightUp Click for website

            1 Reply Last reply Reply Quote 0
            • D Offline
              Dan Rathbun
              last edited by 19 Jan 2010, 02:16

              @unknownuser said:

              when in Sketchup, require 'ruby_prof.so' breaks in LoadLibrary function with 'Exception C0000139 Entry Point Not Found' which is weird as it works in normal Ruby

              What version is the msvcrt-ruby18.dll...

              ...that works in normal ruby?

              ...that does NOT work in the SU folder?

              (I got a similar error when I tried to get SU to load the 1.9.1 version ruby dll)

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • T Offline
                tbd
                last edited by 19 Jan 2010, 12:55

                Dan: thanks, that was the problem. in Sketchup there were msvcrt-ruby18.dll version 1.8.0 and in Ruby was version 1.8.6

                replacing the dll in Sketchup dir with the one from Ruby dir I was able to load

                RubyProf.measure_mode = RubyProf;;CPU_TIME 
                RubyProf.start
                  Sketchup.active_model.entities.each {|x| x.class}
                result = RubyProf.stop
                
                File.open "d;/profile.txt", 'w' do |file|
                   RubyProf;;FlatPrinter.new(result).print(file)
                end
                
                Thread ID; 32679270
                Total; 7.168426
                
                 %self     total     self     wait    child    calls  name
                 48.70      4.38     3.49     0.00     0.89        1  Sketchup;;Entities#each
                 20.50      7.17     1.47     0.00     5.70        1  Global#[No method]
                 12.39      0.89     0.89     0.00     0.00       23  Kernel#class
                 11.84      0.85     0.85     0.00     0.00        1  <Module;;Sketchup>#active_model
                  6.57      0.47     0.47     0.00     0.00        1  Sketchup;;Model#entities
                

                SketchUp Ruby Consultant | Podium 1.x developer
                http://plugins.ro

                1 Reply Last reply Reply Quote 0
                • W Offline
                  Whaat
                  last edited by 19 Jan 2010, 13:49

                  Awesome! Thanks everyone! I hope I can get it working too...

                  SketchUp Plugins for Professionals

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    Dan Rathbun
                    last edited by 19 Jan 2010, 18:47

                    @unknownuser said:

                    Dan: thanks, that was the problem. in Sketchup there were msvcrt-ruby18.dll version 1.8.0 and in Ruby was version 1.8.6

                    replacing the dll in Sketchup dir with the one from Ruby dir I was able to load RubyProf

                    I thought so!

                    I always tell people, IF your using full ruby libraries with Sketchup... to make the msvcrt-ruby18.dll file in the Sketchup program folder/directory, the SAME version as your full ruby version. Otherwise your asking for Errors (such as newer library scripts calling methods that the older interpreter doesn't understand.)

                    I've given this advice several times over at Google Groups SU Developer's forum. Not sure if I have here. I also always say make a Sketchup/_BACKUP folder and drag the older DLL into that folder, before copying the newer 'full' DLL from the ruby/bin folder. (You never know, you may have a future need to test a script, running under the old DLL version.)

                    Glad I could help.

                    @Jim: Maybe this issue needs to be added to the Ruby Tips for Sketchup Sticky Links page?

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      Dan Rathbun
                      last edited by 19 Jan 2010, 22:03

                      Re: Ruby Interpreter DLL: SketchUp vs Standard

                      I downloaded the normal standard v 1.8.0 patch level 10 DLL (msvcrt-ruby18.dll) from:
                      http://www.oldapps.com/Ruby.php?old_ruby=12
                      and compared it against the backup that was installed with Sketchup v7.0 application.

                      Both standard DOS command comp and the Support Tool WinDiff report both DLL files are identical.

                      *(WinDiff is a file comparison utility that is installed with Windows Support Tools. The Support Tools are not installed automatically with Windows. You must manually browse the WIN install CD to the "Support Tools" folder, and run a separate setup.exeto install the tools.)

                      I'm not here much anymore.

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        Dan Rathbun
                        last edited by 19 Jan 2010, 22:18

                        Re: Ruby Interpreter DLL: SketchUp vs Standard

                        The Support Tool filever.exe displays versioning information inside exe and dll files:

                        DOS cmd shell, filever verbose listing, in folder:
                        C:\Program Files\Google\Google SketchUp 7_Backup
                        This is the DLL file distro'd with Sketchup 7.x

                        >filever msvcrt-ruby18.dll /v
                        --a-- W32i   DLL   -         1.8.0.0 shp    811,008 02-19-2009 msvcrt-ruby18.dll
                        
                                Language        0x0000 (Language Neutral)
                                CharSet         0x04b0 Unicode
                                OleSelfRegister Disabled
                                FileDescription Ruby interpreter
                                InternalName    msvcrt-ruby18.dll
                                OriginalFilenam msvcrt-ruby18.dll
                                ProductVersion  1,8,0,0
                                FileVersion     1,8,0,0
                                LegalCopyright  Copyright (C) 1993-2003 Yukihiro Matsumoto
                                OleSelfRegister Disabled
                        
                                VS_FIXEDFILEINFO;
                                Signature;      feef04bd
                                Struc Ver;      00010000
                                FileVer;        00010008;00000000 (1.8;0.0)
                                ProdVer;        00010008;00000000 (1.8;0.0)
                                FlagMask;       0000003f
                                Flags;          00000000
                                OS;             00000004 Win32
                                FileType;       00000002 Dll
                                SubType;        00000000
                                FileDate;       00000000;00000000
                        

                        This is the DLL file distro'd with Ruby ver 1.8.0-10

                        >filever v180-10\msvcrt-ruby18.dll /v
                        --a-- W32i   DLL   -         1.8.0.0 shp    811,008 08-11-2003 msvcrt-ruby18.dll
                        
                                Language        0x0000 (Language Neutral)
                                CharSet         0x04b0 Unicode
                                OleSelfRegister Disabled
                                FileDescription Ruby interpreter
                                InternalName    msvcrt-ruby18.dll
                                OriginalFilenam msvcrt-ruby18.dll
                                ProductVersion  1,8,0,0
                                FileVersion     1,8,0,0
                                LegalCopyright  Copyright (C) 1993-2003 Yukihiro Matsumoto
                                OleSelfRegister Disabled
                        
                                VS_FIXEDFILEINFO;
                                Signature;      feef04bd
                                Struc Ver;      00010000
                                FileVer;        00010008;00000000 (1.8;0.0)
                                ProdVer;        00010008;00000000 (1.8;0.0)
                                FlagMask;       0000003f
                                Flags;          00000000
                                OS;             00000004 Win32
                                FileType;       00000002 Dll
                                SubType;        00000000
                                FileDate;       00000000;00000000
                        
                        

                        *(filever is a file version utility that is installed with Windows Support Tools. The Support Tools are not installed automatically with Windows. You must manually browse the WIN install CD to the "Support Tools" folder, and run a separate setup.exeto install the tools.)

                        I'm not here much anymore.

                        1 Reply Last reply Reply Quote 0
                        • A Offline
                          AdamB
                          last edited by 20 Jan 2010, 08:54

                          Given there are many fixes between 1.8.0 and 1.8.6 - and using 1.8.6 doesn't seem to cause problems - I don't know why Google are shipping quite so old a dll. In particular, I noticed a few fixes in the changelogs to Ruby related to memory leaks.

                          FYI Mac Sketchup uses 1.8.5

                          Adam

                          Developer of LightUp Click for website

                          1 Reply Last reply Reply Quote 0
                          • D Offline
                            Dan Rathbun
                            last edited by 21 Jan 2010, 02:16

                            Re: Ruby Interpreter DLL: SketchUp vs Standard

                            The Support Tool bindiff.exe reports both files are identical.

                            DOS cmd shell in folder:
                            C:\Program Files\Google\Google SketchUp 7_Backup

                            >bindiff /c msvcrt-ruby18.dll v180-10\msvcrt-ruby18.dll
                            
                            Identical  811,008 bytes
                            
                            File Count Summary
                               Identical;      1 files
                               Near Identical; 0 files
                               Different;      0 files
                               Left Only;      0 files
                               Right Only;     0 files
                               Errors;         0 files
                               Total;          1 files
                            
                            Byte Count Summary
                               Matched;    0 bytes differ
                               Left Only;  0 bytes
                               Right Only; 0 bytes
                               Total;      0 bytes
                            
                            

                            *(bindiff is a binary file comparison utility that is installed with Windows Support Tools. The Support Tools are not installed automatically with Windows. You must manually browse the WIN install CD to the "Support Tools" folder, and run a separate setup.exeto install the tools.)

                            I'm not here much anymore.

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              Dan Rathbun
                              last edited by 21 Jan 2010, 03:01

                              @adamb said:

                              ... I don't know why Google are shipping quite so old a dll. ...
                              It may just be a staffing issue, they know it works with 1.8.0, but are probably reluctant to ship with 1.8.6 without massive testing. I can see management feeling such an task as being low priority.

                              There was also at least one person at Google, who thought wrongly (the removed quote above,) that Ruby for Sketchup had to remain at v1.8.0 because the DLL (they thought,) had been extensively modified and compiled specially for Sketchup; and that to update to 1.8.6 or any other later release would be a huge project, not likely to occur any time soon.
                              __Well, I think I've proved that assumption incorrect. The Ruby Interpreter DLLs are just copies of those distro'd with standard Ruby.

                              @adamb said:

                              Given there are many fixes between 1.8.0 and 1.8.6 - and using 1.8.6 doesn't seem to cause problems - ... In particular, I noticed a few fixes in the changelogs to Ruby related to memory leaks.
                              A good reason to use 1.8.6 with Sketchup, and I have been since a few days after I installed 7.0 (and have had no problems, so far.)

                              I would feel that 1.8.7 is still not ready (it just had a recent release to fix major security bugs.) But it's almost there.

                              I tried to get Sketchup to load 1.9.1, but it did not like the DLL. I got the 'Entry Point Not Found' error. (Not sure if it was the Ruby guys who changed things, or if it was me renaming the msvcrt-ruby191.dll to msvcrt-ruby18.dll that was the problem.)

                              There are those of us, who wish to run newer Ruby releases (especially the non-english users who need multibyte character support in the 1.9.x branch.) We should be able to run any Ruby release we wish.. and it would be nice if Sketchup was setup to facilitate our choice.

                              @adamb said:

                              FYI Mac Sketchup uses 1.8.5
                              I suspect because of the major differences in OSX and Win32 programming, that there are different people working on the two implementations.

                              Does OSX Leopard come with ver 1.8.5 pre-installed?
                              _

                              I'm not here much anymore.

                              1 Reply Last reply Reply Quote 0
                              • W Offline
                                Whaat
                                last edited by 22 Jan 2010, 04:10

                                hmmm...I replaced the original DLL with the 1.8.6 version and I am now getting this message at Startup
                                Error Loading File ruby-prof.rb
                                no such file to load -- erb

                                I have ruby-prof.so, ruby-prof.rb and the ruby-prof folder in my plugins folder. ๐Ÿ˜• Any ideas?

                                SketchUp Plugins for Professionals

                                1 Reply Last reply Reply Quote 0
                                • T Offline
                                  tbd
                                  last edited by 22 Jan 2010, 07:16

                                  comment out these lines from ruby-prof.rb if you dont want pretty outputs or add erb.rb to your ruby-prof dir (I choosed the first one ๐Ÿ˜‰ )

                                  require "ruby-prof/graph_printer"
                                  require "ruby-prof/graph_html_printer"
                                  

                                  SketchUp Ruby Consultant | Podium 1.x developer
                                  http://plugins.ro

                                  1 Reply Last reply Reply Quote 0
                                  • D Offline
                                    driven
                                    last edited by 12 Feb 2010, 19:19

                                    @dan rathbun said:

                                    Anyone want to make a Mac version out of this?
                                    _

                                    making one is out of my league, but I'd like to use it if someone does, I'm attempting to learn ruby as my first, ever, programming language, any tools that work with ruby, SU and Mac should aid may grasp on the mechanics...

                                    any other recommendations welcome.

                                    john

                                    EDIT: I was digging around in systems library and came across this, can anyone shine a light on it's meaning and if it may be causing any of the many Mac ruby glitches that rear their heads.

                                    Notes on building the stand-alone reader.

                                    1. When trying to link with only MacWin and Utils, EqualTol came up as an unresolved external, so someone must be including Tol.h or something at the wrong level.

                                    2. Text.cpp in Model includes BaseApp/BaseAppServices.h. It is calling GetActiveView(). It should be restructured so that it doesn't need to call this.

                                    3. Model/MergeController.cpp is calling AppServices::GetUndoManager() which is not defined at the Model level.

                                    4. InstancePath.cpp and SectionPlane.cpp both reference CPickRecord which is not defined at the Model level.

                                    5. SteStatusText should be removed from PushPullController.cpp

                                    6. The output variable for OpenDocument should be of type IDocument rather than IDispatch.

                                    7. Need Mac implementations of OpenDocument and CloseDocument.
                                      (added in special reader version of XApplication.cpp)

                                    8. OpenDocument and CloseDocument are not implemented in the standard version of XApplicaiton. I have copied XAxpplication to the Reader folder so that I can implement this for the reader without changing SketchUp. After 3.0 releases, these implementations should be merged.

                                    9. IApplication::CloseDocument is a worthless method. There should really be a Close method on Document instead. Or at least CloseDocument should take an argument to tell you which document you should close. Maybe XDocument should delete the CSketchUpModel if it was created by a call to OpenDocument?

                                    10. Some methods still return IDispatch* rather than the real type. For example, get_Relationships.

                                    learn from the mistakes of others, you may not live long enough to make them all yourself...

                                    1 Reply Last reply Reply Quote 0
                                    • D Offline
                                      Dan Rathbun
                                      last edited by 13 Feb 2010, 07:50

                                      @driven said:

                                      EDIT: I was digging around in systems library and came across this, can anyone shine a light on it's meaning and if it may be causing any of the many Mac ruby glitches that rear their heads.

                                      Notes on building the stand-alone reader.

                                      That looks like it refers to the C++ files for building the SKP Reader extension for a third-party application. So those 'issues' are C++ issues with the SKP Reader SDK, not Sketchup itself or the SU Ruby API.

                                      I'm not here much anymore.

                                      1 Reply Last reply Reply Quote 0
                                      • D Offline
                                        Dan Rathbun
                                        last edited by 7 Jul 2010, 01:57

                                        @adamb said:

                                        I've build it on a Mac and works just fine.
                                        I had to remove some Rails stuff from the startup but it works pretty nicely too.

                                        erb.rb is in the standard ruby library.
                                        If you have a full ruby install, you need to add paths to the $: ($LOAD_PATH) array.
                                        [OR.. you could try to comment the stuff for erb out and see if it runs.]

                                        Here's a little script I had posted over at Google Groups for Win32 to load standard ruby paths.

                                        -- !loadpaths.rb --
                                        CODE moved to it's own post and updated. (06 JUL 2010)
                                        http://forums.sketchucation.com/viewtopic.php?f=180&t=29412

                                        Anyone want to make a Mac version out of this?
                                        _

                                        I'm not here much anymore.

                                        1 Reply Last reply Reply Quote 0
                                        • D Offline
                                          dney
                                          last edited by 7 Feb 2012, 03:32

                                          I was trying to use a gem named "cfpropertylist" to create an export script on Mac OS X (Lion) with sketchup 8. I had lots of problems, but finally got it working. Others using Mac may be interested.

                                          I installed the GEM to the standard OS X installed ruby (version 1.8.7). I did "sudo gem install CFPropertyList-2.0.17.gem".
                                          That worked, but messed up the permissions on the files so non-superusers could not read the files. I think this may be because I had a weird umask. I used /bin/find to fix that up.
                                          Then I could require cfpropertylist in an irb session.

                                          I then tried to require it in a sample script I loaded in the sketchup ruby console. But it got a file not found. I found a post about replacing the ruby provided with sketchup with the standard OS X ruby on stack overflow: http://stackoverflow.com/questions/3333163/how-to-update-ruby-in-google-sketchup. That worked even thou I have sketchup 8 (and there was no Headers there originally, but I linked one in anyways).

                                          I also saw posts about modifying LOAD_PATH to include the standard dirs. So I put this at the front of my test script:

                                          
                                          osx_stdlibpath = ["/Library/Ruby/Site/1.8", "/Library/Ruby/Site/1.8/powerpc-darwin11.0", "/Library/Ruby/Site/1.8/universal-darwin11.0", "/Library/Ruby/Site", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8/universal-darwin11.0", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin11.0", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0", "."]
                                          
                                          $LOAD_PATH.concat(osx_stdlibpath)
                                          $LOAD_PATH.uniq!
                                          
                                          

                                          It still did not work.
                                          Finally I figured out that I had to require the stuff for GEM in order for it to find the package.
                                          Guess it makes sense--I think irb was including the GEM loader for me.

                                          So I put this into my script after the code modifying LOAD_PATH:

                                          
                                          require 'rubygems'
                                          
                                          

                                          And finally the require of CFPropertyList worked!
                                          -Derek

                                          1 Reply Last reply Reply Quote 0
                                          • 1
                                          • 2
                                          • 1 / 2
                                          • First post
                                            Last post
                                          Buy SketchPlus
                                          Buy SUbD
                                          Buy WrapR
                                          Buy eBook
                                          Buy Modelur
                                          Buy Vertex Tools
                                          Buy SketchCuisine
                                          Buy FormFonts

                                          Advertisement