Я делаю собственный генератор, который генерирует новое приложение rails, и делаю это так
require 'thor'
require 'rails/generators/rails/app/app_generator'
class AppBuilder < Rails::AppBuilder
include Thor::Actions
include Thor::Shell
...
end
Проблема в том, как мне добавить новый каталог с исходным кодом (который затем используетсяThor::Actions#copy_file
, Thor::Actions#template
и другие)?Я видел в документации Тора, что Thor::Actions#source_paths
содержит источники (это массив путей), поэтому я попытался переопределить его внутри своего класса (поскольку я включил Thor::Actions
):
def source_paths
[File.join(File.expand_path(File.dirname(__FILE__)), "templates")] + super
end
сдля этого я хотел добавить каталог ./templates
в исходные тексты, сохраняя при этом каталог Rails (вот почему в конце + super
).Но он не работает, он по-прежнему перечисляет исходный путь Rails как единственный.
Я попытался просмотреть исходный код Rails, но не смог найти, как Rails поместил его каталог в исходных путях.И я очень хочу это знать:)