Uploaded image for project: 'Puppet Server'
  1. Puppet Server
  2. SERVER-543

💎 Follow MRI convention of version specific Gem library paths

    XMLWordPrintable

Details

    • Improvement
    • Status: Closed
    • Normal
    • Resolution: Won't Do
    • None
    • None
    • None
    • None

    Description

      As mentioned in SERVER-530, the gem library path for puppetserver is /opt/puppetlabs/server/data/puppetserver/jruby-gems. This path does does not vary along the axis of Ruby version.

      In the future we may want to run multiple scripting containers with different versions of Ruby in each container. In this scenario, a global configuration setting with a single gem library path will likely be problematic because the motivation for running multiple versions of JRuby will likely be for compatibility and support. A single shared library path will likely be incompatible with one of the JRuby versions.

      If we follow the MRI convention for Gem paths we could avoid this compatibility problem because the path encodes version information. For example, the Ruby $LOAD_PATH contains version information:

      ruby -e 'puts $LOAD_PATH'
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby/2.1.0
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby/2.1.0/x86_64-darwin13.0
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/site_ruby
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby/2.1.0
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin13.0
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/vendor_ruby
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0
      /opt/crossfader/versions/ruby/2.1.4/lib/ruby/2.1.0/x86_64-darwin13.0
      

      and the Gem path contains version information:

      RubyGems Environment:
        - RUBYGEMS VERSION: 2.2.2
        - RUBY VERSION: 2.1.4 (2014-10-27 patchlevel 265) [x86_64-darwin13.0]
        - INSTALLATION DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0
        - RUBY EXECUTABLE: /opt/crossfader/versions/ruby/2.1.4/bin/ruby
        - EXECUTABLE DIRECTORY: /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0/bin
        - SPEC CACHE DIRECTORY: /Users/jeff/.gem/specs
        - RUBYGEMS PLATFORMS:
          - ruby
          - x86_64-darwin-13
        - GEM PATHS:
           - /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0
           - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0
           - /opt/crossfader/versions/ruby/2.1.4/lib/ruby/gems/2.1.0
           - /Users/jeff/.gem/ruby/2.1.0
        - GEM CONFIGURATION:
           - :update_sources => true
           - :verbose => true
           - :backtrace => false
           - :bulk_threshold => 1000
        - REMOTE SOURCES:
           - https://rubygems.org/
        - SHELL PATH:
           - /usr/local/heroku/bin
           - /opt/crossfader/bin
           - /opt/crossfader/versions/ruby/2.1.4/gemsets/crossfader/ruby/2.1.0/bin
           - /opt/crossfader/versions/ruby/2.1.4/gemsets/global/ruby/2.1.0/bin
           - /opt/crossfader/versions/ruby/2.1.4/bin
           - /opt/crossfader/versions/jdk/1.7.0_75/bin
           - /usr/local/heroku/bin
           - /usr/local/bin
           - /usr/bin
           - /bin
           - /usr/sbin
           - /sbin
           - /opt/X11/bin
           - /usr/local/MacGPG2/bin
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jeff Jeff McCune
              Erik Dasher Erik Dasher
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Zendesk Support