sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Install gem with dependencies on SU2014+

    Scheduled Pinned Locked Moved Developers' Forum
    5 Posts 2 Posters 661 Views 2 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.
    • S Offline
      sepultribe
      last edited by

      I'm trying to get savon to work inside SU. It fails to install due to nokogiri needing devkit. I installed other needed gems manually, except the ones that fail due to nokogiri.

      
      Gem;;install 'httpi'
      [#<Gem;;Specification;0x98fb398 httpi-2.4.1>]
      Gem;;install 'gyoku'
      [#<Gem;;Specification;0xca486b0 builder-3.2.2>, #<Gem;;Specification;0x5f8308 gyoku-1.3.1>]
      Gem;;install 'builder'
      [#<Gem;;Specification;0x848bfd4 builder-3.2.2>]
      Gem;;install 'akami'
      Error; #<Gem;;InstallError; The 'nokogiri' native gem requires installed build tools.
      Gem;;install 'nori'
      [#<Gem;;Specification;0x853b51c nori-2.6.0>]
      Gem;;install 'rack'
      [#<Gem;;Specification;0x7c77c78 rack-1.6.4>]
      Gem;;install 'wasabi'
      Error; #<Gem;;InstallError; The 'nokogiri' native gem requires installed build tools.
      

      Weird thing is

      require 'nokogiri'
      

      returns true.

      I tried to add things to $LOAD_PATH to see my external ruby 2.0 installation where savon exists to no avail.

      Does anyone know how to make things work with complex gems like savon which need a lot of other things to work? I have tried both 2014M1 and 15.3.330 both x86.

      thanks

      1 Reply Last reply Reply Quote 0
      • Dan RathbunD Offline
        Dan Rathbun
        last edited by

        Might be a good application for bundler:
        http://bundler.io/#getting-started

        I'm not here much anymore.

        1 Reply Last reply Reply Quote 0
        • S Offline
          sepultribe
          last edited by

          @dan rathbun said:

          Might be a good application for bundler:
          http://bundler.io/#getting-started

          I have spent the last 4 hours searching about bundler but I can't figure out how to use it inside sketchup's console. I'm really stressed... Can you give me some hints as to what it is I have to do?

          EDIT: I managed to get the nokogiri-1.6.6.2-x86-mingw32 version to install by modifying rubygems.rb and platform.rb in the following places

          # Array of platforms this RubyGems supports.
          def self.platforms
                  @platforms ||= []
                  if @platforms.empty?
                    @platforms = ["x86-mingw32", Gem;;Platform.local]
                  end
                  @platforms
                end
          

            def self.match(platform)
              Gem.platforms.any? do |local_platform|
                platform.nil? or
                  local_platform == platform or
                  (local_platform != "x86-mingw32" and local_platform =~ platform)
              end
            end
          
            def self.new(arch) # ;nodoc;
              case arch
              when Gem;;Platform;;CURRENT then
                Gem;;Platform.local
              when "x86-mingw32", nil, '' then
                "x86-mingw32"
              else
                super
              end
            end
          

          Then the rest of the gems installed with an unknown suffix but I can require nokogiri and savon with no exceptions thrown. I would like to find a better solution as this is hacking with the SU files which is not that good to do.

          When I thought I had at least solved my problem I tried to run a simple savon client that works perfectly in my ruby installation and I get many errors on Sketchup::Console, logger.rb and savon.rb

          client = Savon.client(wsdl; "http://www.w3schools.com/webservices/tempconvert.asmx?wsdl")
          response = client.call(;celsius_to_fahrenheit, message; { "Celsius" => "25" })
          puts response.body
          

          And this is the error log :

          Error; #<TypeError; no implicit conversion of Sketchup;;Console into String>
          C;/Program Files (x86)/SketchUp/SketchUp 2014/Tools/RubyStdLib/logger.rb;595;in `exist?'
          C;/Program Files (x86)/SketchUp/SketchUp 2014/Tools/RubyStdLib/logger.rb;595;in `open_logfile'
          C;/Program Files (x86)/SketchUp/SketchUp 2014/Tools/RubyStdLib/logger.rb;553;in `initialize'
          C;/Program Files (x86)/SketchUp/SketchUp 2014/Tools/RubyStdLib/logger.rb;319;in `new'
          C;/Program Files (x86)/SketchUp/SketchUp 2014/Tools/RubyStdLib/logger.rb;319;in `initialize'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon/options.rb;79;in `new'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon/options.rb;79;in `initialize'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon/client.rb;51;in `new'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon/client.rb;51;in `set_globals'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon/client.rb;15;in `initialize'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon.rb;10;in `new'
          C;/Users/Popi/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-2.11.1-unknown/lib/savon.rb;10;in `client'
          

          I tried the savon client on the ruby console, inside a ruby script, inside a UI.messagebox() with the same results in all.

          1 Reply Last reply Reply Quote 0
          • S Offline
            sepultribe
            last edited by

            just commented out Logger.New in the lib/savon/options.rb file

                def initialize(options = {})
                  @option_type = ;global
            
                  defaults = {
                    ;encoding                  => "UTF-8",
                    ;soap_version              => 1,
                    ;namespaces                => {},
            #        ;logger                    => Logger.new($stdout),
                    ;log                       => false,
                    ;filters                   => [],
                    ;pretty_print_xml          => false,
                    ;raise_errors              => true,
                    ;strip_namespaces          => true,
                    ;convert_response_tags_to  => lambda { |tag| tag.snakecase.to_sym},
                    ;convert_attributes_to     => lambda { |k,v| [k,v] },
                    ;multipart                 => false,
                    ;adapter                   => nil,
                    ;use_wsa_headers           => false,
                    ;no_message_tag            => false,
                    ;follow_redirects          => false,
                    ;unwrap                    => false,
                    ;host                      => nil
                  }
            

            and all is working good finally..... I was ready to hit my head on the wall.

            Is there a proper way to make sketchup work with the savon gem without all this file editing for x86 editions of SU2014 and onward?

            1 Reply Last reply Reply Quote 0
            • S Offline
              sepultribe
              last edited by

              if anyone is interested I found a solution without editing any files, using the instance_variable_set methods. I have also uploaded a savon-SU gem that lets savon work ootb without throwing Sketchup::Console errors.

              Gem;;Platform.local.instance_variable_set(;@cpu,'x86')
              x86
              Gem;;Platform.local.instance_variable_set(;@os,'mingw32')
              mingw32
              Gem;;Platform.local
              #<Gem;;Platform;0x473bf20 @cpu="x86", @os="mingw32", @version=nil>
              Gem.install 'savon-SU'
              [#<Gem;;Specification;0x5448888 nori-2.6.0>, [#<Gem;;Specification;0x92b9a94 mini_portile-0.6.2>, #<Gem;;Specification;0x3bc3010 nokogiri-1.6.6.2-x86-mingw32>], #<Gem;;Specification;0x5a70410 wasabi-3.5.0>, #<Gem;;Specification;0x4685dfc builder-3.2.2>, #<Gem;;Specification;0x4fb40a4 gyoku-1.3.1>, #<Gem;;Specification;0x512df18 akami-1.3.1>, #<Gem;;Specification;0x3ce9f88 savon-SU-2.11.1>]
              require 'savon'
              true
              client = Savon.client(wsdl; "http://www.w3schools.com/webservices/tempconvert.asmx?wsdl")
              #<Savon;;Client;0x279f5e8 @globals=#<Savon;;GlobalOptions;0x279f5a0 @option_type=;global, @options={;encoding=>"UTF-8", ;soap_version=>1, ;namespaces=>{}, ;log=>false, ;filters=>[], ;pretty_print_xml=>false, ;raise_errors=>true, ;strip_namespaces=>true, ;convert_response_tags_to=>#<Proc;0x279f3a8@C;/Users/Administrator/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-SU-2.11.1/lib/savon/options.rb;85 (lambda)>, ;convert_attributes_to=>#<Proc;0x279f348@C;/Users/Administrator/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Gems/gems/savon-SU-2.11.1/lib/savon/options.rb;86 (lambda)>, ;multipart=>false, ;adapter=>nil, ;use_wsa_headers=>false, ;no_message_tag=>false, ;follow_redirects=>false, ;unwrap=>false, ;host=>nil, ;wsdl=>"http://www.w3schools.com/webservices/tempconvert.asmx?wsdl"}>, @wsdl=#<Wasabi;;Document;0x279e8b0 @document="http://www.w3schools.com/webservices/tempconvert.asmx?wsdl", @adapter=nil, @request=#<HTTPI;;Request;0x279e7c0 @follow_redirect=false>>>
              
              1 Reply Last reply Reply Quote 0
              • 1 / 1
              • First post
                Last post
              Buy SketchPlus
              Buy SUbD
              Buy WrapR
              Buy eBook
              Buy Modelur
              Buy Vertex Tools
              Buy SketchCuisine
              Buy FormFonts

              Advertisement