はじめに
簡単な社内用のシステムをRailsで作ろうと思いたち、簡単なアプリケーションなのでscaffold
で自動生成してから修正することにした。
ただデフォルトのままだと作成されるコードは見た目的に今いちなので、デフォルトのtemplate
ではなく自前のtemplate
からviewsなどを作る方法を調べたのでメモしておく。
環境
- OS: OS X 10.11.1
- Ruby: 2.2.3
- Rails: 5.0.0.1
手順
デフォルトのscaffoldで作成する元となるViewsのファイルは $RAILS_HOME/vendor/bundle/ruby/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/erb/scaffold/templates/
にある。
gemのインストール先を
$RAILS_HOME/vendor/bundle
にした場合。
ここではその元となるファイルを変更する方法を記載する。
既存のtemplateをコピー
一からtemplate
を作成するのは面倒なので以下のコマンドでデフォルトのtemplate
を作成する。
$ bundle exec rails app:templates:copy
上記コマンドを実行すると lib/templates
にデフォルトのtemplateがコピーされる。
$ tree lib/templates
lib/templates
├── erb
│ ├── controller
│ │ ├── templates
│ │ │ └── view.html.erb
│ │ └── view.html.erb
│ ├── mailer
│ │ ├── templates
│ │ │ ├── view.html.erb
│ │ │ └── view.text.erb
│ │ ├── view.html.erb
│ │ └── view.text.erb
│ └── scaffold
│ ├── _form.html.erb
│ ├── edit.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ ├── show.html.erb
│ └── templates
│ ├── _form.html.erb
│ ├── edit.html.erb
│ ├── index.html.erb
│ ├── new.html.erb
│ └── show.html.erb
└── rails
├── assets
│ ├── javascript.js
│ ├── stylesheet.css
│ └── templates
│ ├── javascript.js
│ └── stylesheet.css
├── controller
│ ├── controller.rb
│ └── templates
│ └── controller.rb
├── helper
│ ├── helper.rb
│ └── templates
│ └── helper.rb
└── scaffold_controller
├── api_controller.rb
├── controller.rb
└── templates
├── api_controller.rb
└── controller.rb
16 directories, 28 files
$
templateの修正
自分の好きなように template
を変更する。
参照先変更
config/application.rb
を変更してtemplate
のpath
を作成したtemplate
のものに変更する。
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module StockViewer
class Application < Rails::Application
config.templates = "./lib/templates"
end
end
以降、参照されるtemplate
はlib/templates
に変更される。
おしまい。