【问题标题】:Bundler and Heroku with offline gemsBundler 和 Heroku 与离线 gem
【发布时间】:2014-02-24 20:19:24
【问题描述】:

我正在运行一个依赖于离线 gem chilkat 的 Rails 3.2 应用程序。 (http://www.chilkatsoft.com/ruby.asp)。

通过执行以下操作,我已将其用于我的开发环境:

  1. 将 gem 解压到我的 vendor/gems 文件夹中
  2. 将此行添加到我的 Gemfile 中

    gem 'chilkat', '9.4.1', path: 'vendor/gems/chilkat-9.4.1-universal-darwin-12', require: false    
    

(这些步骤取自How to use Bundler with offline .gem file?

但是当我将代码推送到 Heroku 时,应用程序崩溃并出现错误:

/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:317:in `rescue in depend_on': No such file to load -- chilkat (LoadError)

你知道我需要做什么才能在 Heroku 上正确安装 gem 吗?谢谢!

【问题讨论】:

  • 我认为你也可以在 heroku 中做同样的事情,在你的终端中运行命令“heroku run bash”并按照你在开发中所做的相同步骤进行操作
  • 你必须指定完整路径,并在条件下关闭Gemfile中heroku下的gem。显示完整的跟踪

标签: ruby-on-rails heroku gem bundler chilkat


【解决方案1】:

好的,我发现了这个问题。我正在使用的 Chilkat gem 具有特定于操作系统的版本,而我在 vendor/gems 中未捆绑的版本是用于 OSx 的,它不适用于 Heroku/AWS。因此,即使路径在 Heroku 中可以正常工作,gem 本身也不会。

我现在面临的问题是因为 Chilkat gem 是特定于操作系统的,Bundler 将生成一个 Gemfile.lock 文件,该文件特定于调用 bundle install 的操作系统(在我的例子中是 OSx)。特定于 OSx 的 Gemfile.lock 与 AWS 的机器不兼容,因此 Heroku 抱怨我无法推送代码,因为 Gemfile.lock 与预期不一致。

这似乎是 Bundler (How to add Mac-specific gems to bundle on Mac but not on Linux?) 的一个已知问题。我可以避免提交 Gemfile.lock,但我们依赖 Gemfile.lock 提供的版本依赖管理。而且我不想让我团队中的所有开发人员都转向在 Linux/Unix 上进行开发。无论如何,这是一个单独的问题,所以我现在关闭它。感谢评论的人!

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2014-06-28
    • 2015-10-29
    • 2019-01-07
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多