0

我正在运行一个依赖于离线 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 吗?谢谢!

4

1 回答 1

0

好的,我发现了这个问题。我正在使用的 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 上进行开发。无论如何,这是一个单独的问题,所以我现在关闭它。感谢评论的人!

于 2014-02-01T20:09:35.960 回答