Sha256: 529d96c4c2e78046cb57fdc1a7857e2154c5e7bf8ff79ed2116e3560d62fda32

Contents?: true

Size: 1.56 KB

Versions: 19

Compression:

Stored size: 1.56 KB

Contents

module SchemaDev
  module RubySelector
    def self.command(ruby)
      @@selector ||= case
                     when system('which -s chruby-exec') then Chruby
                     when system('which -s rvm') then Rvm
                     else Rbenv
                     end.new
      @@selector.command ruby
    end

    class Chruby
      def initialize
        @rubies = Pathname.new(ENV['HOME']).join(".rubies").entries().map(&its.basename.to_s)
      end
      def command(ruby)
        ruby = @rubies.select(&it =~ /^(ruby-)?#{ruby}(-p.*)?$/).last || ruby
        "SHELL=`which bash` chruby-exec #{ruby} --"
      end
    end

    class Rvm
      def command(ruby)
        "rvm #{ruby} do"
      end
    end

    class Rbenv
      def initialize
        # because we're running within a ruby program that was launched by
        # rbenv, we already have various environment variables set up.  need
        # strip those out so that the forked shell can run a diifferent ruby
        # version than the one we're in now.
        ENV['PATH'] = ENV['PATH'].split(':').reject{|dir| dir =~ %r{/\.?rbenv/(?!shims)}}.join(':')
        ENV['GEM_PATH'] = ENV['GEM_PATH'].split(':').reject{|dir| dir =~ %r{/\.?rbenv}}.join(':') unless ENV['GEM_PATH'].nil?
        ENV['RBENV_DIR'] = nil
        ENV['RBENV_HOOK_PATH'] = nil
        @versions ||= `rbenv versions --bare`.split
      end

      def command(ruby)
        version = @versions.select{|v| v.start_with? ruby}.last || abort("no ruby version '#{ruby}' installed in rbenv")
        "RBENV_VERSION=#{version}"
      end
    end

  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
schema_dev-1.2.3 lib/schema_dev/ruby_selector.rb
schema_dev-1.2.2 lib/schema_dev/ruby_selector.rb
schema_dev-1.2.1 lib/schema_dev/ruby_selector.rb
schema_dev-1.2.0 lib/schema_dev/ruby_selector.rb
schema_dev-1.1.0 lib/schema_dev/ruby_selector.rb
schema_dev-1.0.3 lib/schema_dev/ruby_selector.rb
schema_dev-1.0.2 lib/schema_dev/ruby_selector.rb
schema_dev-1.0.1 lib/schema_dev/ruby_selector.rb
schema_dev-1.0.0 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.6 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.5 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.4 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.3 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.2 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.1 lib/schema_dev/ruby_selector.rb
schema_dev-0.1.0 lib/schema_dev/ruby_selector.rb
schema_dev-0.0.3 lib/schema_dev/ruby_selector.rb
schema_dev-0.0.2 lib/schema_dev/ruby_selector.rb
schema_dev-0.0.1 lib/schema_dev/ruby_selector.rb