Вы можете использовать инициализаторы для пользовательского кода инициализации, но если вы обнаружите, что добавление в существующий файл с генератором подходит, вот как это делают встроенные генераторы:
# Excerpted from template_runner.rb
# Make an entry in Rails routing file config/routes.rb
def route(routing_code)
log 'route', routing_code
sentinel = 'ActionController::Routing::Routes.draw do |map|'
in_root do
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
"#{match}\n #{routing_code}\n"
end
end
end
Как видите, он просто выясняет, куда они хотят, чтобы код шел (строка sentinal
), и вставляет новую строку сразу после нее.