【问题标题】:How does Homebrew check for installed gems?Homebrew 如何检查已安装的 gem?
【发布时间】:2014-01-02 03:35:01
【问题描述】:

我有一个依赖于gem 的公式。它的顶部有depends_on 'some-gem' => :ruby。我确定它已安装,因为我可以按预期使用它,并且在运行gem list 时它就在那里。但是,在尝试安装公式时,它会显示

my-formula: Unsatisfied dependency: some-gem
Homebrew does not provide Ruby dependencies; install with:
    gem install some-gem
Error: An unsatisfied requirement failed this build.

那么,Homebrew 如何检查已安装的 gem?

【问题讨论】:

  • 你在使用 bundler gem 来更新依赖吗?
  • 您是否使用 rvm 来管理您的红宝石和宝石/宝石集?或者你使用的是 osx 自带的系统 ruby​​?
  • @majioa 我看不出bundler会与这个案子有什么关系,这根本不重要。你能详细说明一下吗?
  • @SamiLaine 两者都没有,我使用的是用 homebrew 编译的 ruby​​。正如我解释的那样,它不是这样工作的,但如果我使用经理(在这种情况下为chruby),它就可以工作。
  • 好的,您的 Gemfile.gemspec 文件是否已定义并正确写入您的文件夹?将bunlder安装为:gem install bundler。然后做bundle install。请在此处查看有关 bundler 的一些信息:bundler.io

标签: ruby macos gem homebrew


【解决方案1】:

为检测已安装的 gem 和类似的东西而运行的实际检查位于 /usr/local/Library/Homebrew/requirements/language_module_dependency.rb 中,对于 Ruby 而言:

/usr/bin/env ruby -rubygems -e require\ 'GEMNAME'

请注意,这会从路径中调用ruby,因此它可能会受到那里的混淆的影响。确保你的路径中首先有正确的ruby,有与ruby 一起使用的正确的gem 程序,并可能在你的公式中添加一些调试以查看它在什么环境下运行。

【讨论】:

  • 如果你在 shell 中运行/usr/bin/env ruby -rubygems -e require\ 'GEMNAME',它会失败。正确的命令是/usr/bin/env ruby -rubygems -e "require 'GEMNAME'"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多