2010-11-20 73 views
1

database.yml看起来是这样的:为什么Rails在我的生产服务器上查找SQLite3?

# SQLite version 3.x 
# gem install sqlite3-ruby (not necessary on OS X Leopard) 
development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: project_production 
    pool: 5 
    username: root 
    password: mypwd 
    host: /var/mysql/mysql.sock 

加载项目生产服务器上,我执行:

server:projectfolder admin$ rake db:schema:load RAILS_ENV=production 

并取回:

Could not find sqlite3-ruby-1.3.2 in any of the sources 
Try running `bundle install`. 

我已经做了捆绑安装,但不知道为什么它甚至会关心生产中的sqlite3?!?

仅供参考 - 我的Gemfile有:

group :development, :test do 
    gem 'sqlite3-ruby', :require => 'sqlite3' 
end 

谁能帮我看看我搞砸了?

+0

确实看起来很奇怪,如果你从Gemfile中删除sqlite,它仍然会这样做吗?如果是这样,你可能有一个引用sqlite的Gemfile的依赖关系,是否有任何出售宝石? – scaney 2010-11-20 01:27:49

+0

好吧,我注释掉Gemfile中的sqlite3行,然后再次运行我的耙子命令......现在它回来说它**在任何来源中都找不到webrat = 0.7.2 ** Webrat已列出在我的Gemfile中,但只在'测试'组中?!?是什么赋予了?使用** Rails 3.0.3 **(或试图)... – Meltemi 2010-11-20 01:38:27

+0

嗯,我假设应用程序主要是样板生成?你还没有调整过任何内部的东西?也是使用R3.0.3或更早版本生成的实际原始应用程序? – scaney 2010-11-20 01:46:10

回答

1

假设你sqlite3-ruby宝石已经成为不包括:production一组,你可以运行:

env RAILS_ENV=production bundle install --without development test 

这将创建一个.bundle目录,指导红宝石不要加载任何未设置为:production的宝石。

+0

对我的无知感到抱歉,这是新的,但应该是'sqlite3-ruby'? – Meltemi 2010-11-20 02:16:12

+0

是的,它应该......我只是写得很匆忙。 – 2010-11-20 02:31:17

+0

好的。在我的原始语句中':require =>'sqlite3''部分会发生什么。它不再需要吗? – Meltemi 2010-11-20 02:39:42

0

尝试运行:

export RAILS_ENV='production' 
rake ... 
+0

这不等于他跑什么吗? – alternative 2010-11-20 01:37:59

+0

试过这个...同样的问题... – Meltemi 2010-11-20 01:50:08

+0

但现在echo'$ RAILS_ENV'返回'production'而不是空行。 – Meltemi 2010-11-20 01:50:54

相关问题