Tôi đang sử dụng Ruby 2.0.0-p247
và Rails 4.0.0
file được tạo ra bởi tài sản: tiền biên dịch không phù hợp với các url được tạo ra bởi stylesheet_link_tag (thiếu tiêu hóa) trong đường ray tối thiểu 4 trang web
Nếu tôi thực hiện một Rails tối thiểu 4 trang web như thế này:
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
Sau đó, tiền biên dịch tài sản với
rake assets:precompile
Nó tạo ra tài sản như:
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
Nhưng nếu tôi bắt đầu máy chủ trong chế độ sản xuất, với
RAILS_ENV=production rails s
Các URL được tạo ra trong HTML không chỉ ở các tập tin biên dịch sẵn:
<link data-turbolinks-track="true" href="/stylesheets/application.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/javascripts/application.js"></script>
tôi mong chờ, chứ không phải :
<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>
Cài đặt mặc định config/environments/production.rb
nói để sử dụng thông báo:
config.assets.digest = true
Nhưng dường như bị bỏ qua có chọn lọc?
Tôi có thiếu gì đó không?
UPDATE:
tôi chỉ thử nghiệm điều này trong Rails 4.2.3 và điều này dường như được cố định, tuy nhiên chúng ta cần phải trao một vài biến môi trường hơn vào lệnh rails s
để bắt đầu trong chế độ sản xuất:
SECRET_KEY_BASE=$(rake secret) RAILS_SERVE_STATIC_FILES=true RAILS_ENV=production rails s
Tôi thường đặt RAILS_ENV = sản xuất. Điều này có vẻ là hồi quy từ 3.2.x: ( –
'config.assets.compile = true' sẽ có các vấn đề về hiệu năng trong sản xuất, tôi nghĩ rằng – Johann
@Johann nếu yuou vẫn đang làm tài sản 'rake: precompile' khi bạn triển khai (như bạn sẽ biết nếu' config.assets.compile' là 'false') mã nên không bao giờ thực sự được nhấn (vì nó sẽ luôn luôn nhìn thấy các phiên bản biên dịch sẵn và phục vụ chúng). – pix