2012-05-30 12 views
7

Dopo aver distribuito un sito di prova di Rails 3.2.3 di base su un server di "produzione" (non proprio in produzione, per fortuna!) Con RVM Ruby 1.9.3-p194, trovo quanto segue per essere vero, i comandi elencati qui:Console Rails vs differenze server sul server di produzione

╔══════════════════════════════════════╤═══╗ 
║ 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 ║ 
╚══════════════════════════════════════╧═══╝ 

la mia prima domanda: è questo previsto? (avrei pensato che il modello nella colonna di destra dovrebbe essere N-Y-N-Y.)

Maggiori informazioni: bundle exec rails console fallisce per la ragione comprensibile che la gemma sqlite3 non è installato sul server. Tuttavia, bundle exec rails server production fallisce con una traccia molto meno comprensibile:

$ 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>' 

La mia seconda domanda: il modo migliore per risolvere questo errore?

risposta

18

Non si vuole essere l'avvio del server in modalità di produzione utilizzando l'ambiente di produzione?

rails server -e production 

La differenza di sintassi tra ambiente console e rotaie ambiente -e server è un po 'di una valle di lacrime

+0

Per il server sottile questo è corretto .... Anche per WEBrick è necessario eseguire RAILS_ENV = produzione rotaie s –

3

In caso di produzione di console specifica l'ambiente e in caso di server specifica qualcos'altro (probabilmente quale server utilizzare webrick/...).

Quindi, se si desidera specificare l'ambiente fare:

ENV=production rails server