2015-09-13 40 views
12

Mam Rails 4.2.4 (Ruby 2.2.2) aplikacji i służę aktywa statycznych poprzez CloudFront.Rails 4.2 Rails.application.config.assets.version nie unieważnia strawienia aktywów nazwy plików

Jeśli CloudFront służy coś, czego nie chcesz, istnieją dwie możliwości:

  • unieważnić zawartość w CloudFront lub
  • Zmień nazwę zasobu służyli

jednak po zmianie

Rails.application.config.assets.version = '1.0'

do

Rails.application.config.assets.version = '2,0'

(w konfiguracji/inicjalizatory/assets.rb)

i

  • usunąć wszystkie zasoby publicznie/majątek

  • uruchom "RAILS_ENV = inscenizowanie zasobów exec exec pakietu: prekompilacja"

te same nazwy plików są generowane!

Jedynym sposobem znalazłem się unieważnienie strawiony plik application.scss było dodać jakąś atrapę treści w celu wywołania nowej sumy kontrolnej MD5.

Co robię źle?

Czy nowa zmienna asset.version nie powinna zmienić nazw plików?

Pozdrawiamy i dziękujemy!

+0

Uwaga: Dodałem również Rails PR do tego: https://github.com/rails/rails/pull/22472 –

Odpowiedz

8

Zgodnie the comments in the Rails pull request I opened, to jest regresja, która musi być ustalona: https://github.com/rails/sprockets-rails/issues/240

Aktualizacja: Jak sansarp wspomina jeden z obejścia wymienionych w tej kwestii github jest użycie starej wersji zębatkami:

gem 'sprockets', '< 3.0.0' 

Innym rozwiązaniem jest użyć ścieżki aktywów jako wyłącznika podręcznej zamiast:

# config/initializers/assets.rb 
Rails.application.config.assets.prefix = "/assets/v1" 
0

Jeśli używasz Capistrano do wdrożenia należy ustawić assets_prefix w pliku deploy.rb.

set :assets_prefix, "assets/v1"