Bundler和Heroku与离线宝石

时间:2014-01-31 23:23:37

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

我正在运行依赖于离线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    
    
  3. (这些步骤取自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吗?谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题。我正在使用的Chilkat gem具有特定于操作系统的版本,并且我在供应商/宝石中拆分的版本是OSx将无法在Heroku / AWS上运行。因此,即使路径在Heroku中正常工作,宝石本身也不会。

我现在遇到的问题是因为Chilkat gem是特定于操作系统的,Bundler会生成一个Gemfile.lock文件,该文件特定于调用bundle install的OS(在我的例子中是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进行开发。无论如何这是一个单独的问题,所以我现在关闭它。感谢评论的人们!