我之前在使用本地来源的 gem 时遇到过一些问题,因此设置了一个简单的测试项目。我之前没有安装过 simple-rss
。这是我的 Gemfile:
source 'https://rubygems.org'
gem 'simple-rss', :path => '~/code/simple-rss'
然后我运行bundle install
,它告诉我:
Using simple-rss 1.2.3 from source at `~/code/simple-rss`
Using bundler 1.12.4
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
然后我将 test.rb 放在与 Gemfile 相同的文件夹中。 test.rb 文件现在只有 require
:
require 'simple-rss'
我运行ruby test.rb
,并收到此错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- simple-rss (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from test.rb:1:in `<main>'
所以这是问题的第一个证据。然后我这样做:
sudo gem install simple-rss
这样就安装成功了。我再次执行 ruby test.rb ,没有遇到任何问题。因此,一旦使用 gem install 安装了 gem,就可以从原始源运行 gem,但在使用 Bundler 运行后就不能从本地源运行。
最佳答案
如果您想使用 Gemfile 中规定的 gem,我建议您在命令前加上 bundle exec
前缀,例如。 bundle 执行 ruby test.rb
。否则你的 Ruby 将不知道它们。
关于Ruby 无法识别 Gemfile 中包含的本地来源的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38421247/