2011-10-12 33 views
18

Khi tôi khởi động đường ray ở chế độ sản xuất, nó biên dịch trước tất cả nội dung nhưng không thể phân phối nội dung application.css. Tôi nhìn vào public/assets và các ứng dụng biên dịch sẵn.CSS biên dịch không tìm thấy trong chế độ sản xuất Rails 3.1

Tuy nhiên, tôi nhận được 404 bất cứ khi nào tôi cố truy cập từ trang.

Đây là các hướng dẫn tôi sử dụng để khởi chạy máy chủ, nếu điều đó có thể giúp ích chút nào.

RAILS_ENV=production bundle exec rake assets:clean 
RAILS_ENV=production bundle exec rake assets:precompile 
rails -e production 
+0

Tôi không sử dụng Rails 3.1, nhưng không phải là thư mục 'asset' trong thư mục gốc của ứng dụng, không nằm trong thư mục' public'? Tha thứ cho tôi nếu điều này là sai. – bricker

+1

điều này là sai, nó nằm trong thư mục 'public' –

Trả lời

34

Nếu bạn muốn Rails để phục vụ tài sản tĩnh bạn có thêm dòng sau vào production.rb của bạn:

config.serve_static_assets = true 

Tôi hiểu nó tốt hơn để cho phép apache hoặc nginx để phục vụ họ, nhưng hoạt động này nếu bạn đang sử dụng một máy chủ độc lập đường ray (hoặc ít nhất nó hoạt động với mỏng)

0

Ông có thể vui lòng xác nhận rằng bạn có

<%= stylesheet_link_tag "application" %> 

trong phân khúc đầu trong cách bố trí ứng dụng của bạn thay vì một cái gì đó như:

<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" /> 

Điều này đảm bảo các biên dịch sẵn ứng dụng-xxx. css sẽ được bao gồm.

+0

có, tôi có stylesheet_link_tag –

+0

appliation.css ban đầu của bạn nằm ở đâu? Có phải trong /app/assets/stylesheets/application.css không? Ngoài ra, nguồn html trông như thế nào trong điều khoản của thẻ liên kết biểu định kiểu? Liệu nó có tham chiếu application.css hoặc ứng dụng biên dịch sẵn-xxx.cs không? – emrass

+0

Ứng dụng gốc.css nằm trong/app/assets/stylesheets /. Nguồn html tham chiếu đến ứng dụng biên dịch sẵn-xxx.css –

3

Vì vậy, hóa ra là đường ray không chịu trách nhiệm phân phát nội dung tĩnh mà nó biên dịch trước. Bạn phải định cấu hình máy chủ web bạn sử dụng (tức là nginx) để phân phát các tài sản tĩnh đó cho bạn thay vì đường ray. Tôi ước điều này rõ ràng hơn rất nhiều trên các tài liệu.

+0

u có thể cung cấp một liên kết về cách cấu hình máy chủ không? –

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