2011-10-04 29 views
8

Tôi không thể lấy tiền tố đường dẫn tài sản Rails 3.1 để làm việc trong chế độ sản xuất. Nó luôn thất bại trên hình ảnh tham chiếu trong SCSS với một lỗi như:Ruby on Rails 3.1 tài sản: biên dịch trước và hình ảnh

$ bundle exec rake assets:precompile RAILS_ENV=production 
    rake aborted! 
    rails.png isn't precompiled 
    (in /home/florian/AssetTest/app/assets/stylesheets/application.css.scss) 

Nhưng khi tôi nhìn vào thư mục công cộng/tài sản, hình ảnh là có, vì vậy nó được biên dịch sẵn:

$ ls public/assets | grep rails 
    rails-dd352fc2630e5f9aa5685ef1d7fe5997.png 

Các SCSS tập tin trong trường hợp này chỉ chứa một số mã kiểm tra:

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

body { 
    background: #ffffff image-url('rails.png') no-repeat 0 center; 
} 

Nếu tôi không sử dụng các helper image-url trong SCSS, nhưng chỉ url ('/ tài sản/rails.png'), tiền biên dịch hoạt động tốt, và tệp manifest.yml là g say mê công khai/tài sản.

Điều thú vị là: nếu tôi thay đổi SCSS trở lại url hình ảnh ('rails.png') và chạy một biên dịch trước, nó vẫn hoạt động (tôi đoán vì hình ảnh hiện đã được liệt kê trong tệp kê khai).

Tôi đang làm gì sai ở đây? Tôi không thực sự muốn bỏ qua các phương pháp trợ giúp (như sử dụng chúng là cách bạn nên làm điều đó, phải không?), Và tôi chắc chắn không muốn tạo tệp kê khai theo cách thủ công ...

Trả lời

5

Tôi đã chạy vào cùng một vấn đề bản thân mình. Đây rõ ràng là một lỗi trong Rails 3.1.0, và hy vọng sẽ được sửa chữa trong thời gian ngắn ...

Trong mọi trường hợp, trong production.rb, bạn có thể thử này:

config.assets.compile = true 

Bạn có thể có nó đặt đến false, mà nó nên. Tuy nhiên, việc đặt nó thành false gây ra sự cố khi bạn sử dụng trình trợ giúp tài sản trong SCSS như bạn đang cố gắng thực hiện. Đặt giá trị đó thành true dường như cho phép biên dịch đúng cách trong khi sử dụng những người trợ giúp đó.

Hãy xem this issue on github để biết thêm chi tiết.

+1

Chỉ cần cập nhật lên Rails 3.1.1rc1 như được đề xuất trong vấn đề github, và nó hoạt động :-) – fwalch

+2

Câu trả lời này có vẻ xấu vì lý do này: http://stackoverflow.com/questions/8821864/config-assets-compile- đúng-trong-rails-sản xuất-tại sao-không – Ringo

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