Method: Bundler::Thor::Util.ruby_command

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

.ruby_commandObject

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

[View source]

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
247
248
249
# File 'lib/bundler/vendor/thor/lib/thor/util.rb', line 221

def 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 # rubocop:disable Lint/HandleExceptions
        # just ignore on windows
      end
    end

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