2010-11-20 109 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

相關問題