Frage

Ich baue einen Motor ich als Edelstein gebündelt haben (gmaps4rails). Ich kopierte die / public meinem Motor im / public meine Rails-Anwendung.

Alles funktioniert gut in der Entwicklung, aber die eigentlichen Arbeit in der Produktion. Es statische Vermögenswerte erscheint (von meinem Motor & mein Haupt-app) nicht gefunden

Die Protokolle geben die folgende (nur ein Auszug):

Started GET "/javascripts/application.js?1286294679" for 127.0.0.1 at Wed Nov 24 00:22:20 +0100 2010

ActionController::RoutingError (No route matches "/javascripts/application.js"):


Rendered /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/gems/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.1ms)


Started GET "/stylesheets/gmaps4rails.css?1290554221" for 127.0.0.1 at Wed Nov 24 00:22:20 +0100 2010

ActionController::RoutingError (No route matches "/stylesheets/gmaps4rails.css"):

Ich habe ein paar Dinge getan:

  1. in meiner App production.rb, habe ich:

    config.serve_static_assets = true

    Dies löst das Problem aber nicht elegant genug, würde ich es für falsch halten möchten und fügen Sie Konfiguration im Motor:)

  2. folgte ich dem Rat hier ohne Erfolg.

War es hilfreich?

Lösung

Aus Performance Grunde Vorleger statischer Vermögenswerte ist im Produktionsmodus deaktiviert. Ihr Webserver konfiguriert werden soll Thesen Vermögen zu dienen.

Sehen Sie in diesem Diskussion wenn Ihre verwenden nginx als Webserver.

Andere Tipps

In Rails 3.x versuchen, diese zu setzen in config / Umgebungen / production.rb

  

config.serve_static_assets = true

Mit dem Standard-Rails vorausgesetzt, dass Sie werden mit einem Vermögen Server (lightttp, nginx oder Apache)

In Ihrem Motor ersetzen:

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end

mit:

initializer "static assets" do |app|
      app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
end

Haben Sie versucht, diese zu Ihrer Rails :: Motorklasse:

initializer "static assets" do |app|
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end

Dies wird in der Gem / public-Verzeichnis mit der App zur Laufzeit zusammenführen.

Ich hatte ein ähnliches Problem, eine Rails 3.1 Motormontage. Ich erhielt leer Vermögenswerte in der Stufe und Produktion.

fand ich eine Lösung unter http://jonswope.com/2010/07/25/rails-3-engines-plugins-and-static-assets/comment-page-1/#comment-87 und zwickte es zu Anzug Rails 3.1 Asset-Standorte:

initializer "static assets" do |app|
  app.middleware.insert_before ::Rack::Lock, ::ActionDispatch::Static, "#{root}/app/assets"
end

Ich stelle mir gibt es eine elegantere Art und Weise, aber meine Bemühungen heute brachte nichts erheblich.

Ich weiß nicht viel über die Art und Weise, sind Edelsteine ??verpackt / gemacht. Aber warum können nicht kopieren Sie die Bilder / js / css Sachen Ihres gems Öffentliche Ordner in den Apps für öffentliche Ordner? Ich tat genau das und es funktionierte für mich. Ist das nicht das getan, was?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top