2015-06-18 9 views
15

Hier ist die App/Assets/für eine Rails 4.2 App.Rails 4 - NO manifest.json nach Anlagen vorkompilieren auf Produktionsserver

enter image description here

Es gibt 3 Schopf aus dem Sumpf js und CSS-Dateien. Nach der Bereitstellung der Produktion (ubuntu 12,1), wurde auf dem Server durchgeführt Vermögenswerte precompile (unter suburi eingesetzt):

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

Hier die production.rb ist:

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 

Hier ist der Kopf application.css.scss:

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

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

In application.js, es hat:

//= require bootstrap.min 

Hier ist die Ausgabe von ls für öffentlich/assets ist/auf Produktionsserver:

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 

Durch die Zusammenarbeit mit anderer Rails-Anwendung zu vergleichen, ist es manifest.json unter/Vermögen fehlt. Wir haben verschiedene Konfigurationsoptionen in config/environment/production.rb ohne Erfolg versucht. Die einzige Option, die auf dem Produktionsserver funktioniert, ist die Live-Kompilierung von config.assets.compile = true (nicht empfohlen). Was ist falsch an unserem Code, damit die Vorkompilierung von Assets fehlschlägt?

AKTUALISIERUNG: Wir haben die Rails-App von Grund auf neu aufgebaut und das Problem mit den Assets bleibt gleich. Dieses Asset-Vorkompilierungsproblem hat möglicherweise nichts mit der Einrichtung in config/production.rb' and 'config/initializers/aseets.rb zu tun, wie wir vermuten. Rollback Version von bundler und rake hat nicht geholfen. Dieselben Bootstrap-CSS- und JS-Dateien wurden in einer anderen Rails 4.2-App verwendet, die auf demselben Produktionsserver ohne das Problem ausgeführt wurde.

+1

Wir müssen das nicht tun 'config.assets.precompile + = [ 'Bootstrap. min.js ',' b ... 'für Assets in Side App/Assets. Dies ist nur für externe Vermögenswerte erforderlich, sofern sie nicht im Manifest angegeben sind. –

+0

'@ maximus', ja, ohne die css- oder js-Datei, die explizit in' assets.rb' enthalten ist, was wir für eine andere Rails 4.2-App getan haben, die genau dieselben CSS- und Bootstrap-Assets hat. Aber nicht mit dieser App. Wenn diese Bootstraps js/css nicht enthalten sind, werden sie nach dem Vorkompilieren der Assets überhaupt nicht erfasst. – user938363

+0

haben Sie diese Frage http: // stackoverflow überprüft.com/fragen/21519040/rails-4-bootstrap-set-up-assets –

Antwort

0

Ich nehme an, dass Sie diese JS- und CSS-Dateien explizit in Ihre HTML-Vorlage für Anwendungen einfügen?

Sie werden nicht magisch in der Hauptanwendung CSS und JS-Datei kompiliert, und Sie müssen sicherstellen, dass Sie die Tag-Helfer, nicht direkte Pfade verwenden, wenn sie von HTML-erb-Dateien verweisen.

Verwenden Sie im Zweifelsfall Asset_Pfad.

+0

Ja, Rails App enthält sie. – user938363

0

Die Datei manifestxxx.json wird generiert, nachdem die Version sprockets von 3.2.0 auf 2.12.3 zurückgesetzt wurde. Das Problem wurde durch eine zu neue Version von Gem sprockets verursacht, die zum Vorkompilieren von Assets verwendet wird.

16

Wenn Sie Ritzel 3.x verwenden, ist die Manifest-Datei jetzt.sprockets-manifest-md5hash.json genannt, wird in der angegebenen Upgrading Guide

+1

Nur um klar zu sein, in dem obigen Pfadnamen, '' 'md5hash''' ist der automatisch generierte Hash wird aussehen wie' '' da5c11 etc etc''' – Obromios

Verwandte Themen