2011-09-26 9 views
16

Podczas rutowania 3.1, po wstępnym skompilowaniu zasobów, szyny tworzą katalog public/assets i tam dodają pliki.Czy dodajesz publiczne/zasoby w kontroli wersji?

Czy kontrolujesz wersję publiczną/aktywa/*?

+1

Czy masz ochotę odpowiedzieć na Twoje pytanie? Jeśli tak, proszę przyjąć, w przeciwnym razie pomocny byłby komentarz dotyczący tego, co tracisz. – Travis

Odpowiedz

5

Szukałem również odpowiedzi na to pytanie. Znalazłem oficjalna prowadnicami ma jakieś przemyślenia na ten temat:

http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation

Oto cytat z odpowiedniej sekcji (podkreślenie dodane):

Istnieje kilka powodów, dla których warto jest precompile swoje zasoby lokalne. Należą do nich:

  • Użytkownik może nie mieć uprawnień do zapisu w systemie plików produkcyjnych.
  • Być może wdrażasz na więcej niż jednym serwerze i chcesz uniknąć duplikowania pracy.
  • Być może często przeprowadzasz wdrożenia, które nie uwzględniają zmian aktywów.

Lokalna kompilacja pozwala popełnić skompilowane pliki do kontroli źródła, a następnie wdrożyć jako normalne.

Istnieją trzy zastrzeżenia:

  • Nie musi uruchomić zadanie wdrażania Capistrano że precompiles aktywów.
  • Należy upewnić się, że wszystkie niezbędne kompresory lub minifiery są dostępne w systemie deweloperskim.
  • Należy zmienić następujące ustawienia konfiguracji aplikacji:

W config/environments/development.rb, umieść następujący wiersz:

config.assets.prefix = "/dev-assets" 

Zmiana prefix sprawia Zębatki użyć innego adresu URL do serwowania aktywa w trybie rozwoju, a przekazać wszystkie żądania do kolców. Prefiks wciąż jest ustawiony na /assets w środowisku produkcyjnym. Bez tej zmiany aplikacja służyłaby do prekompilowanych zasobów od /assets w fazie rozwoju, a nie zobaczysz żadnych lokalnych zmian do czasu ponownego kompilowania zasobów.

W praktyce pozwoli to na wstępne kompilowanie lokalnie, posiadanie tych plików w drzewie roboczym i przypisanie tych plików do kontroli źródła w razie potrzeby. Tryb programowania działa zgodnie z oczekiwaniami.

Wygląda na to, że dobrym pomysłem byłoby czasami umieszczanie prekompilowanych zasobów w VCS.

12

Używam Capistrano do wdrożenia. Ostatnim krokiem jest kompilacja zasobów. Nic takiego nie zostanie sprawdzone w kontroli wersji.

https://github.com/capistrano/capistrano/wiki/Documentation-v2.x

Sprawdzanie w zebranych aktywów, pliki .gz/etc, po prostu zaśmiecać kontroli wersji.

+0

Trwa dobre 10 minut, aby "rake assets: precompompile" został uruchomiony dla mnie w mojej instancji Amazon EC2 micro. Wdrożenie zajmuje co najmniej 10 minut. Na moim urządzeniu odbierającym jest to mniej niż minuta. Mając to na uwadze, czy uważasz, że kontrola wersji skompilowanych zasobów ma sens? –

+0

Na zakończenie [Railscast episode # 341] (http://railscasts.com/episodes/341-asset-pipeline-in-production), Ryan Bates wspomina o idei kompilacji zasobów na maszynie lokalnej, a następnie modyfikując capistrano wdrożyć zadanie, aby zsynchronizować pliki z serwerem produkcyjnym; tj. NIE umieszczać ich w kontroli wersji. Brzmi dobrze. –

+1

Przypomnienie: po skompilowaniu zasobów środowisko programistyczne może wybrać opcję bezpośredniej obsługi, zamiast generowania ich w razie potrzeby. Szybkim rozwiązaniem dla mnie było usunięcie '/ public/assets' po wykonaniu powyższych zadań' cap assets: prekompilacja' i 'rsync'. –

Powiązane problemy