Ruby 无法识别 Gemfile 中包含的来自本地源的宝石
Ruby not recognising gems from local source, included in Gemfile
我以前在使用来自本地源的 gems 时遇到过一些问题,因此设置一个简单的测试项目。我以前没有安装过 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.
然后我在与 Gemfile 相同的文件夹中创建 test.rb。 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 一旦它与 gem 安装一起安装,而不是来自 运行 Bundler.
之后的本地源
如果您想使用 Gemfile 中指定的 gem,我建议您在命令前加上 bundle exec
前缀,例如。 bundle exec ruby test.rb
。否则你的 Ruby 不会知道它们。
我以前在使用来自本地源的 gems 时遇到过一些问题,因此设置一个简单的测试项目。我以前没有安装过 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.
然后我在与 Gemfile 相同的文件夹中创建 test.rb。 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 一旦它与 gem 安装一起安装,而不是来自 运行 Bundler.
如果您想使用 Gemfile 中指定的 gem,我建议您在命令前加上 bundle exec
前缀,例如。 bundle exec ruby test.rb
。否则你的 Ruby 不会知道它们。