Method: Thor::Util.ruby_command

Defined in:
lib/vendor/thor/lib/thor/util.rb

.ruby_commandObject

Return the path to the ruby interpreter taking into account multiple installations and windows extensions.



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/vendor/thor/lib/thor/util.rb', line 218

def self.ruby_command
  @ruby_command ||= begin
    ruby_name = RbConfig::CONFIG['ruby_install_name']
    ruby = File.join(RbConfig::CONFIG['bindir'], ruby_name)
    ruby << RbConfig::CONFIG['EXEEXT']

    # avoid using different name than ruby (on platforms supporting links)
    if ruby_name != 'ruby' && File.respond_to?(:readlink)
      begin
        alternate_ruby = File.join(RbConfig::CONFIG['bindir'], 'ruby')
        alternate_ruby << RbConfig::CONFIG['EXEEXT']

        # ruby is a symlink
        if File.symlink? alternate_ruby
          linked_ruby = File.readlink alternate_ruby

          # symlink points to 'ruby_install_name'
          ruby = alternate_ruby if linked_ruby == ruby_name || linked_ruby == ruby
        end
      rescue NotImplementedError
        # just ignore on windows
      end
    end

    # escape string in case path to ruby executable contain spaces.
    ruby.sub!(/.*\s.*/m, '"\&"')
    ruby
  end
end