2015-07-18 31 views
5

Podczas produkcji poprawne ścieżki do moich obrazów nie są wywoływane razem ze znacznikiem obrazu, a odcisk palca md5 nie jest dodawany. Nazwy obrazów (np. "Pretty_picture.jpg") są przechowywane w bazie danych. Pliki prekompilacji są obecne w folderze publicznym, w tym plik manifestu.Szyny 4.2: ścieżka obrazu i odcisk palca są dodawane tylko wtedy, gdy plik config.assets.compile = true

Wywołany z image_tag:

image_tag @test_question.question.image 

uzyskać:

<img src="/images/pretty_picture.jpg"> 

Jeżeli ustawić config.assets.compile = true w production.rb obraz jest renderowany i uzyskać:

<img src="/assets/images/pics/pretty/pretty_picture-e0df5012b6930cda4efaa866af22a63f.jpg" > 

Moim rozwiązaniem do włamań jest użycie (w języku HAML)

%img{src: "/assets/"+Rails.application.assets.find_asset(@test_question.question.image).digest_path} 

W production.rb mam

config.assets.digest = true 
config.assets.enabled = true 
config.serve_static_files = false 
config.assets.compile = false 

Ustawianie config.assets.compile true w produkcji nie jest zalecane. Wydaje się to dziwnym zachowaniem w imieniu kół łańcuchowych i rurociągu aktywów. Masz pojęcie, co jest nie tak z użyciem image_tag tutaj?

+0

Mam ten sam problem - dziękuję, że znalazłeś rozwiązanie hackowe - przynajmniej otrzymałem działający kod. –

+0

Czy istnieje rozwiązanie problemu, które nie jest hackerem? Mam ten sam problem. – user2012677

Odpowiedz

1

W produkcji, należy precompile aktywa przed uruchomieniem serwera, za pomocą następującego polecenia (i zautomatyzować to zrobić to za każdym razem, gdy wdrożyć):

rake assets:precompile RAILS_ENV="production" 

i zachować config.assets.compile = false w production.rb. Sprawdź w Asset Pipeline Guide.

+0

Tak, zasoby są prekompilowane dla właściwego środowiska i wdrażane z Capistrano na serwerze. Jak stwierdzono w pytaniu, zasoby są obecne w folderze publicznym tak jak powinny, a config.assets.compile = false. Obrazy nie są poprawnie przywoływane w widoku. – user3291025