Neben dem Auskommentieren von config.autoload_paths (I'm on Rails 3.1.3) funktionierte für mich die Erstellung eines Initialisierers wie folgt:
#config/initializers/myapp_init.rb
require 'my_module'
include MyModule
Auf diese Weise kann ich mymodule-Methoden von überall und als Klassenmethoden Model.mymodule_method
oder als Instanzmethoden aufrufenmymodel.mymodule_method
Vielleicht kann ein Experte die Auswirkungen erklären. Verwenden Sie es jetzt auf eigenes Risiko.
Edit: Danach denke ich, ein besserer Ansatz wäre:
Erstellen Sie einen Initialisierer wie folgt:
#config/initializers/myapp_init.rb
require ‘my_module’
Fügen Sie das Modul bei Bedarf wie folgt hinzu:
1) Wenn Sie es als "Klassenmethoden" verwenden möchten, verwenden Sie "Erweitern":
class Myclass < ActiveRecord::Base
extend MyModule
def self.method1
Myclass.my_module_method
end
end
2) Wenn Sie es als "Instanzmethoden" verwenden möchten, fügen Sie es in die Klassendefinition ein:
class Myclass < ActiveRecord::Base
include MyModule
def method1
self.my_module_method
end
end
3) Denken Sie daran, dass include MyModule
sich dies auf eine Datei my_module.rb
in Ihrem Ladepfad bezieht, die zuerst benötigt werden muss