はじめに
本記事はRails ジェネレータとテンプレート入門を参考にしています。
勉強中のため、誤りやもっといいやり方があるかも知れません。
その場合は、ご指摘いただけますと幸いです。
また、可能な限りわかりやすく記載するつもりですが、不明瞭な点、追記した方がいい点などがございましたら、合わせてご教授ください。
この記事の目的
ジェネレーターの作成方法を備忘録を兼ねて残しておきます。
今回のジェネレーターでは、コマンドを叩いてテンプレートファイルからファイルを作成することを目標とします。
具体的には、下記のコマンドを叩いて、controllers/hoge_hoge_controller.rb
を作成しようと思います。
bin/rails generate hoge hoge_hoge
ジェネレーターとは
データやプログラムコードを自動的に生成するプログラムのことです。
テンプレートを作成
コピーするための雛形を下記のように作成しておきます。
lib/generators/hoge/templates/hoge.rb.erb
class <%= file_name.camelize %>Controller < ApplicationController
def create
# ここに処理を書く
end
def edit
# ここに処理を書く
end
end
ジェネレーターを作成
file_name を引数と取るようにし、ファイル作成の処理を記載します。
lib/generators/hoge/hoge_generator.rb
require 'rails/generators'
class DataMigrationGenerator < Rails::Generators::Base
argument :file_name, type: :string, default: 'default_file_name', banner: 'file_name'
source_root File.expand_path('templates', __dir__)
def create_initializer_file
template 'hoge.rb.erb', "controllers/#{file_name}_controller.rb"
end
end
実行結果
controllers/hoge_hoge_controller.rb
class HogeHogeController < ApplicationController
def create
# ここに処理を書く
end
def edit
# ここに処理を書く
end
end