无法安装 gem,因为“nil:NilClass 的未定义方法 `invoke_with_build_args'”

Posted

技术标签:

【中文标题】无法安装 gem,因为“nil:NilClass 的未定义方法 `invoke_with_build_args\'”【英文标题】:Can't install gems because "undefined method `invoke_with_build_args' for nil:NilClass"无法安装 gem,因为“nil:NilClass 的未定义方法 `invoke_with_build_args'” 【发布时间】:2014-06-14 13:09:47 【问题描述】:

我在 Ruby 轨道上,我正在安装 Ruby on Rails。

我正在尝试安装 gems,但它没有发生,我不确定为什么以及如何修复它。

$gem install bundler

ERROR:  Loading command: install (LoadError)
dlopen(/Users/nthulanemakgato/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-    darwin13.0/openssl.bundle, 9): Library not loaded:     /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /Users/nthulanemakgato/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-    darwin13.0/openssl.bundle
  Reason: image not found -     /Users/nthulanemakgato/.rbenv/versions/2.1.1/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle
ERROR:  While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass

这是我尝试过的解决方案之一:

$CONFIGURE_OPTS="--with-openssl-dir=brew --prefix openssl" rbenv install 2.1.1

rbenv: /Users/nthulanemakgato/.rbenv/versions/2.1.1 already exists
continue with installation? (y/N) y
Downloading yaml-0.1.6.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5fe00cda18ca5daeb43762b80c38e06e
Installing yaml-0.1.6...

BUILD FAILED

Inspect or clean up the working tree at     /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716
Results logged to /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-    build.20140429120202.53716.log

Last 10 log lines:
x yaml-0.1.6/win32/vc6/test_reader.dsp
x yaml-0.1.6/win32/vc6/run_loader.dsp
x yaml-0.1.6/win32/vc6/run_parser.dsp
x yaml-0.1.6/win32/vc6/example_reformatter_alt.dsp
x yaml-0.1.6/win32/vc6/example_deconstructor.dsp
x yaml-0.1.6/win32/vc6/libyaml.dsw
x yaml-0.1.6/win32/vc6/yaml.dsp
/var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716/yaml-  0.1.6 /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716 ~
configure: WARNING: unrecognized options: --with-openssl-dir
configure: error: expected an absolute directory name for --prefix: openssl

BUILD FAILED

Inspect or clean up the working tree at     /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716
Results logged to /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-  build.20140429120202.53716.log

Last 10 log lines:
x yaml-0.1.6/win32/vc6/run_loader.dsp
x yaml-0.1.6/win32/vc6/run_parser.dsp
x yaml-0.1.6/win32/vc6/example_reformatter_alt.dsp
x yaml-0.1.6/win32/vc6/example_deconstructor.dsp
x yaml-0.1.6/win32/vc6/libyaml.dsw
x yaml-0.1.6/win32/vc6/yaml.dsp
/var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716/yaml-        0.1.6 /var/folders/tj/_bd6whds6lb7wtn2m8ylwx7h0000gp/T/ruby-build.20140429120202.53716 ~
configure: WARNING: unrecognized options: --with-openssl-dir
configure: error: expected an absolute directory name for --prefix: openssl
make: *** No targets specified and no makefile found.  Stop.

我已经安装了 openssl-1.0.1g

我使用的是 Mac 10.9.2 ruby 2.1.1p76(2014-02-24 修订版 45161)[x86_64-darwin13.0] rbenv 0.4.0-97-gfe0b243

这与我使用 rbenv 的其他问题不同,而其他问题则问我无法使用的 rvm 相关问题。

提前致谢。

【问题讨论】:

Library not loaded: /usr/local/opt/openssl/lib... rbenv wiki 提供安装说明 @user2062950 我刚刚补充说我已经安装了 openssl。但是您分享的链接中的说明适用于 Ruby 1.9.3p-0 或更低版本,而我的是 2.1.1。 @Coolkid 你猜到了吗? 【参考方案1】:

看来您需要先安装 OpenSSL。 所以尝试安装它:

$ brew install openssl

然后你需要用 OpenSSL 重新编译 ruby​​:

$ CONFIGURE_OPTS="--with-openssl-dir=brew --prefix openssl" rbenv install 2.1.1-p76

【讨论】:

我安装了openssl-1.0.1g。当我尝试您的第二行代码时,它显示ruby-build: definition not found: 2.1.1-p76 You can list all available versions with 'rbenv install --list'.,即使该版本已经安装。 运行 'rbenv install --list' 并选择可用版本之一。然后将我的第二行更改为:'$ CONFIGURE_OPTS="--with-openssl-dir=brew --prefix openssl" rbenv install here your version' 我认为 OP 遇到的问题是 CONFIGURE_OPTS 中的错误空间。有关它的文档,请参阅usage。 所以要获得可以传递给./configure 的实际选项,请运行rbenv install --keep <version>,这会将Ruby 源代码保留在~/.rbenv/sources/<version> 中。在那里,运行./configure --help【参考方案2】:

我发现虽然我已经安装了 openSSL,但我需要 brew upgrade ruby 才能识别它。又一个曲折的小通道迷宫,都一样。

【讨论】:

【参考方案3】:

尝试在cmd中使用这段代码

chcp 1252

【讨论】:

【参考方案4】:

当我检查我的时

rbenv local

rbenv global 

我们不同。

所以我设置

rbenv local 2.6.5

它解决了我的问题

【讨论】:

【参考方案5】:

有一天,我也突然看到了一个类似的错误…… 我刚刚删除然后重新安装了 ruby​​,并且错误已修复。

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review

以上是关于无法安装 gem,因为“nil:NilClass 的未定义方法 `invoke_with_build_args'”的主要内容,如果未能解决你的问题,请参考以下文章

已审核:nil:NilClass 的未定义方法“关联”

nil:NilClass 的未定义方法“original_filename”

NoMethodError: nil:NilClass / 'additional_paths' [capistrano+webpacker] 的未定义方法“+”

Rspec 测试:NoMethodError - nil.Nilclass 的未定义方法“id”

Nokogiri:遇到错误“nil:NilClass 的未定义方法‘文本’”

搜索检查失败:nil:NilClass 的未定义方法“map”