2016-10-30 6 views
1

Hier ist meine press_post/updater.rb DateiGibt es eine Möglichkeit, eine PORO-Klasse ohne Modul Namensraum

class PressPost::Updater 
    def say_something 
    p 'hello world' 
    end 
end 

Aber wenn ich die Dinge laufen bekomme ich diese ‚: nicht initialisierte Konstante PressPost (Nameerror)

Ich weiß, dass andere Antworten haben sich berührt .. Man ging so weit, um ein leeres Modul in der Klassendatei in der ersten Zeile zu machen. Das scheint fehlerhaft.

Ich weiß, dass es einen Weg gibt, diesen zusätzlichen Code nicht zu machen. Ich glaube, es ist eine Konfiguration oder etwas, aber ich weiß nicht, wie ich das erreichen soll.

Hinweis .. Ich möchte, dies zu tun, weil diese in einem Unterverzeichnis sind, und es ist sehr viel einfacher, den Code für PressPost Suche :: Updater als Updater

+0

Siehe auch http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#nesting und http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#nesting-and-qualified-constants. –

Antwort

-1

nicht, ob dies ist, was Sie nach, aber ich immer wickelt die Klasse in ein Modul würde:

module PressPost 
    class Updater 
    def say_something 
     p 'hello world' 
    end 
    end 
end 

Dies zu Ihrem aktuellen Code nicht vollständig entsprechen, wie jemand out in this answer Punkte, aber es ist sauberer, was ich denke, ist das, was Sie nach.

+0

Würden Sie jede einzelne der Klassen in den Ordner in Modulen einbinden? Ich mag es nicht, alles in ein Modul zu packen ... macht die Suche nach der Klassendefinition von PressPost :: Updater.new Objekten zu einem PITA. – baash05

+0

@ baash05 Wenn Sie keine bessere Antwort erhalten, wird 'ack --files-with-matches Updater' Ihnen zumindest sagen, welche Dateien/Pfade Ihre Klasse enthalten, damit Sie Ihre Suche weiter einschränken können. –

Verwandte Themen