Pomijając odkomentowanie config.autoload_paths (jestem na Railsach 3.1.3), zadziałało dla mnie stworzenie takiego inicjalizatora:
require 'my_module'
include MyModule
W ten sposób mogę wywoływać metody mymodule z dowolnego miejsca i jako metody klasowe Model.mymodule_method
lub jako metody instancjimymodel.mymodule_method
Może jakiś ekspert wyjaśni konsekwencje tego. Teraz używaj go na własne ryzyko.
Edycja: Myślę, że później lepszym rozwiązaniem byłoby:
utwórz inicjalizator w następujący sposób:
require ‘my_module’
W razie potrzeby dołącz moduł, na przykład:
1) jeśli chcesz używać go jako „Metody klasowe”, użyj opcji „rozszerz”:
class Myclass < ActiveRecord::Base
extend MyModule
def self.method1
Myclass.my_module_method
end
end
2) jeśli chcesz używać go jako „Metody instancji”, umieść go w definicji klasy:
class Myclass < ActiveRecord::Base
include MyModule
def method1
self.my_module_method
end
end
3) pamiętaj, że include MyModule
odnosi się do pliku my_module.rb
w ścieżce ładowania, który musi być wymagany jako pierwszy