Rails 3.2 undefined method `key?' for nil:NilClass
Für einige Grund, warum ich begann, um diese Fehler nach der Umstellung auf Rails 3.2. Ich denke, es hat etwas zu tun mit acl9 plugin, die ich habe versucht neu zu installieren, aber nichts hat sich geändert.
Zog ich die plugins lib/plugins Hinzugefügt und Initialisierung config/Initialisierungen aber wieder die gleiche Fehlermeldung.
Ich sah zur Lösung bei acl9 repo auf Github, konnte aber dort nichts gefunden. Vielleicht ist es nicht acl9, nachdem alle.
Ich habe Büroklammer, acl9, authlogic installiert.
NoMethodError (undefined method `key?' for nil:NilClass):
actionpack (3.2.1) lib/action_controller/metal/hide_actions.rb:36:in `visible_action?'
actionpack (3.2.1) lib/action_controller/metal/hide_actions.rb:18:in `method_for_action'
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:14:in `method_for_action'
actionpack (3.2.1) lib/action_controller/metal/compatibility.rb:61:in `method_for_action'
actionpack (3.2.1) lib/abstract_controller/base.rb:115:in `process'
actionpack (3.2.1) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.1) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.1) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `call'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `dispatch'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:30:in `call'
journey (1.0.3) lib/journey/router.rb:68:in `block in call'
journey (1.0.3) lib/journey/router.rb:56:in `each'
journey (1.0.3) lib/journey/router.rb:56:in `call'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:589:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.1) lib/rack/etag.rb:23:in `call'
rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call'
activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__3140920687338355213__call__3168118505970967148__callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.1) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.1) lib/rack/lock.rb:15:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
railties (3.2.1) lib/rails/engine.rb:479:in `call'
railties (3.2.1) lib/rails/application.rb:220:in `call'
rack (1.4.1) lib/rack/content_length.rb:14:in `call'
railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
/Users/project/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/Users/project/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/Users/project/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
EDIT (GELÖST): Es dauerte eine ganze Weile, um herauszufinden, und ich bin immer noch nicht ganz sicher, was passiert. Ich denke, es hat zu tun mit acl9 Unterstützung für Rails 3.1+, Aber am Ende nahm ich die acl9 code von github und alles plötzlich funktioniert.
InformationsquelleAutor der Frage Stpn | 2012-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ein Neuling auf RoR und habe den gleichen Fehler beim Durchlaufen RoR "Getting started guide".
Klingt vielleicht albern, aber andere vielleicht den gleichen Fehler machen wie ich bin, also posten, was ich bemerkte, in RoR von Neuling die Augen,
Hinweis "Präsenz", sollte es "Präsenz". Jetzt die Schiene wirft einen Syntax-Fehler
Aber wenn Sie "Aktualisieren" Ihres Browsers, versteckt die syntax-Fehler, stattdessen gibt
Scheint es Rails caching ist der Schuldige. 🙂
InformationsquelleAutor der Antwort Lakthinda Ranasinghe
Kann dies nicht Ihr Problem, wie es klingt, wie du bereits funktionierenden code um mit zu beginnen, aber für die Zukunft die Referenz für die anderen, ich lief in den gleichen Fehler durch einen einfachen Tippfehler in meinem Modell-code, etwa so:
sollte:
Beachten Sie die "maximum" vs. ":maximale" -- dies führte in der exakten null-Fehler oben, und ging Weg, wenn ich Feste, dass Tippfehler.
InformationsquelleAutor der Antwort Brian Moeskau
Nicht sicher, ob dies der gleiche Fehler, aber ich hatte ein ähnliches Problem. Auf einer ersten laden ein buggy-Modell, Schienen antwortet mit einer Routing-Fehler und dann für die Anfragen danach, antwortet er mit
undefined method 'key?' for nil:NilClass
und die gleiche stack-trace.Sieht dies ein Fehler zu sein mit Rails-Klasse cachingaber umgehen kann, durch die Aktivierung der Klasse-caching deaktivieren oder auf ändern-Klasse nachladen.
oder
InformationsquelleAutor der Antwort Laknath
Ich Stimme mit bmoeskau, dass Sie sollten überprüfen Sie Ihre Modell-code für bugs. Zu meiner überraschung, Modelle offenbar manchmal geladen, während die routing phase. Ich entdeckte:
undefined method `key?' for nil:NilClass
Fehler oft erst Auftritt, nachdem ich das erste mal auf die Seite zugreifen.Soweit ich das sagen kann, was passiert ist
app/models/example.rb
/examples
app/controllers/examples_controller.rb
aber es ersten Lastenapp/models/example.rb
. Ich weiß nicht, warum es lädt das Modell, aber die Wirkung ist, ich Vermutung: Der Fehler in der Modell-hält ein Teil der routing-code korrumpieren, was den Aufbau eines cache-Routen.No route matches [GET] "/examples"
(um fair Zu sein Schienen, diese zusätzliche Komplikation zu sein scheint, die Schuld nicht mitresources :examples
um die route. Die folgenden geschieht unabhängig)./examples
app/controllers/examples_controller.rb
aber die Routen cache beschädigt ist (eine variable istnil
), da der code setzt, die nie ausgeführt werden.Dieser Letzte Punkt ist sehr ärgerlich, weil das problem, dass es verursacht (die schlechten code in das Modell) gar nicht ausgeführt wird.
InformationsquelleAutor der Antwort redevelops