Chỉ mới bắt đầu thích nghi với đường ray 3.1, tôi bắt đầu viết coffeescript và sass và mọi thứ hoạt động tốt trong phát triển. Khi tôi chạy máy chủ trong sản xuất, tôi chỉ nhận được:Rails 3.1 tài sản không có dấu vân tay trong sản xuất
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js" type="text/javascript"></script>
trong mã nguồn của trang, không có hashcode tạo ra và cả tài sản có lỗi định tuyến:
Routing Error
No route matches [GET] "/stylesheets/application.css"
nguyên nhân của việc này là gì ? Tôi có quên làm gì không?
thiết lập trong môi trường/production.rb:
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
config.active_support.deprecation = :notify
Thank you very much.
Thêm biết thêm thông tin:
trong layouts/application.html.erb, Tôi đang sử dụng sau đây để bao gồm tài sản:
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
Và tôi đã cố gắng bundle exec rake assets:precompile
mà chạy mà không có đầu ra bất cứ điều gì và sau đó chạy rails s -e production
, sự cố vẫn tiếp diễn.
Và tôi cũng đã cố gắng đặt config.assets.compile = true
và sau đó chạy rails s -e production
, sự cố vẫn tiếp diễn.
Vui lòng trợ giúp.
Thông tin khác. Tôi đã thấy rằng các js và css được biên dịch được tạo ra trong thư mục công cộng/tài sản, nhưng trong môi trường sản xuất, các tệp được bao gồm mà không có mã băm.
Trợ giúp.
Giải pháp: Chỉ cần kiểm tra lại dự án của tôi và thấy nguyên nhân gốc là khi tôi đang chỉnh sửa ứng dụng.rb để hỗ trợ mongodb. Tôi vô tình nhận xét
require "sprockets/railtie"
bỏ ghi chú sau đó mọi thứ đều ổn.
Hãy để điều này cho người khác nhắc nhở sai lầm tân binh của tôi.
Cảm ơn bạn rất nhiều Richard. Câu trả lời của bạn không phải là cuối cùng anwser nhưng nó giúp rất nhiều, thực sự xứng đáng một cuộc bỏ phiếu lên.
Cảm ơn Richard, tôi đã thêm thông tin bổ sung vào bài đăng chính. Tôi có phải sử dụng capistrano để có được tính năng này không? Tôi chỉ cố gắng để chạy "rails s -e sản xuất" trên địa phương của tôi. – larryzhao
Nếu bạn là người địa phương, thì bạn phải chạy nó cục bộ. Bạn chỉ cần nhiệm vụ Capistrano nếu đó là cách bạn triển khai đến một môi trường sản xuất sản xuất. Nâng cấp ứng dụng của bạn lên 3.1.1.rc2 và chạy lại tác vụ. Tôi nghĩ rằng có một số bản sửa lỗi trong nhiệm vụ biên dịch trước có thể sửa lỗi này. –