2013-10-30 20 views
7

Wenn lokal Rails Entwicklung 3.2, ich die folgenden Fehlermeldung in regelmäßigen Abständen erhalten:Rails 3.2: Routing Helfer in Ansichten brechen lokal nach anderen Fehlern

In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers 

Dieser Fehler wird von meinen Ansichten in einem sehr einfachen link_to Anruf geworfen , wo diese Routing-Helfer automatisch eingebunden sind und keinen solchen Fehler auslösen sollten. Ich glaube nicht, der Fehler auftritt, wo es heißt, aber ich werde ein Beispiel Fehler Dump der Vollständigkeit halber schreiben:

Completed 500 Internal Server Error in 233ms 

ActionView::Template::Error (In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers): 
    1: <%= form_tag products_path do %> 

    app/views/layouts/_search_banner.html.erb:1:in `_app_views_layouts__search_banner_html_erb___3528929561490713150_70155778060240' 
    app/views/pages/new.html.erb:1:in `_app_views_pages_new_html_erb__29715639072237790_70155789748980' 

Bevor es scheint, ich bin in der Lage richtig alle meine Seiten zu betrachten; nachdem es angezeigt wird, schlagen dieselben Seiten, die soeben erfolgreich geladen wurden, mit demselben Fehler fehl. Sobald der Fehler auftritt, kann ich den lokalen Rails-Server nur noch beenden und neu starten. Sobald ich meinen Server neu starte, verschwindet der Fehler und alles läuft normal weiter.

Auch dieser Fehler erscheint nur lokal auf meinem Computer - der Code ist auf Heroku bereitgestellt und dieser Fehler ist nicht in Monaten der Bereitstellung erschienen, und keine anderen Teammitglieder, die auf dem gleichen Code arbeiten, haben den Fehler gesehen. EDIT: andere Teammitglieder, die auf dem gleichen Code arbeiten tun sehen den gleichen Fehler.

Obwohl dieser Fehler manchmal ohne erkennbare Ursache aus dem Nichts auftaucht, gibt es ein paar Trends, die ich bemerkt habe. Es erscheint häufig unmittelbar nach einem anderen Fehler. Es ist auch wahrscheinlicher, dass es angezeigt wird, wenn der Rails-Server einige Zeit im Leerlauf war, ohne dass Seiten geladen wurden.

EDIT: Weitere Informationen Rails-Version: 3.2.13 Ruby-Version: 2.0.0

Der vollständige Stack-Trace kann durch das Schreiben von Code here

ich erreichte die Fehler gefunden werden, ein werfen Fehler in einer Aktion, Senden einer Anfrage an diese Aktion und dann Versuch, auf eine andere Seite in der Anwendung zuzugreifen. Interessanterweise war der erste Fehler, den ich zu verwenden versuchte, eine Division durch Null, die den Fehler nicht verursachte. Als Nächstes habe ich einen Fehler "Undefinierte Methode für Array []" erstellt, der zu dem hier beschriebenen führte.

EDIT: Deprecation Warnung für Rails 2.3-Stil Plugins Wenn ich Heroku einsetzen, bekomme ich folgende Fehlermeldung:

DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! 
Support for these plugins will be removed in Rails 4.0. 
Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. 
See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. 
(called from <top (required)> at /tmp/build_175439d1-f385-43bd-bf52-ebcae817e70b/Rakefile:7) 

Dieser Fehler in meinem Rakefile auf der Linie MyApp::Application.load_tasks geworfen wird. Ich habe keine Dateien in meinem Verzeichnis vendor/plugin.

+0

auch, im Gegensatz zu [anderen ähnlichen SO-Posts] (http://stackoverflow.com/questions/17553326/call-to-expire-fragment-raises-to-use-url- für-Sie-müssen-einschließen-routing-helpe?rq = 1), habe ich vor kurzem nicht die rails version gewechselt. – hunteros

+0

Haben Sie versucht, Ruby und Rails neu zu installieren, da diese Ausnahme nur in Ihrer lokalen Umgebung auftritt? Was ist die Version von Ruby? Können Sie eine vollständige Ablaufverfolgung buchen? Für Ihre Referenz erhebt sich diese Ausnahme hier: https://github.com/rails/rails/blob/e20dd73df42d63b206d221e2258cc6dc7b1e6068/actionpack/lib/abstract_controller/url_for.rb – peresleguine

+0

@peresleguine Ich habe Ruby-Version und vollständige Spur auf die Frage hinzugefügt. – hunteros

Antwort

0

ersetzt, soweit ich es ist ein Problem mit dem Schienen-Version zu sehen. Siehe die Kommentare zu diesem Restriktionsproblem: https://github.com/rails/rails/issues/11782#issuecomment-22222166

+0

Wir aktualisieren auf Rails 4, also hoffe ich, dass es nur die Rails-Version ist. Aber wenn es ein Problem rein mit Rails 3.2.13 ist und nichts mit Edelsteinen oder anderer Konfiguration zu tun hat, hätte ich gedacht, dass mehr Leute in diese ... – hunteros

+0

so hineingeraten wären? Sie wollen mehr Probleme mit denen Sie verlinken können? oder was genau willst du sagen? wie das, dh? https://github.com/rails/rails/pull/9248 – phoet

+0

der Link zur Antwort war der erste, den ich dieses Problem gesehen habe, das in einem Vakuum mit nur Schienen auftritt, die das Problem verursachen. Andere Links ähneln denen in deinem Kommentar, die sich mit dem Thread-Safe-Modus befassen (den afaik in meiner App nicht verwendet). Mein Punkt ist, dass ich mehr SO-Fragen, Github-Probleme usw. erwarten würde, wenn es rein Rails wäre. Ich glaube, dass das Beheben der Rails-Version den Fehler beseitigen wird, aber ich möchte sicher sein, dass wir das zugrunde liegende Problem abfangen - möglicherweise [das Rails-Commit] (https://github.com/rails/rails/commit/6ab1a9540b73555f2cabb54860b9ca17e8f226cb) verbunden mit von Ihrem Antwortlink – hunteros

0

Odd ...

Versuchen Sie, diese

<a href="<%= root_path %>" class="nav-link"><%= image_tag "image.svg", onerror: "this.src='image.png'" %></a> 

mit diesem

<%= link_to(image_tag("image.svg", onerror: "this.src='image.png'"), root_path, class: "nav-link") %> 
+0

leider hat das Markup wenig damit zu tun ... Dieses Problem tritt auf allen Seiten auf, unabhängig von dem HTML/Ruby, der die Links generiert (und die 'link_to'-Syntax wird auf anderen Seiten verwendet und löst trotzdem den Fehler aus). Ich bezweifle, dass diese bestimmte Zeile uns sehr viel über das Problem erzählen kann. – hunteros

+0

Ich war mir nicht sicher, ob diese bestimmte Verbindung den Fehler verursachte oder nicht. Sehr merkwürdig ... Entschuldigung, ich konnte nicht helfen. – omarvelous