OK, nadal nie wiem co znaczy ‘nie działa’ ale zakładam że jest to 404.
W trybie production, RoR nieserwuje domyślnie statycznych asetów. Możesz to ustawienie zmienić w config/environments/production ale będzie to znaczyło że podobnie jak przy developmencie, aplikacja będzie te assety mielić w czasie rzeczywistym, co może znacznie obciążyć i spowolnić Twój serwer.
Lepszym pomysłem jest prekompilowanie asetów podczas wdrożenia. Jeśli używasz capistrano, powinno być to bardzo proste.
przerabiałem tego guida to z niego dodałem wpis do nginxa,
nie mam 404, background-image z przykładu jaki podałem nie odnajduje fizycznie pliku na produkcji photo1.jpg, po rake assets:precompile pliczek ten laduje natomiast do public/assets
When using the asset pipeline, paths to assets must be re-written and sass-rails provides -url and -path helpers (hyphenated in Sass, underscored in Ruby) for the following asset classes: image, font, video, audio, JavaScript and stylesheet.
[quote=mkornat88]#d1
{
background-image:url(/assets/photo1.jpg);
}
bez efektu[/quote]
to jest wynikowy css?
Assety powinny ci się przy deploymencie precompilować i wylądować w katalogu public/assets (zakładam, że zastosowałeś rady huberta).
Nazwy plików powinny zawierać hasha, np. photo1-34523jh45g32h45234523.jpg (helper ‘image-url’ doda tago hasha podczas precompilacji.)
Jeżeli jest u ciebie inaczej to przeklej część configa dotyczącą assetów.
Odnalazłem problem, plik po komilacji z haszem w public/assets nie miał nadanego prawa odczytu dla innych , po ręcznej korekcie praw działa. Czym jest spowodowane takie ograniczenie w nadawaniu praw przy kompilacji?
Możesz albo odpowiednie polecenie chmod dopisać do recepty capistrano, albo lepiej ustawić poprawnie umask.
Ustawienie umask dla użytkownika, np. na wartość 022 powinno spowodować że nowotworzone pliki zawsze będą miały uprawnienia 644, co prawdopodobnie jest pożądane.