Jbuilder の generator を無効にする
故あってサンプルコードをたくさん作る必要があり、JBuilderの生成するコードがじゃまになる(けど使うので消せない)ときがあった。 そんなときに行った対策を簡単にまとめてみる。
.json.jbuilder ファイルの生成を無効化
config/application.rb
に以下を記述。
config.generators do |g| g.jbuilder = false end
経験上、他に不要なものも併せて以下のように記述することが多い。
config.generators do |g| g.system_tests = nil g.jbuilder = false g.assets = false g.helper = false end
コントローラのテンプレート上書き
コントローラでは例えば以下のように、content type による振り分けが生成される。
# POST /users # POST /users.json def create @user = User.new(user_params) respond_to do |format| if @user.save format.html { redirect_to @user, notice: 'User was successfully created.' } format.json { render :show, status: :created, location: @user } else format.html { render :new } format.json { render json: @user.errors, status: :unprocessable_entity } end end end
これは以下でRails標準のテンプレートが上書きされるため。
https://github.com/rails/jbuilder/blob/master/lib/generators/rails/templates/controller.rb
無効にするには、以下の手段がある。
- Rails標準のテンプレートを、
lib/rails/generators/rails/scaffold_controller/templates/controller.rb
にコピーする - 生成するときだけ一時的に Gemfile から jbuilder をコメントアウトする