2012-05-30 68 views
7

使用RVM Ruby 1.9.3-p194,我已經將一個非常基本的Rails 3.2.3試用網站部署到了「生產」服務器(並非真正在生產中,感謝!),我發現以下是真實的,的命令,這裏列出:Rails控制檯與生產服務器上的服務器差異

╔══════════════════════════════════════╤═══╗ 
║ command issued      │OK?║ 
╟──────────────────────────────────────┼───╢ 
║ bundle exec rails console   │ N ║ 
║ bundle exec rails console production │ Y ║ 
║ bundle exec rails server    │ Y ║ 
║ bundle exec rails server production │ N ║ 
╚══════════════════════════════════════╧═══╝ 

我的第一個問題:這個預期?(我還以爲在右列的模式應該是N-Y-N-Y。)

更多信息:bundle exec rails console失敗的理解原因,sqlite3的寶石未在服務器上安裝。然而,bundle exec rails server production失敗,一個更理解跟蹤:

$ bundle exec rails server production 
Exiting 
/home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler.rb:63:in `require': cannot load such file -- rack/handler/production (LoadError) 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler.rb:63:in `try_require' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler.rb:16:in `get' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:269:in `server' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/railties-3.2.3/lib/rails/commands/server.rb:59:in `start' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap' 
from /home/spkspike/www/spike.sampablokuper.com/releases/20120530134819/vendor/ruby/1.9.1/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

我的第二個問題:如何最好地解決這個問題?

回答

18

難道你不希望使用生產環境中開始在生產模式下的服務器?

rails server -e production 

軌控制檯環境和軌道服務器-e環境之間的差異語法是有點的PITA

+0

對於瘦服務器,這是正確的....也爲您的WEBrick將需要運行RAILS_ENV =生產鐵軌 –

3

在控制檯生產指定環境的情況下,並在服務器的情況下,它指定了別的東西(可能是使用webrick/...的服務器)。

所以,如果你想指定環境做:

ENV=production rails server