2009-07-25 11 views
0

Ich schreibe eine Rails App, die einige Module und Methoden über das lib Verzeichnis geladen hat, wir haben auch einige Methoden im Restful Authentication Modul hinzugefügt, jetzt jedes Mal wenn ich mit mongrel Server auf Produktion laufe, bekomme ich diesen Fehler nicht Weil Model-Klassen und Controller-Klassen zwischengespeichert werden, aber in der Entwicklung bekomme ich diesen Fehler, nach dem ersten Mal, also starte ich meinen Server auf Entwicklung und laufe, sobald ich das richtige Verhalten bekomme, aber wenn ich die Seite aktualisiere, bekomme ich diese Null. include error, während es anzeigt, dass jede Methode eine Null zu iterieren bekommt, auch habe ich einige Hausaufgaben gemacht, wie ich die Puts - Methode für alle Methoden für diese Instanz beim Iterieren hinzugefügt habe, ich bekomme keine Methodendefinitionen für Attribute der Tabelle, wie ID, Name, Titel. Ich bin mir nicht sicher,ActiveRecord Fehler .include?

Ich verwende Rails 2.2.2 und Ruby 1.8.7. Server ist Mischling & webrick.

Antwort

1

Diese Situation ist mir passiert, wo ich den Fehler erst nach der Aktualisierung (d. H. Zweiten Aufruf an den Server) erhalten habe.

Möglicherweise haben Sie in Ihrem Verzeichnis /lib ein Modul definiert, das nicht mit der rails-Konvention der Dateibenennung übereinstimmt. Und Sie verwenden die require "filename.rb" Anweisung, um das Modul zu erhalten.

Verwenden Sie stattdessen require_dependency "filename.rb".

Lassen Sie mich wissen, wenn das Problem noch besteht, können wir tiefer suchen.

+0

Ich nehme an, dass dies wahrscheinlich Antwort auf meine Frage sein kann, können Sie bitte weitere Details wie hinzufügen, welche Art von Dateinamen sind nicht erlaubt. –

+0

hey Ich habe versucht, require_dependency, aber nicht das Problem zu lösen, auf den ersten Blick lädt es alles richtig, aber in der zweiten Zeit, nach der Aktualisierung bekomme ich method_missing Fehler. Ich habe versucht, alle Dateien von lib vor Serverstart zu laden. –

+0

Können Sie bitte den Namen der Klassen und Dateinamen angeben? Ein Stapel Fehler wird auch hilfreich sein. Öffnen Sie 'script/console' und führen Sie " lib/"+" Module :: ClassName ".underscore um zu wissen, wie der Dateiname für eine Klasse oder ein Modul sein soll. –

1

Sie sollten in die Dateien log/development.log oder log/production.log schauen (abhängig von der Umgebung, die Sie untersuchen). Die erste Zeile des Stacktrace zeigt die Fehlerquelle an. Versuchen Sie, den Fehler dort zu finden oder die relevante Zeile (dies und einige oben) zu buchen.

Verwandte Themen