如何找到用Ruby打包的库的版本,例如json



一些Ruby功能与Ruby发行版打包在一起(不需要显式或通过bundler安装为gem(。JSON就是一个例子(require 'json'(。Ruby代码中可能需要它,但不需要安装gem。

然而JSON是Github上的一颗宝石https://github.com/flori/json.

那么,当我的代码中需要"json"时,我如何知道我得到的是哪个版本的gem呢?

或者,许多ruby宝石在常量中指定它们的版本。

您可以利用它来确定您在代码或控制台中使用的版本,例如

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投诉系统上,如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 '(包括"VERSION"后面的空格(,我得到:

VERSION         = '2.5.1'

这也是上面列表中包括的CCD_ 4目录中的gem的版本。

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

相关内容

最新更新