簡體   English   中英

我怎么知道在 ruby​​ 腳本中使用了哪個 Ruby 可執行文件?

[英]how can I know which Ruby executable was used in ruby script?

系統上有兩個 Ruby 環境,普通 ruby​​ 和 Chef 嵌入式 ruby​​。 我想知道,在 ruby​​ 腳本中,哪個 ruby​​ 可執行文件用於調用腳本本身。 怎么能得到呢?

推薦解決方案

如果可用,請使用記錄不佳的 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 通常安裝在RUBY_ROOT中的bin/ruby中。 您可以返回正在運行的 Ruby 二進制文件的預期路徑(並驗證它是否確實存在,如有必要),如下所示:

ENV["RUBY_ROOT"] + "/bin/ruby"
#=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"

File.exist? ENV["RUBY_ROOT"] + "/bin/ruby"
#=> true

或者,您可以使用Kernel#`PATH 中查找第一個 Ruby,如下所示:

`which ruby`.chomp
=> "/Users/foo/.rubies/ruby-2.7.0/bin/ruby"

不過,肯定存在兩種方法都可能產生誤導的邊緣情況。 例如,Ruby 可能是以非標准方式構建的,或者您可能使用完全限定的路徑調用 Ruby,而不是調用PATH 中的第一個二進制文件。 這使得“滾動您自己的”查找不太可靠,但是如果您的環境由於某種原因缺少 RbConfig 或 Gem 模塊,這對您來說可能是一個合理的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM