私は使用Ruby 2.0.0-p247
していますRails 4.0.0
次のような最小限のRails 4サイトを作成すると:
rails new minimal
cd minimal
rails generate controller home index
tee config/routes.rb <<EOF
Minimal::Application.routes.draw do
root 'home#index'
end
EOF
次に、アセットをプリコンパイルします
rake assets:precompile
次のようなアセットを生成します。
I, [2013-09-04T17:05:36.992951 #3549] INFO -- : Writing /WORKINGDIR/minimal/public/assets/application-723d1be6cc741a3aabb1cec24276d681.js
I, [2013-09-04T17:05:37.052303 #3549] INFO -- : Writing /WORKINGDIR/minimal/public/assets/application-f1a14051f17824976271b9c0460232f0.css
しかし、サーバーを本番モードで起動すると、
RAILS_ENV=production rails s
HTML で生成された URL は、プリコンパイル済みファイルを指していません。
<link data-turbolinks-track="true" href="/stylesheets/application.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/javascripts/application.js"></script>
むしろ、私は期待します:
<link data-turbolinks-track="true" href="assets/application-f1a14051f17824976271b9c0460232f0.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-723d1be6cc741a3aabb1cec24276d681.js"></script>
デフォルトconfig/environments/production.rb
設定では、ダイジェストを使用するように指定されています。
config.assets.digest = true
しかし、それは選択的に無視されているようですか?
何か不足していますか?
アップデート:
Rails 4.2.3 でこれをテストしたところ、修正されたように見えますがrails s
、プロダクション モードで開始するには、さらにいくつかの環境変数をコマンドに渡す必要があります。
SECRET_KEY_BASE=$(rake secret) RAILS_SERVE_STATIC_FILES=true RAILS_ENV=production rails s