У меня есть engine style Rails plugin, из которого я могу создать драгоценный камень, используя Jeweler. Но когда я требую его в моей среде Rails (или erb), модели внутри плагина не загружаются. Я следил за несколькими учебниками и читал все о предмете.Как воссоздать плагин Rails (двигатель)?
# environment.rb
config.gem 'myengine'
# in irb
require 'myengine'
Я распаковал драгоценный камень и подтвердил, что все файлы присутствуют. Мой init.rb был перемещен в новую папку под названием «rails» as per. Все файлы в 'lib' автоматически добавляются в $ LOAD_PATH, поэтому require 'myengine'
работает lib/myengine.rb
. Я проверил это, поставив puts 'hello'
внутри.
Это связано с физическим присутствием плагинов в известном месте, где Rails может добавлять все модели, контроллер и т. Д. К соответствующим load_paths? Нужно ли повторять это вручную при использовании драгоценного камня?
Может ли gemspec require_paths быть способом добавления дополнительных путей, кроме lib? Я предполагаю, однако, что Rails не просто требует каждый отдельный файл, но загружает их по требованию, следовательно, необходимо, чтобы имя файла и имя класса совпадали?
В режиме разработки это работает только для первого запроса. – Kris