Ruby on rails Bundler和Heroku与离线gems

Ruby on rails Bundler和Heroku与离线gems,ruby-on-rails,heroku,gem,bundler,chilkat,Ruby On Rails,Heroku,Gem,Bundler,Chilkat,我正在运行一个Rails 3.2应用程序,它依赖于离线gem,chilkat 我通过执行以下操作在我的开发环境中实现了这一点: 将gem解包到我的供应商/gems文件夹中 将此行添加到我的文件中 gem 'chilkat', '9.4.1', path: 'vendor/gems/chilkat-9.4.1-universal-darwin-12', require: false 这些步骤是从 但当我将代码推送到Heroku时,应用程序崩溃,出现错误: /app/vendor/bund

我正在运行一个Rails 3.2应用程序,它依赖于离线gem,chilkat

我通过执行以下操作在我的开发环境中实现了这一点:

将gem解包到我的供应商/gems文件夹中 将此行添加到我的文件中

gem 'chilkat', '9.4.1', path: 'vendor/gems/chilkat-9.4.1-universal-darwin-12', require: false    
这些步骤是从

但当我将代码推送到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吗?谢谢

好的,我解决了问题。我使用的Chilkat gem有特定于操作系统的版本,而我在vendor/gems中分解的版本是针对OSx的,在Heroku/AWS上不起作用。因此,即使该路径在Heroku中正确运行,宝石本身也不会

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


这似乎是Bundler的一个已知问题。我可以避免提交Gemfile.lock,但我们依赖于Gemfile.lock提供的版本依赖关系管理。我不想让我团队中的所有开发人员都转而在Linux/Unix上开发。无论如何,这是一个单独的问题,所以我现在结束这个。感谢评论的人

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