因此,我读了类似问题的线程,但仍然困惑。这是我的宝石文件。试图将Rails 4.2.1应用程序推向Heroku sqlite错误
我将gemfile中的所有sqlite3宝石更改为gem'pg','0.7.0'我将database.yml文件中的所有sqlite3更改为postgresql。我做了一个捆绑安装,然后heroku创建,然后git推heroku主,这有多个问题,试图安装sqlite3。
因此,我读了类似问题的线程,但仍然困惑。这是我的宝石文件。试图将Rails 4.2.1应用程序推向Heroku sqlite错误
我将gemfile中的所有sqlite3宝石更改为gem'pg','0.7.0'我将database.yml文件中的所有sqlite3更改为postgresql。我做了一个捆绑安装,然后heroku创建,然后git推heroku主,这有多个问题,试图安装sqlite3。
在开发和测试中运行SQLite以及像生产中的PostgreSQL这样的其他数据库是非常常见的。 Rails使得这很容易。
在您的Gemfile中,您可以使用组来指定应在每个环境中安装哪些宝石。所以,在这种情况下,您的Gemfile将包含这样的内容:
group :development, :test do
gem 'sqlite3', '1.3.9'
end
group :production do
gem 'pg', '0.17.1'
end
第一次加生产的宝石,你应该运行:
bundle install --without production
更新您的gemfile.lock
。
同样,在database.yml
中,您应该为开发和测试定义sqlite并为生产定义postgresql。这里有一个例子:
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
database: signup
adapter: postgresql
pool: 5
timeout: 5000
username: xxxx
password: yyyy
最后,请确保您提交到生产的Gemfile变化尝试部署到的Heroku之前。
谢谢史蒂夫,问题是我在部署到Heroku之前没有做过提交。我独自离开了gemfile和database.yml。再次感谢。 –
很高兴帮助约翰。 –
你能包括你的宝石文件吗?一般来说,您不想为不同的环境替换宝石,只需将它们捆绑在正确的组下。所以,举个例子,你可以有一个开发组与sqlite和一个生产组,所有的pg都在同一个gemfile中。 –
源 'https://rubygems.org' 宝石 '轨道', '4.2.2' 宝石 'SASS护栏', '5.0.2' 宝石 'uglifier', '2.5.3' 宝石'coffee-rails','4.1.0' gem'jquery-rails','4.0.3' gem'turbolinks','2.3.0' gem'jbuilder','2.2.3' gem'sdoc ','0.4.0',组::: doc group:development,:test do gem'pg','0.17.1' gem'byebug','3.4.0' gem'web-console' ,'2.0.0.beta3' 宝石'弹簧','1.1.3' 结束 组:生产do gem'pg','0.17.1' gem'rails_12factor','0.0.2' 结束 –
对不起,请使用适当的格式更新您的操作系统。是的,在开发/测试和生产中使用sqlite是很常见的,但你不应该从你的gemfile中删除sqlite来做到这一点 - 它应该在像group:development,test test这样的组中使用。所以它被用于开发和测试。 –