2012-05-29 31 views
7

Tôi biết rằng Heroku đang chạy tài sản cào: nhiệm vụ precompile:Heroku /-Ruby-on Rails lỗi: hình ảnh không precompiling

-----> Writing config/database.yml to read from DATABASE_URL 
-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
-----> Rails plugin injection 
     Injecting rails_log_stdout 
     Injecting rails3_serve_static_assets 
-----> Discovering process types 
     Procfile declares types  -> (none) 
     Default types for Ruby/Rails -> console, rake, web, worker 
-----> Compiled slug size is 17.7MB 
-----> Launching... done 

Và tôi nói với nó để precompile hình ảnh trong production.rb

# from: http://stackoverflow.com/questions/8052865/rails-3-1-asset-pipeline-why-my-images-do-not-precompile-for-production 
config.assets.precompile += %w[*.png *.jpg *.jpeg *.gif] 

Vậy tại sao tôi vẫn gặp lỗi 500 này?

2012-05-29T02:57:15+00:00 app[web.1]: Started GET "/signin" for 46.114.68.16 at 2012-05-29 02:57:15 +0000 
2012-05-29T02:57:15+00:00 app[web.1]: Processing by SessionsController#new as HTML 
2012-05-29T02:57:15+00:00 app[web.1]: Rendered sessions/new.html.erb within layouts/application (25.4ms) 
2012-05-29T02:57:15+00:00 app[web.1]: Completed 500 Internal Server Error in 27ms 
2012-05-29T02:57:15+00:00 app[web.1]: 
2012-05-29T02:57:15+00:00 app[web.1]: ActionView::Template::Error (twitter_64.png isn't precompiled): 
2012-05-29T02:57:15+00:00 app[web.1]:  25: <div id="auths"> 
2012-05-29T02:57:15+00:00 app[web.1]:  27: <a href="/auth/twitter" class="provider"> 
2012-05-29T02:57:15+00:00 app[web.1]:  26: <h2>Or sign in through one of these:</h2> 
2012-05-29T02:57:15+00:00 app[web.1]:  28:  <%= image_tag "twitter_64.png", :size => "64x64", :alt => "Twitter" %>Twitter</a> 

Thật thú vị, tôi có hình ảnh trên các trang khác hiển thị tốt. Không biết lý do tại sao một số hình ảnh sẽ không làm việc, nhưng một số sẽ ...

+0

Bạn có chắc chắn rằng 'twitter_64.png' nằm trong thư mục nội dung (' app/assets/images', 'lib/asset/..' hoặc 'vendor/assets..') không? – luacassus

+0

Tại sao bạn muốn biên dịch trước hình ảnh? – ksol

Trả lời

7

Đầu tiên, hãy chắc chắn bạn có bộ này cũng như:

config.assets.initialize_on_precompile = false 

Nếu điều đó không làm việc, nó có giá trị cố gắng để tự chạy nhiệm vụ biên dịch trước khi xây dựng con sên; Tôi nghĩ rằng có sự khác biệt tinh tế khi thực hiện theo cách này:

RAILS_ENV=production bundle exec rake assets:precompile 

cuối, nó không phải là một giải pháp, nhưng nếu vẫn thất bại, một cách giải quyết tạm thời sẽ được thiết lập

config.assets.compile = true 
+0

Cảm ơn điều này, chạy 'RAILS_ENV = gói sản xuất exec rake tài sản: precompile' trước khi đẩy làm việc cho tôi. – Jason

1

Hãy chắc chắn rằng bạn đang đặt hình ảnh của bạn trong

app/assets/images 

không trong

public/assets 

trực tiếp.

Sau đó, chạy rake assets:precompile và xem nó có cải thiện hay không. Nó có thể hơi khó hiểu.

+0

điều này sẽ sao chép hình ảnh vào thư mục công cộng. Bạn có xóa các hình ảnh từ thư mục app/assets/images sau khi chúng được thêm vào thư mục công cộng hay không. Cũng gặp sự cố với cách tham chiếu các tệp. Tôi có nên sử dụng tên thông thường của họ hoặc tên stars-xxxx.jpg không. – flobacca

+1

1) Bạn không phải sử dụng những cái tên kỳ lạ mà họ nhận được từ hệ thống Rails, chỉ là tên bình thường của họ. Nếu họ đang ở trong một thư mục con, chỉ cần cung cấp cho con đường tương đối của họ, nếu không thì không. Nó biết phải làm gì. 2) Không, đừng xóa thư mục app/assets/images khi chúng được sao chép. – mjnissim

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