アプリケーションをデプロイする場合は、VOLT_ENV=production の環境変数を設定することを推奨します。これによってコードのリローディングとソースマップが無効になり、いくつかのパフォーマンスを向上させる設定が有効になります (ロードに要する時間は増加します) 。
Volt では、すべてのアプリケーションのアセットを /public にプリコンパイルすることが可能です。プリコンパイルにおいて、Volt は以下のことを行います。
すべてのアセットは /public フォルダにコンパイルされ、Nginx などが直接サーブすることが可能です。プリコンパイルを行った結果、最初のページ読み込み速度をはっきりと向上させ、ブラウザからのリクエスト数を減少させることができます。
アプリケーションのアセットをプリコンパイルするには、単純に以下を実行します。
VOLT_ENV=production bundle exec volt precompile
アセットのプリコンパイルによって、css/sass/html ファイルから参照される画像をコンポーネントから public フォルダにコピーします。すべてのアセットは、プリコンパイルの際に fingerprint のハッシュが末尾に追加された名前 (profile-
など) にリネームされることに気がつくでしょう。これによって、public フォルダ内のすべての画像やフォントなどを永久的にキャッシュすることができるようになっています。ファイルの中身が変更された場合は、新しいハッシュが割り当てられます。(これは Rails で行われるプロセスと同様です。詳しくは、こちらのより詳細なドキュメントを参照してください) 。
アセットを正しく示すための画像のタグや CSS などについては、アセットのセクションを参照してください。
Volt は、すべてのデータベースへの問い合わせや更新、そしてタスクの呼び出しなどを、websocket の通信によって行います。Websockets は既存の HTTP コネクションを「アップグレード」することによって作られます。通常、Volt は既存の HTTP コネクションを利用して websocket のコネクションをセットアップします。しかし、異なるポートやドメインなどを使って websocket に接続したいケースもあるでしょう。(一般的に、メインのアプリケーションが websocket に非対応なプロキシサーバーの背後で動作している場合に必要となります) 。websocket の URL は config/app.rb
で以下のように設定可能です。
Volt.configure do |config|
# ...
config.public.websocket_url = 'websocket.mysite.com/socket'
...
end
Volt は、指定がない場合は、自動的に ws:// もしくは wss:// を URL の先頭に追加します。
この章の残りでは、有名なクラウドサービスへのデプロイ方法に焦点を当てて説明します。