2012-04-10 10 views
9

Ich stelle eine Rails 3.2 App auf Heroku bereit. Ich bin vorkompilieren Vermögenswerte lokal wie https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar.Warum wird Heroku "devise/sessions.js" nicht vorkompiliert?

Aber ich bin immer

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

Hat jemand anderes dieses begegnet?

Was ist der richtige Weg, um zu gewährleisten, dass Devise-Javascripts vorläufig sind.

Danke!

+0

Sind Sie auf dem Zeder-Stack? – sethvargo

+0

Hallo sethvargo. ja, ich bin auf Cedar –

Antwort

6

Vielen Dank für alle Vorschläge. Nach ein bisschen Nachdenken merke ich, dass das Problem darin lag, wie die App konfiguriert wurde, um Controller-spezifisches JavaScript aufzurufen. Falls jemand anderes auf dieses Problem stößt, hier ist, was ich getan habe.

Ich hatte Controller-spezifische .js über das folgende Tag in der Layout-Datei geladen.

<%= javascript_include_tag "application", params[:controller] %> 

Problem ist, das schlägt fehl, wenn eine bestimmte cotroller_js-Datei nicht existiert. In meinem Fall schlug die Anmeldeseite fehl, da ich keine Datei "devise/sessions.js" erstellt hatte.

Ich könnte diese Datei erstellt haben, aber ich fühlte, dass dies ein chaotischer Ansatz war. Ich mag die Idee nicht, viele leere Akten herumliegen zu haben.

Stattdessen nenne ich ausdrücklich steuerungsspezifische javascripts aus der Sicht

<% javascript 'controller.js' %>  

Unter Verwendung der folgenden Helfer in application_helpers

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

scheint bisher zu funktionieren gut.

Nochmals vielen Dank für die Vorschläge.

+3

Für diejenigen, die daran interessiert sind, eine js-Datei hinzuzufügen, können Sie in 'app/assets/javascripts' einen' devise'-Ordner erstellen und dann die Datei 'sessions.js' dort einfügen. Praktisch, wenn Sie die Anmeldeseite auffrischen möchten. NB: Sie müssen die Assets einzeln auflisten: http://stackoverflow.com/questions/7425929/rails-3-1-strategie-for-precompiling-controller-specific-js-assets – brookr

+0

Vielen Dank, dies ist die Antwort, nach der ich seit Stunden gesucht habe! –

3

Versuchen Sie zu laufen rake assets:precompile.


versuchen, dies zu Ihrer config/Umgebungen/production.rb fügte hinzu:

config.assets.precompile += %w(*.css *.js) 

Oder Ihre Datei angeben.

+0

Hallo Justin D. Ich schätze Ihre Antwort, vielen Dank. Dies hätte funktionieren müssen (hätte funktioniert, wenn ich die erforderliche .js-Datei erstellt hätte), aber nachdem ich über Nacht über dieses Problem nachgedacht habe, wurde mir klar, dass das Problem darauf zurückzuführen war, wie ich Controller-spezifische Javascripte aufgerufen habe. Ich habe eine Antwort hinzugefügt, um anderen zu helfen, die auf ein ähnliches Problem stoßen könnten. –

5

Meine Lösung:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
Verwandte Themen