即使指定了postgres,SQLite也会在生产模式中使用

时间:2015-09-09 14:01:11

标签: ruby-on-rails

My Rails应用程序在开发模式下运行良好。然后我通过bundle install --without development test切换到生产模式。当我尝试运行rake(rake routes)时出现此错误: "

  耙子流产了! Gem :: LoadError:指定' sqlite3'对于数据库   适配器,但没有加载gem。将gem 'sqlite3'添加到您的帐户中   的Gemfile

我的Gemfile有:

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

我的config/database.yml看起来像是:

default: &default
  pool: 5
  timeout: 5000

development:
  <<: *default
  adapter: sqlite3
  database: db/development.sqlite3

test:
  <<: *default
  adapter: sqlite3
  database: db/test.sqlite3

production:
  <<: *default
  adapter: postgresql
  database: prod
  username: produser

bundle install --without production test后的我的Gemfile.lock

GEM
  remote: https://rubygems.org/
  specs:
     ...
    pg (0.18.3)
    ...
    rails_12factor (0.0.3)
    ...
    sqlite3 (1.3.10)
    ...

DEPENDENCIES
  ...
  pg (= 0.18.3)
  ...
  rails_12factor (0.0.3)
  ...
  sqlite3 (= 1.3.10)
  ...

BUNDLED WITH
  1.10.6

我已更新到Ruby 2.2.3,Rails 4.2.4,完成gem update systembundle update都无济于事。

我的另一个问题是为什么sqlite3 gem会出现在Gemfile.lock生产模式中?同样,为什么pg gem出现在开发模式中?

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

rake routes使用默认环境 - 即开发。

您需要:

rake routes RAILS_ENV=production

或将RAILS_ENV环境变量设置为&#39; production&#39;