2012-05-29 3 views
7

을 사전 컴파일하지 내가 Heroku가이 레이크 자산을 실행하는 것을 알고Heroku가/루비 온 레일 오류 : 사전 컴파일 작업 : 이미지가

-----> 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 

을 그리고 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] 

그럼이 500 오류가 발생하는 이유는 무엇입니까?

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> 

흥미롭게도, 다른 페이지에는 이미지가 잘 보입니다. 일부 이미지가 작동하지 않을 이유를 모르겠지만, 일부는 ...

+0

'twitter_64.png'가 assets 디렉토리 ('app/assets/images','lib/assets/..'또는'vendor/assets..')에 있는지 확인 하시겠습니까? – luacassus

+0

왜 이미지를 사전 처리 컴파일 하시겠습니까? – ksol

답변

7

먼저, 여러분이이 설정되어 있는지 다음과 같습니다

config.assets.initialize_on_precompile = false 

문제가 해결되지 않는 경우를, 그 노력의 가치 슬러그를 빌드하기 전에 프리 컴파일 태스크를 수동으로 실행하십시오. 이 솔루션은 아니지만 다른 모든 경우에하는 것은 임시 해결 방법은 퍼팅되어 있는지 확인

config.assets.compile = true 
+0

푸시하기 전에'RAILS_ENV = production bundle exec rake assets : precompile'을 실행 해 주셔서 감사합니다. – Jason

1

을 설정하는 것입니다 실패,

RAILS_ENV=production bundle exec rake assets:precompile 

마지막 :이 방법을 수행 미묘한 차이가 있다고 생각합니다

app/assets/images 

의 이미지되지에서

public/assets 

.

rake assets:precompile을 실행하고 개선되는지 확인하십시오. 조금 혼란 스러울 수 있습니다.

+0

그러면 이미지가 공용 디렉토리에 복사됩니다. public 디렉토리에 추가 된 이미지를 app/assets/images 디렉토리에서 삭제합니다. 또한 파일을 참조하는 방법에 문제가 있습니다. 정상 이름이나 별 xxxx.jpg 이름을 사용해야합니까? – flobacca

+1

1) Rails 시스템에서 얻은 이상한 이름은 사용하지 않아도됩니다. 보통 이름 일뿐입니다. 그들이 하위 폴더에 있다면 상대 경로 만 제공하십시오. 그것은 무엇을해야하는지 알고 있습니다. 2) 아니요, 복사 한 후에 app/assets/images 디렉토리를 삭제하지 마십시오. – mjnissim

관련 문제