2015-06-18 8 views
15

Oto aplikacja/zasoby/dla aplikacji Rails 4.2.Szyny 4 - NIE manifest.json po prekompilacji aktywów na serwerze produkcyjnym

enter image description here

Istnieją 3 siłach js i css. Po wdrożeniu do produkcji (ubuntu 12.1), aktywa prekompilacji zostało zrobione na serwerze (wdrożony pod Suburi):

RAILS_ENV=production bundle exec rake assets:precompile RAILS_RELATIVE_URL_ROOT=/mysuburi 

Oto production.rb:

config.cache_classes = true 
    config.eager_load = true 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
    config.serve_static_files = false #ENV['RAILS_SERVE_STATIC_FILES'].present? 
    config.assets.compress = true 
    config.assets.js_compressor = :uglifier 
    config.assets.compile = false 
    config.assets.digest = true 
    config.log_level = :debug 
    config.i18n.fallbacks = true 
    config.active_support.deprecation = :notify 
    config.log_formatter = ::Logger::Formatter.new 
    config.active_record.dump_schema_after_migration = false 

Oto szef application.css.scss:

@import "bootstrap.min.css"; 
@import "bootstrap-theme.min.css"; 

@import "simple_form.css.scss"; 
@import "user_menus.css.scss"; 

W application.js, ma:

//= require bootstrap.min 

Oto wyjściowy ls dla publicznych/aktywa/na serwerze produkcyjnym:

application-05cf37813d76c2bd659271403789374cc118f1a4e616ec220969577b79ff6514.css 
application-375b4b5d8fc285716f4fdca966aa960912efe8292242df8f1a60b99d5caa4b02.js 
authentify 
banquet_coursex 
banquetx 
biz_workflowx 
commonx 
glyphicons-halflings-regular-5d234508037dc13a419ef6ce48f3fc73dbb477f1a162c052b872182b494e626e.svg 
glyphicons-halflings-regular-bd18efd3efd70fec8ad09611a20cdbf99440b2c1d40085c29be036f891d65358.ttf 
glyphicons-halflings-regular-f495f34e4f177cf0115af995bbbfeb3fcabc88502876e76fc51a4ab439bc8431.eot 
glyphicons-halflings-regular-fc969dc1c6ff531abcf368089dcbaf5775133b0626ff56b52301a059fc0f9e1e.woff 
jquery-ui 
searchx 
state_machine_logx 
user_manualx 
user_menus-7c46e17f4172c2a954eeaf85e80b4e030d1ed0fb3927288bbe07eeb4fb8cbfc5.css 

Porównując z innej aplikacji Rails, to brakuje manifest.json w/aktywów. Próbowaliśmy różnych opcji konfiguracji w config/environment/production.rb bez skutku. Jedyną opcją działającą na serwerze produkcyjnym jest kompilacja na żywo z config.assets.compile = true (niezalecana). Co jest nie tak z naszym kodem, aby spowodować awarię prekompilacji zasobów?

AKTUALIZACJA: ponownie zbudowaliśmy aplikację Rails od podstaw, a problem z aktywami pozostaje bez zmian. Ten problem prekompilacji zasobów może nie mieć nic wspólnego z konfiguracją w config/production.rb' and 'config/initializers/aseets.rb, jak podejrzewamy. Wycofanie wersji bundler i rake nie pomogło. Te same pliki css i js bootstrap zostały użyte w innej aplikacji Rails 4.2 uruchomionej na tym samym serwerze produkcyjnym bez problemu.

+1

Nie mamy robić 'config.assets.precompile + = [ 'startowej. min.js "," b ... "dla zasobów w pobocznej aplikacji/zasobach. To tylko potrzeba dla aktywów zewnętrznych, chyba że nie jest to określone w manifeście. –

+0

'@ maximus', tak, nie włączając tych plików css lub js jawnie w' assets.rb' było to, co zrobiliśmy dla innej aplikacji Rails 4.2, która ma dokładnie takie same zasoby css i bootstrap. Ale nie za pomocą tej aplikacji. Jeśli te bootstrap js/css nie zostaną uwzględnione, to nie zostaną pobrane odciski palców w ogóle po prekompilacji zasobów. – user938363

+0

czy sprawdziłeś to pytanie http: // stackoverflow.com/questions/21519040/rails-4-bootstrap-set-up-assets –

Odpowiedz

0

Zakładam, że wyraźnie zawarłeś te pliki JS i CSS w szablonie HTML aplikacji?

Nie zostaną w magiczny sposób skompilowane do głównego pliku CSS aplikacji i pliku JS, a podczas odwoływania się do nich z plików erb HTML musisz upewnić się, że używasz pomocników tagów, a nie bezpośrednich ścieżek.

W razie wątpliwości użyj asset_path.

+0

Tak, zawiera je aplikacja Rails. – user938363

0

Plik manifestxxx.json jest generowany po wycofaniu wersji sprockets do wersji 2.12.3 z wersji 3.2.0. Problem został spowodowany zbyt nową wersją klejnotu sprockets, który służy do wstępnego kompilowania zasobów.

16

Jeśli używasz zębatkami 3.x, manifest plik jest teraz nazwie .sprockets-manifest-md5hash.json, stwierdza się w Upgrading Guide

+1

Dla jasności, w powyższej nazwie ścieżki '' 'md5hash''' jest automatycznie wygenerowanym hashem będzie wyglądać jak' '' da5c11 etc etc''' – Obromios

Powiązane problemy