【问题标题】:How to use gem from GitHub on Heroku?如何在 Heroku 上使用来自 GitHub 的 gem?
【发布时间】:2013-07-17 07:57:14
【问题描述】:

我已经将 github 上的 redis 仓库 fork 到 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
    ...

【问题讨论】:

  • 你的应用是否调用了 Bundler.setup?
  • @FrederickCheung no...
  • 你的启动代码中有require 'bundler/setup'吗?
  • @matt 我没有。我只有上面放的东西。我应该吗?
  • @lms 可以,或者调用Bundler.setup,这样加载路径就设置好了。见bundler.io/v1.3/bundler_setup.html

标签: ruby git heroku gem bundler


【解决方案1】:

你必须有

require 'bundler/setup'

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

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

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

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 2012-05-14
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多