Скажем, у меня есть некоторые пользовательские классы, которые не относятся к моделям, контроллерам и т. Д., Я должен поместить это в/lib правильно?Вопросы по загрузке Rails
In rails < 3 Я бы добавил этот каталог в мой loadpath и в rails 3+ я бы добавил это в свой autoload_path. Это верно?
Теперь скажите, что у меня есть классы, которые расширяют уже определенные классы. Где я должен положить это так, чтобы он запускался при запуске. Например, я хочу добавить метод 'foo' в String.
class String def foo 'foo; end end
Куда я должен класть этот класс так, чтобы он был определен при запуске?
Еще одна странная ошибка, с которой я сталкиваюсь, когда я пытаюсь использовать классы пространства имен в lib.
module MyProject class Foo end end
Теперь в консоли:
ruby-1.9.2-p136 :004 > MyProject::Foo LoadError: Expected /Users/me/workspace/my_project/lib/foo.rb to define Foo from /Users/rob/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:492:in `load_missing_constant' from /Users/rob/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:183:in `block in const_missing'
я получаю эту ошибку. Как загрузить этот файл?
Сумки на самом деле были опечаткой. Все еще получаю эту ошибку. Есть ли где-нибудь еще я могу поместить файлы, которые я хочу загрузить с помощью автозагрузки, как инициализаторы ?. Не уверен, почему Rails3 называет его автозагрузкой, когда он только автозагружается, если константа не определена – HelpMe
Наряду с autoload_paths вы можете использовать autoload_once_paths, которые позволяют вам определять каталоги, которые будут загружаться только один раз при запуске Rails. Убедитесь, что между тестированием вы полностью перезагружаете консоль или приложение rails - даже если вы находитесь в разработке, поскольку пути инициализаторов и autoload_only_once будут загружаться только один раз - даже в процессе разработки. –
Вещь, которая действительно запутывает, заключается в том, что «автозагрузка» на самом деле не загружает ничего. Он просто добавляет путь к классам. Все в конфигурациях/инициализаторах фактически загружается автоматически. Ie запускается при запуске. – HelpMe