微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何找出用 Ruby 打包的库的版本,例如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 '(包括“VERSION”之后的空格),然后我得到:

  VERSION         = '2.5.1'

..这也是上面列表中 gems 目录中 gem 的版本。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。