簡體   English   中英

如何找出用 Ruby 打包的庫的版本,例如 json?

[英]How can I find out the version of a library that is packaged with Ruby, e.g. json?

一些 Ruby 功能打包在 Ruby 發行版中(不需要作為 gem 顯式安裝或通過捆綁器安裝)。 JSON 就是一個例子( require 'json' )。 它在 Ruby 代碼中可能是必需的,但不需要 gem 安裝。

然而,JSON 是 Github 上的瑰寶,網址為https://github.com/flori/json

那么,當我的代碼中需要 'json' 時,我怎么知道我得到的是哪個版本的 gem?

或者,許多 ruby​​ gem 在常量中指定它們的版本。

您可以利用它來確定您在代碼或控制台中使用的版本,例如

require 'json'
JSON.constants.grep(/VERSION/)
#=>[:VERSION, :VERSION_ARRAY, :VERSION_MAJOR, :VERSION_MINOR, :VERSION_BUILD]
JSON::VERSION
#=> 2.5.1
require 'bundler'
Bundler.constants.grep(/VERSION/)
#=> [:VERSION]
Bundler::VERSION
#=> 2.2.3

您可以找到 Ruby 主目錄,並在其下方搜索具有適當名稱的目錄,然后檢查其version.rb文件。 例如,使用 rvm 管理的 rubies,我可以這樣做(在 Posix-complaint 系統上,例如 Linux 或 Mac OS):

$ cd $(which ruby)/../..; pwd
/Users/keith.bennett/.rvm/rubies/ruby-3.0.1

$find . -type d -name '*json*'
./lib/ruby/3.0.0/psych/json
./lib/ruby/3.0.0/json
./lib/ruby/3.0.0/rdoc/generator/template/json_index
./lib/ruby/3.0.0/x86_64-darwin19/json
./lib/ruby/gems/3.0.0/gems/json-2.5.1
./lib/ruby/gems/3.0.0/gems/rbs-1.0.4/stdlib/json

我可以cat ./lib/ruby/3.0.0/json/version.rb | grep 'VERSION ' cat ./lib/ruby/3.0.0/json/version.rb | grep 'VERSION ' (包括“VERSION”之后的空格),我得到:

  VERSION         = '2.5.1'

..這也是上面列表中包含的gems目錄中的 gem 版本。

所以我可以看到 2.5.1 是我的 JSON 版本。

暫無
暫無

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

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