LoginSignup
6
6

More than 5 years have passed since last update.

Railsの余り使われてなさそうな機能 generator_generator

Last updated at Posted at 2016-01-30

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に入れればいいらしい。

…ところで、何に使えばいいんだろうか…

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6