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