Ruby on Railsを学んでいます。現時点でrails server
は、OS X ターミナルでローカルにサイトを実行しているだけです。Rails サイトを本番環境で実行すると何が変わるのですか?
- サイトはまだ で始まってい
rails server
ますか? - データベースのセットアップ方法に違いはありますか?
注:Rails 3を実行しています。
Ruby on Railsを学んでいます。現時点でrails server
は、OS X ターミナルでローカルにサイトを実行しているだけです。Rails サイトを本番環境で実行すると何が変わるのですか?
rails server
ますか?注:Rails 3を実行しています。
Rails アプリは本番呼び出しrails server -e production
で実行できますが、99% の時間は WEBrick ではなく、passenger や thin などでサービスを提供します。つまり、サーバーを起動する別のコマンドがあることを意味します。(thin start -e production
例えば)
これは複雑な質問ですが、違いについて学習するための最適な場所は、特定のenvironment.rb
ファイルを確認することです。Rails が起動すると、呼び出された環境に一致する環境ファイルから開始されます。つまり、開発環境で開始した場合はdevelopment.rb
ファイルをロードすることから始まり、実稼働環境ではproduction.rb
ファイルをロードします。環境の違いは、ほとんどの場合、さまざまな環境構成ファイルでのこれらの違いの結果です。
基本的に、Rails 3.1 アプリがプロダクション モードの場合、デフォルトではオンザフライでアセットをコンパイルすることはなく、開発中には発生しない多くのキャッシュが行われます。また、エラー メッセージが表示された場合、それらはログに記録されますが、ユーザーには表示されません。代わりに、パブリック ディレクトリの静的なエラー ページが使用されます。
これについてさらに理解を深めるために、関連する Rails ガイドを読むことをお勧めします。
Rails 初期化ガイド: http://guides.rubyonrails.org/initialization.html
Rails 構成ガイド: http://guides.rubyonrails.org/configuring.html
ここで「生産」という言葉を使用できる文脈は 2 つあります。そのうちの 1 つは、サーバーを運用モードで実行しています。これをローカルで行うには、
RAILS_ENV=production ./script/server
この設定は config/environments/production.rb から取得されます。このファイルを config/environments/development.rb と比較してみてください。クラスのキャッシングなど、わずかな違いしかありません。開発モードを使用すると、変更がすぐに反映されるように簡単になります。さらに、これらのモードのいずれかでサーバーを実行することを選択した場合、yourproject_development と yourproject_production という 2 つの異なるデータベース (デフォルト) が使用されます。
一方、実稼働ボックスへの Rails デプロイメントは別物です。サーバーを慎重に選択する必要があります。カピストラーノの展開スクリプトに対処する必要がある場合があります。netgear などのロード バランサーが必要になる場合もあります。データベースには、サイズの予測、マスター/スレーブ クラスタリングなどの詳細な考慮事項も必要になる場合があります。
注: Rails 3 を使用したことはありません。この回答は 2.3.x に偏っています。