Railsのコードを追いかけていたら、railties/lib/rails/generators/rails/generator/generator_generator.rb
なるファイルを発見しました。
このフォルダ内にはrails generate
コマンドが集めてあるので、generator_generator.rb
ということは、これを使えばgeneratorを生成出来そうです。
と言うわけで、
rails g generator hoge
Running via Spring preloader in process xxxx
create lib/generators/hoge
create lib/generators/hoge/hoge_generator.rb
create lib/generators/hoge/USAGE
create lib/generators/hoge/templates
invoke test_unit
create test/lib/generators/hoge_generator_test.rb
おお、動いた。
作られるファイルはこんな感じ。
lib/generators/hoge/hoge_generator.rb
class HogeGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
end
Description:
Explain the generator
Example:
rails generate hoge Thing
This will create:
what/will/it/create
test/lib/generators/hoge_generator_test.rb
require 'test_helper'
require 'generators/hoge/hoge_generator'
class HogeGeneratorTest < Rails::Generators::TestCase
tests HogeGenerator
destination Rails.root.join('tmp/generators')
setup :prepare_destination
# test "generator runs without errors" do
# assert_nothing_raised do
# run_generator ["arguments"]
# end
# end
end
lib/generators/hoge/hoge_generator.rb
にコマンドを書いていけばいいらしい。
ファイルを生成する場合、テンプレートはlib/generators/hoge/templates
に入れればいいらしい。
…ところで、何に使えばいいんだろうか…