检测到不支持在Heroku上使用的sqlite3 gem。

13

我正在试图将我的Rails应用程序推送到Heroku,但我一直收到以下错误:

       An error occurred while installing sqlite3 (1.3.8), and Bundler cannot continue.
   Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundling.
!
!     Failed to install gems via Bundler.
!     
!     Detected sqlite3 gem which is not supported on Heroku.
!     https://devcenter.heroku.com/articles/sqlite3
!

!     Push rejected, failed to compile Ruby app

这是我的Gemfile文件的样子:

group :devlopment, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

有什么解决这个问题的想法吗?非常感谢任何帮助!


2
强烈建议您在开发过程中使用与生产环境相同的数据库。请参阅此文章(请注意底部还有一条关于sqlite错误的注释,即使它不在gemfile中):https://devcenter.heroku.com/articles/sqlite3 - Helios de Guerra
尝试向您的Rails项目请求“生产”模式下的依赖项列表。查看是否有其他Gem在间接使用SQLite。 - Craig Ringer
笔误,应为development而非devlopment - Eyeslandic
5个回答

34

我已经修改了gem文件,仅在开发和测试时使用sqlite。

但是,我的错误在于:我忘记在git上提交更改了。


我认为在调整Gemfile之后,您还需要执行bundle install或bundle update。有时候,还需要执行bundle install --without production。 - barlop

28

您打错了一个字:

group :development, :test do # <<<< :development, not devlopment
  gem 'sqlite3'
end

由于Heroku忽略特定于开发环境的gem,因此在运行bundle时它会包含sqlite3 gem。


它确实回答了这个问题。Heroku捆绑了--without development。它不会在没有开发的情况下捆绑。修复这个打字错误就可以解决问题。 - Will
2
@tyler 确实,这就是答案,因为Heroku忽略了开发特定的gems。我刚刚更新了答案以使其更加清晰。 - S. A.

-1

-1

对我来说,我通过在gemfile中将gem 'sqlite3'替换为gem "pg"来解决了这个问题

然后当然要执行heroku restartheroku rake db:migrate


-4

试试这个

heroku rake db:reset
heroku rake db:migrate

请不要这样做。 - Eyeslandic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接