2013-07-30 35 views
10

Tôi đang bắt đầu trong đường ray và tôi đã có một ứng dụng hoạt động trong dev (webrick).Tệp CSS biên dịch trước không tìm thấy với đường ray 4 đường ống nội dung

Vấn đề là: tệp CSS biên dịch trước không được tìm thấy trong quá trình sản xuất.

Bây giờ tôi lưu trữ nó trên heroku và triển khai nó. Tôi có một thông báo nói rằng các tài sản được biên dịch sẵn (vì vậy nó không phải là một lỗi biên dịch) và mọi thứ đều theo mặc định cho các thiết lập.

Tôi đã ls thư mục/public/asset và mọi thứ đều có trong đó. Tôi thậm chí có thể cat ứng dụng - *. Css và tôi nhận được toàn bộ nội dung tôi cần.

Bây giờ khi tôi cố gắng truy cập tệp CSS, nó cho tôi lỗi 404 (thậm chí tho nó là một liên kết css được tạo tự động sử dụng <%= stylesheet_link_tag "application", :media => "all" %>). Vì vậy, definetly nó không phải là một vấn đề mà tôi đã hardcode liên kết CSS.

Tôi không chắc chắn về việc kiểm tra tiếp theo sẽ thực hiện như thế nào.

Nếu bạn tò mò về đầu ra, hiện tại nó có thể truy cập công khai here.

Trả lời

14

Hãy thử thay đổi tùy chọn cấu hình config.serve_static_assets = false thành config.serve_static_assets = true trong số config/environments/production.rb nếu bạn chưa làm điều đó.

+0

Điều đó dường như thực hiện thủ thuật. Bây giờ tôi chỉ cần tìm ra hình ảnh. – Erick

+0

@Erick, hình ảnh cũng phải được xử lý cẩn thận bởi cấu hình đó. Bạn có thấy các hình ảnh trong thư mục 'public/asset /' không? Bằng cách này bạn tham khảo những hình ảnh này như thế nào, có phải nó đang sử dụng helper 'image_path' không? – vee

+0

tôi phải admet tôi tham khảo chúng theo cách hardcoded thông qua /assets/something.jpg. Tôi sẽ cố gắng sử dụng helper image_path và xem sau đó. – Erick

1

Điều duy nhất mà cố định nó cho tôi trong Rails 4 là

config.assets.compile = true 

trong config/environments/production.rb

này sẽ rơi trở lại các đường ống dẫn tài sản nếu một tài sản precompiled được bỏ qua, theo các tài liệu hướng dẫn.

+0

Các tài liệu cũng khuyên bạn không bao giờ đặt điều này thành đúng trong sản xuất chỉ để làm cho ứng dụng hoạt động>< – bkunzi01

+0

@ bkunzi01 về mặt lý thuyết, tài liệu là đúng. Trong thực tế, mặc dù, điều này sẽ được biên dịch chỉ một lần để tôi có thể chấp nhận rủi ro đó =) – Abdo

+0

Làm cách nào để ép buộc biên dịch chỉ một lần sau khi triển khai? Hiệu suất ứng dụng của tôi bị nghiền nát khi tôi cho phép điều này :( – bkunzi01

Các vấn đề liên quan