无法安装 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 的未定义方法“original_filename”
NoMethodError: nil:NilClass / 'additional_paths' [capistrano+webpacker] 的未定义方法“+”
Rspec 测试:NoMethodError - nil.Nilclass 的未定义方法“id”