Câu hỏi của tôi là tương tự với trang này Rails 3.2 Asset Pipeline with Passenger Endless Errors ngoại trừ việc khi tôi cố gắng để thực sự đi đếnRails 3.2 Asset đường ống với Thin và Apache, không tìm thấy tài sản
<link href="/assets/application-eed7996ee9017637f923133371ab3e92.css" media="all" rel="stylesheet" type="text/css" />
tôi nhận được một 404. Dưới đây là những điều tôi don' Tôi hiểu. Nó đang tìm trong/asset /, nhưng khi tôi nhìn vào mã đã được triển khai, các tài sản chỉ nằm trong/public/assets, mà thực sự là một liên kết tượng trưng đến/var/www/myapp/shared/assets. Vì vậy, những gì trên thế giới có trách nhiệm nói cho ứng dụng tìm kiếm/tài sản sẽ tạo ra kết quả chính xác?
Tôi đang sử dụng Rails 3.2.0, ruby-1.9.3-p125, triển khai lên Ubuntu, Apache và Thin.
Tôi nên làm rõ: Tài sản của tôi thực sự được triển khai cho máy chủ. Tất cả mọi thứ hoạt động hoàn toàn tốt đẹp cho đến khi chúng cần được phục vụ, trong trường hợp production.log nói với tôi rằng nó đang tìm kiếm chúng trong /assets/application-eed7996ee9017637f923133371ab3e92.css, trong đó 404.
Đối với mỗi yêu cầu của tôi thin.log nói
cache: [GET /] miss
và production.log nói
ActionController::RoutingError (No route matches [GET] "/assets/application-abecf2e096af9ee80697fd49e79a55e7.js"):
CẬP NHẬT nhờ @Brandan cho sự giúp đỡ. Tài sản của tôi thực sự ở số RAILS_ROOT/public/assets
. Tôi đặt này trong file vhost Apache của tôi:
DocumentRoot /var/rails/myappname/current/public
RewriteEngine On
XSendFile On
XSendFilePath /var/rails/myappname #not even sure if this line is needed
<LocationMatch "^/assets/.*$">
Header unset ETag
FileETag None
ExpiresActive On
ExpiresDefault "access plus 1 year"
</LocationMatch>
RAILS_ROOT/config/môi trường/production.rb thiết lập của tôi:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
làm cách nào để bạn tạo liên kết của mình? – apneadiving
trong bố cục của tôi, tôi nói '<% = stylesheet_link_tag" application ",: media =>" all "%>' và '<% = javascript_include_tag" application "%>' – DelPiero
Bạn có biên dịch trước tài sản của mình không? – ka8725