Рекомендуемые решения
Используйте плохо документированный модуль RbConfig, если доступен:
RbConfig.ruby
#=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"
В качестве альтернативы, вы можете использовать более простой для поиска Gem модуль из стандартной библиотеки сделать то же самое:
Gem.ruby
#=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"
Другие подходы
Модули RbConfig и Gem - ваш лучший выбор, но могут быть моменты, когда вам нужно получить версию или путь информации другим способом. Вот несколько различных подходов.
Получить версию
Вы можете вернуть версию выполнения Ruby в виде строки с помощью:
RUBY_VERSION
#=> "2.7.0"
Получить путь
Ruby обычно устанавливается на bin/ruby
в RUBY_ ROOT. Вы можете вернуть ожидаемый путь к исполняемому двоичному файлу Ruby (и убедиться, что он действительно существует, если необходимо) следующим образом:
ENV["RUBY_ROOT"] + "/bin/ruby"
#=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"
File.exist? ENV["RUBY_ROOT"] + "/bin/ruby"
#=> true
В качестве альтернативы, вы можете использовать Kernel # ` для найдите первый Ruby в вашем PATH следующим образом:
`which ruby`.chomp
=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"
Однако, безусловно, существуют крайние случаи, когда любой подход может вводить в заблуждение. Например, Ruby может быть построен нестандартным способом, или вы могли вызвать Ruby с полным путем, а не вызывать первый двоичный файл в PATH . Это делает «накатывание» ваших собственных поисков менее надежным, но если в вашей среде по какой-то причине отсутствуют модули RbConfig или Gem, это может быть разумной альтернативой для вас.