6

我尝试以与以往相同的方式将应用程序推送到 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

4 回答 4

9

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

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

编辑:

上述解决方案有效,如果您出于某种原因不想更新 gem,这很容易。解决此问题的更好的长期解决方案是执行以下操作:

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 
于 2012-06-03T03:16:12.227 回答
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 的。

于 2013-01-22T03:36:14.427 回答
1

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

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

编辑:

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

于 2012-06-03T00:26:32.363 回答
1

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

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

于 2014-02-06T15:33:59.420 回答