1

我已经将 github 上的 redis 存储库分叉到https://github.com/lmirosevic/redis-rb

我将它添加到我的Gemfile

gem 'redis', :github => 'lmirosevic/redis-rb'

我需要在我的 Sinatra 应用程序中使用 gem:

require 'redis'

但是它失败并出现以下错误:

/app/vendor/ruby-2.0.0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- redis (LoadError)

关于什么可能是错的任何建议?似乎它应该工作!

编辑

我应该注意到bundler相位很好。问题似乎出在 require 步骤中。Bundler 给了我这个输出:

Using redis (3.0.4) from git://github.com/lmirosevic/redis-rb (at master)

我还应该说我的目录结构是这样的。不确定这是否有所作为。

/
  .env
  Gemfile
  Gemfile.lock
  Procfile
  /lib
    my_sinatra_app.rb
  /config
    ...
4

1 回答 1

1

你必须有

require 'bundler/setup'

在您的应用程序中,否则您并没有真正使用捆绑程序:这是确保加载的 gem 版本是您的 gemfile 中的版本,并为未全局安装的任何内容设置加载路径。

调用Bunder.setup允许您控制使用哪些组,但如果只使用默认组就可以了,那么您不需要这样做。

如果您没有设置 bundler,那么您的 gemfile 将用于安装 gems 所需的版本,但之后不再使用 bundler - 您的应用程序将使用安装的任何 gem,无论版本是否匹配,您都不会能够使用未安装在默认 gem 加载路径中的 gem。

于 2013-07-17T12:06:52.023 回答