gpt4 book ai didi

ruby - 我如何确定 ruby​​ gem 是否实际上是原生 C 扩展?

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:23 28 4
gpt4 key购买 nike

如何确定 ruby​​ gem 是否实际上是原生 C 扩展?

当运行 gem install some_gem 时,我可以看到它试图构建 native 扩展,但是有没有办法在安装之前确定哪些 gem 是 native C 扩展?

最佳答案

您可以检查 gem 规范以查看是否 extensions被定义为。您必须下载 gem 或检查其来源才能执行此操作,但使用一些 unix-fu 以编程方式执行此操作并不难:

curl -L <gem-url> | tar xOf - metadata.gz | gunzip | ruby -r yaml -e 'p YAML.load($stdin.read).extensions.any?'

让我们比较一下 bson & bson_ext (因为它们是我能想到的同一 gem 的第一个非 C 扩展和 C 扩展版本):

% curl -L https://rubygems.org/downloads/bson-1.8.0.gem | tar xOf - metadata.gz | gunzip | ruby -r yaml -e 'p YAML.load($stdin.read).extensions.any?'
false

% curl -L https://rubygems.org/downloads/bson_ext-1.8.0.gem | tar xOf - metadata.gz | gunzip | ruby -r yaml -e 'p YAML.load($stdin.read).extensions.any?'
true

您可以通过使用 RubyGems API 自动了解 gem 的当前版本。 :

curl https://rubygems.org/api/v1/gems/bson.yaml | ruby -r yaml -e 'p YAML.load($stdin.read)["version"]'

关于ruby - 我如何确定 ruby​​ gem 是否实际上是原生 C 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13793254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com