Heroku:推送拒绝 - 无法通过bundler安装gem

时间:2012-06-03 00:06:01

标签: ruby-on-rails heroku

我试图像以前一样将应用程序推送到Heroku。我正在使用Ruby 1.9.2和Rails 3.2.1。但是,现在我收到此错误消息。我按照推荐的方式做了

make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.

请注意,即使我在我的gemfile

中也这样做了
group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

但在终端中执行gem install sqlite3 -v '1.3.5',但推送仍然被拒绝。我不确定如何检查它在tmp目录中引用的Gem文件,但即使我这样做,我也不理解它们

有什么建议吗?

Gem files will remain installed in /tmp/build_1timyd7o5k59l/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection.
       Results logged to /tmp/build_1timyd7o5k59l/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
       An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue.
       Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
 !
 !     Failed to install gems via Bundler.
 !
 !     Heroku push rejected, failed to compile Ruby/rails app

4 个答案:

答案 0 :(得分:9)

我总是只注释掉SQLite3的gem,它对我很有用,所以当我推送到heroku时,我的gemfile看起来像这样:

# Development Database
#gem 'sqlite3'
# Production Database
gem 'pg'

编辑:

上述解决方案有效,如果您不想因任何原因更新您的宝石,这很容易。解决此问题的更好方法是执行以下操作:

group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

然后删除您的gemfile.lock文件。 您需要生成一个反映您的更改的新gemfile.lock文件。在终端运行中:

bundle update

最后,通过在终端中执行以下操作来更新存储库并推送到heroku:

git add .
git commit -m "commit message"
git push heroku 

答案 1 :(得分:2)

如果你想在本地使用sqlite3,那么你的初始Gemfile代码是正确的。就像你展示的那样,你把它放在gem文件中:

group :development, :test do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

然后你必须删除你的本地Gemfile.lock,然后运行:

bundle update

重新构建.lock文件。然后添加并重新提交Gemfile:

git add Gemfile
git commit -m "Gemfile commit message"

然后将新的Gemfile推送到repo:

git push master

当然会相应地更改GIT详细信息,但您明白了。这是关于添加/提交/推送Gemfile的全部内容。

答案 2 :(得分:1)

据我所知,Heroku不支持sqlite3,而是使用PostgreSQL数据库。您需要修改您的Gemfile和您的database.yml。因此,对于您的生产组,在您的Gemfile中,您将需要:

https://devcenter.heroku.com/articles/rails3

编辑:

这里似乎有一个更详细的答案,所以这可能是重复的:Pushing Rails with SQLite3 to Heroku fails

答案 3 :(得分:1)

你必须将更新Gemfile.lock添加到git并尝试git push heroku master ... 它对我有用,并且肯定也适合你

并且不要忘记添加 config.action_controller.perform_caching = true