Railsプロジェクト作成時にやること全まとめ

-----------2020/08/17追記---------

今はテンプレートリポジトリ使ってます。含まれているものも本記事とは大分変わっています。
https://github.com/nyshk97/rails_heroku_template

-----------2020/05/08追記---------

APIとして使うときはこっち。
[【Docker, BFF】Railsプロジェクト作成時にやることまとめ](https://qiita.com/d0ne1s/items/d517dc4a5dbce9cc9602)

------------追記終わり--------------

Railでプロジェクトを作成する時に（ほぼ）毎回やることをまとめて、今後の開発スピードの向上を狙います。
データベースはローカル、本番共に`PostreSQL`、インフラは`Heroku`を使います。
端末は`Mac`、OSは`Mojave`です。

ちなみに、記事通りに作ったところ、全部で67分かかりました。
##好きなバージョンのRailsをインストール
```terminal
$ gem install rails
```
上記で最新版のRailsがインストールされます。バージョンを指定してインストールしたい場合は、`gem install rails  -v 5.2.3`のような形で指定。
インストールされているRailsのバージョンを確認。

```terminal
$ gem info -e rails

*** LOCAL GEMS ***

rails (6.0.2.1, 5.2.4, 5.1.7)
```

##プロジェクト開始
```terminal
$ rails new rails_quick_setup -d postgresql
```
引数を指定しない場合、インストールされている中で最新のバージョンのRailsが使用されます。
バージョンを指定する場合は`rails _5.2.3_ new <プロジェクト名>`のような形で指定。

`-d postgresql`でローカルのデータベースにPostgresqlを指定しています。
`-d mysql`でmysql、何も書かないとsqliteが指定されます。

また今回はプロジェクト名、及びGitHubのリポジトリ名を`rails_quick_setup`とします。
最後に、プロジェクトのディレクトリに移動。

```terminal
$ cd rails_quick_setup
```

##好きなバージョンのRubyをインストール
rbenvを使ってRubyのバージョンを管理します。

```terminal
$ rbenv install -l （インストール可能なバージョン一覧を表示
$ rbenv install 2.7.0-dev
$ rbenv rehash （shimに反映して利用可能な状態にする
$ rbenv local 2.7.0-dev （Current Directory以下だけ、Rubyのバージョンを変更する
```
[rbenvの使い方と仕組みについて](https://qiita.com/Kodak_tmo/items/73147ed4f0eec54d6e94)

##データベースの設定
PCにPostgresがインストールされていて、上記のように`-d postgresql`オプションをつけて起動していた場合、初期設定の状態のまま以下のコマンドを叩くと開発、テスト用のデータベースが作成されます。
[初心者がMacOSにRuby on Rails + PostgreSQL( + Fish Shell)の環境を構築してみた](https://qiita.com/jonpili/items/1b77a522895cbc9cb67f)

```terminal
$ rails db:create
```

##動作確認
<img width="1431" alt=" 2019-12-26 10.46.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244893/222f36f4-2051-36de-1934-ecd8146abd8c.png">
http://0.0.0.0:3000/ にアクセスし、上記の画面が表示されていれば成功です。

※yarnが端末にインストールされていないと、エラーが発生します。その場合はyarn→webpackerの順にインストールすると解決します。

##GitHubにリポジトリを作成
1. [GitHub](https://github.com/)にログイン
2. 画面左「Repositories」横の「New」をクリック
3. リポジトリ名等を入力(チェック等は基本初期設定でOK）し、「Create repository」をクリック

##.gitignoreを編集
1. [gitignore.io](https://www.gitignore.io/)にアクセス
2. トップ画面で「rails」と入力
3. 表示されるテキストを`.gitignore`に記入
4. 10行目付近のsqliteに関する記述を削除
4. 以下を追記

```
# original
config/database.yml
```

その後`databese.yml`を複製し、`databese_replica.yml`というファイルを作成します。

`database.yml`を直接GitHubで管理してしまうと、ローカルのデータベースのパスワード等が他のメンバーにバレてしまうので、各々`databese.yml.replica`を元に自分専用の`databese.yml`を使って開発を行います。

##ローカルとGitHubを接続
```terminal
$ git add -A
$ git commit -m "First commit"
$ git remote add origin https://github.com/nyshk97/rails_quick_setup.git
$ git push -u origin master
```
理由はわかりませんが、私の環境ではプロジェクト開始時にすでにディレクトリがgit管理下に置かれています。各自必要に応じて`git init`を行ってください。

##TablePlusに接続
データベースをGUIで管理するためにTablePlusと接続します。

1. 起動画面で右クリック > New > Connection > PostgreSQL を選択
2. 以下のように入力し、connectをクリック
<img width="498" alt=" 2019-12-26 10.27.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244893/f1008e5a-ec6a-2ab4-6e04-42975a5e2fdd.png">

（`database.yml`でユーザー名やパスワード等を設定している場合には、その内容を記述する必要があります。）

##タイムゾーンを日本時間に変更
タイムゾーンをデフォルトのUTC(世界標準時間)からJST(日本時間)に変更します。

```config/application.rb
module RailsQuickSetup
  class Application < Rails::Application
    config.load_defaults 6.0
    #追記↓
    config.time_zone = 'Tokyo' #Time.zone.nowとかの時に日本時間を使用する
    config.active_record.default_timezone = :local #DBの読み書きを日本時間でやる
  end
end
```
`Time.now`とか、SQL文の`NOW()`とかを日本時間にするにはまた別の設定が必要なので、できるだけ使わないように気をつける。

[Railsタイムゾーンまとめ](https://qiita.com/aosho235/items/a31b895ce46ee5d3b444)

##viewportを設定
スマホでも表示できるように、viewportを設定します

```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
```

##不要なファイルを生成しないように設定
`rails g controller`実行時に、`controller`と`view`以外のファイルを生成しないように設定します。

```config/application.rb
module RailsQuickSetup
  class Application < Rails::Application
    config.load_defaults 6.0
    #追記↓
    config.generators do |g|
      g.stylesheets false
      g.javascripts false
      g.helper false
    end
  end
end
```

##テスト用のmodel、controller、viewを作成
```terminal
$ rails g model Test name:string
$ rails db:migrate
```
modelとmigrationファイル（及びtestsテーブル）が生成されます。

```terminal
$ rails g controller tests index
```
indexアクションを持ったcontroller、indexアクション用のview、indexアクションへのroutingが自動生成されます。

##テスト用データを作成
```db/seeds.rb
Test.create!(
  [
    {
      name: 'パンを買う'
    },
    {
      name: '牛乳を買う'
    }
  ]
)
```
```terminal
$ rails db:seed
```
testsコントローラーのindexアクションで、テスト用データを表示してみます。

```app/controllers/tests_controller.rb
class TestsController < ApplicationController
  def index
    @tests = Test.all
  end
end
```
```erb:app/views/tests/index.html.erb
<h1>Tests#index</h1>
<% @tests.each do |t| %>
  <%= t.name %>
<% end %>
```

##better-errorsとbinding_of_callerを導入
エラー画面をわかりやすくカスタマイズしましょう。

```ruby:Gemfile
group :development do
.
.
  gem 'better_errors'
  gem 'binding_of_caller'
end
```
```terminal
$ bundle install --without production
```
`--without production`オプションは初回だけ指定すれば良いので、今後のステップでは省略して行きます。

またインストールしたgemを反映させるには、**ローカルサーバーを再起動する必要があるので注意**

##pry-railsとpry-byebugを導入
`rails console`の画面を見やすくしたり、デバッグをやりやすくします。

```rb:Gemfile
group :development, :test do
  gem 'pry-rails'
  gem 'pry-byebug'
```
[pry-byebugでrubyをデバッグする](https://qiita.com/AknYk416/items/6f0bec58712edaf4940e)

##dotenvを導入
環境変数を扱いやすくします。

```rb:Gemfile
gem 'dotenv-rails'
```
```terminal
$ bundle install
```
最後にプロジェクトルートに環境変数をセットするためのファイル`.env`ファイルを作成しましょう。
今後環境変数を使う時には、このファイル内に書き込んでいきます。
[環境によって変わる設定値はdotenvを使うと便利](https://qiita.com/closer/items/f8d8ba00ae86d7051764)

##~~annotateを導入~~
最近あんまり使ってません。
データベースやルーティングの情報をファイル内にコメントとして書き出すgemです。

```rb:Gemfile
group :development do
  gem 'annotate'
```
```terminal
$ bundle install
$ bundle exec rails g annotate:install
```
`$ rails db:migrate`のタイミングでモデル内にスキーマ情報が書き込まれます。 
その他、以下のようなオプションがあります。

```terminal
$ bundle exec annotate #手動で実行
$ bundle exec annotate --routes # ルーティング情報を書き出す
```
[【Rails】annotateの使い方](https://qiita.com/kou_pg_0131/items/ae6b5f41c18b2872d527)

##rack-dev-markを導入
開発環境に「development」と書かれたリボンを表示させて、本番と間違えないようにします。

```rb:Gemfile
gem 'rack-dev-mark'
```
```terminal
$ bundle install
```
```config/application.rb
class Application < Rails::Application
    config.rack_dev_mark.enable = !Rails.env.production?
    config.rack_dev_mark.theme = [:title, Rack::DevMark::Theme::GithubForkRibbon.new(position: 'left', fixed: true, color: 'orange')]
```

##font-awesomeを導入
だいたい使うことになるので。

```rb:Gemfile
gem 'font-awesome-sass'
```
```terminal
$ bundle install
```
`application.css`を`application.scss`にリネームして、以下を書き込む。

```app/assets/stylesheets/application.scss
@import 'font-awesome-sprockets';
@import 'font-awesome';
```
```erb:app/views/tests/index.html.erb
<h1>Tests#index</h1>
<% @tests.each do |t| %>
  <i class="far fa-smile-wink"></i> ←追加
  <%= t.name %>
<% end %>
```

##jQueryを導入
なんだかんだ必要なので。Rails6から導入方法が変わりました。（webpackを使います）

```terminal
$ yarn add jquery
```
`package.json`、`yarn.lock`の2つのファイルを開き、jQueryのバージョンに関する記述が追加されていることを確認します。

```config/webpack/environment.js
const { environment } = require('@rails/webpacker')

//追加↓
const webpack = require('webpack')
environment.plugins.prepend('Provide',
  new webpack.ProvidePlugin({
    $: 'jquery/src/jquery',
    jQuery: 'jquery/src/jquery'
  })
)
//

module.exports = environment
```

```app/javascript/packs/application.js
require('jquery')
```
この時点でjQuery本体の読み込みは完了しているので、jQuery依存のプラグインを利用したり、インラインで記述することは可能です。
作成したjQuery(やJavaScript)の読み込み方法は大きく以下の2つがあります。
jQueryを使い、次の記述を赤色に変えていきましょう。

```erb:app/views/tests/index.html.erb
.
.
<p id="hoge">jQueryで赤色に変化</p>
```

###webpackerで読み込む
`app/javascript/src/js/`という、Javascriptを保存するためのディレクトリを作成し、そこにjsファイルを作成します。

```app/javascript/src/js/sample.js
$(function() {
  $("#hoge").css("color","red");
});
```
```app/javascript/packs/application.js
import 'src/js/sample'
```
[Introducing jQuery in Rails 6 Using Webpacker](https://www.botreetechnologies.com/blog/introducing-jquery-in-rails-6-using-webpacker)
[Rails アプリのアセットを Webpacker で管理する](https://engineering.mobalab.net/2018/05/05/manage-assets-in-rails-using-webpacker/)
###~~AssetPipelineで読み込む~~
(2020/3/4 追記)
以下の手順で実装しようとしたら、`The asset "sample.js" is not present in the asset pipeline`というエラーが出ました。
Asset Pipelineに追加してるはずなんですけど、どうしてですかね。前はできた気がするんですけど。
とにかく、webpackerでの導入を推奨します。
(追記おわり)

`app/assets/javascript`という、Javascriptを保存するためのディレクトリを作成し、そこにjsファイルを作成します。（ディレクトリ名を`javascripts`と複数形にすると動きませんでした）

```app/assets/javascript/sample.js
$(function() {
  $("#hoge").css("color","red");
});
```
ビューファイルにjs読み込み用の記述を追加

```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
.
.
  <%= javascript_include_tag 'sample' %>
</head>
```
作成したjsファイルをアセットパイプラインに追加

```app/config/initializers/assets.rb
Rails.application.config.assets.precompile += %w( sample.js )
```
[Rails6.0.0におけるJQueryの導入から動作確認までまとめてみた](https://bcibrainwaveeeg.com/jquery-include-for-rails/)

##ページごとにタイトルを変数で指定できるように設定
```app/helpers/application_helper.rb
module ApplicationHelper
  def full_title(page_title = '')
    base_title = 'Rails Quick Setup'
    if page_title.empty?
      base_title
    else
      "#{page_title} | #{base_title}"
    end
  end
end
```
```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
  <title><%= full_title(yield(:title)) %></title>
.
.
```
```erb:app/views/tests/index.html.erb
<% provide(:title, "Index") %>
<h1>Tests#index</h1>
.
.
```
##最低限のCRUD機能を実装
```config/routes.rb
Rails.application.routes.draw do
  #get 'tests/index'
  resources :tests
end
```
```app/controllers/tests_controller.rb
class TestsController < ApplicationController
  def index
    @tests = Test.all
  end

  def new
    @test = Test.new
  end

  def create
    @test = Test.new(test_params)
    if @test.save
      redirect_to tests_url
    else
      render 'tests/new'
    end
  end

  def edit
    @test = Test.find(params[:id])
  end

  def update
    @test = Test.find(params[:id])
    if @test.update(test_params)
      redirect_to tests_url
    else
      render 'tests/edit'
    end
  end

  def destroy
    @test = Test.find(params[:id])
    @test.destroy
    redirect_to tests_url
  end

  private
  def test_params
    params.require(:test).permit(:name)
  end
end
```
```erb:app/views/tests/index.html.erb
<% provide(:title, "Index") %>

<h1>Tests#index</h1>
<% @tests.each do |t| %>
<div>
  <i class="far fa-smile-wink"></i>
  <%= t.name %>
  <%= link_to '編集', edit_test_path(t) %>
  <%= link_to '削除', test_path(t), method: :delete %>
</div>
<% end %>
<%= link_to '追加', new_test_path %>

<p id="hoge">jQueryで赤色に変化</p>
```
```erb:app/views/tests/new.html.erb
<% provide(:title, "New") %>
<h1>Tests#new</h1>
<%= form_with model: @test, local: true do |f| %>
  <div><%= f.label :name %></div>
  <div><%= f.text_field :name %></div>
  <div><%= f.submit %></div>
<% end %>
<%= link_to '戻る', tests_path %>
```
```erb:app/views/tests/edit.html.erb
<% provide(:title, "Edit") %>
<h1>Tests#edit</h1>
<%= form_with model: @test, local: true do |f| %>
  <div><%= f.label :name %></div>
  <div><%= f.text_field :name %></div>
  <div><%= f.submit %></div>
<% end %>
<%= link_to '戻る', tests_path %>
```

##バリデーションを追加
```app/models/test.rb
class Test < ApplicationRecord
  validates :name, length: {maximum: 30}, presence: true
end
```
[【Rails】バリデーションを実装する](https://qiita.com/d0ne1s/items/822f66d16d65ae28162b)
##エラーメッセージを表示
```erb:app/views/shared/_error_messages.html.erb
<% if object.errors.any? %>
  <div>
    <ul>
    <% object.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>
```
```erb:app/views/tests/new.html.erb
<% provide(:title, "New") %>
<h1>Tests#new</h1>
<%= form_for(@test) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
.
.
```
```erb:app/views/tests/edit.html.erb
<% provide(:title, "Edit") %>
<h1>Tests#edit</h1>
<%= form_for(@test) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
.
.
```
[【Rails】エラーメッセージを使い回す](https://qiita.com/d0ne1s/items/25acf0e70c12042c4c35)
##エラーメッセージを日本語化（rails-i18n）
日本語のlocaleファイルを作成し、[rails-i18nの日本語用localeファイル](https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml)の内容をコピペ。

```config/locales/ja.yml
---
ja:
  activerecord:
    errors:
      messages:
        record_invalid: 'バリデーションに失敗しました: %{errors}'
.
.
```

デフォルトの言語を日本語に設定

```config/application.rb
module BoardApp
  class Application < Rails::Application
.
.
    config.i18n.default_locale = :ja
  end
end
```
[【Rails】バリデーションを実装する](https://qiita.com/d0ne1s/items/822f66d16d65ae28162b)
[【Rails】localeの使い方](https://qiita.com/d0ne1s/items/89846ebe97c9114865ca)

以前は`i18n`のgemをインストールしていたのですが、日本語でしか使わないアプリの場合無駄が多そうだということに気がついて、現在の形に落ち着きました。

##ヘッダー、フッターを追加
```erb:app/views/layouts/_header.html.erb
<header class="header">
  <div class="container header__container">
    <div class="header__logo">
      <h1 class="header__title">Rail Quick Start</h1>
    </div>
    <nav class="gnav">
      <ul class="gnav__list">
        <li><a href="https://qiita.com/d0ne1s/items/5211969b566b6a503eb8"><i class="fas fa-search"></i>Qiita</a></li>
        <li><a href="https://github.com/nyshk97/quicss"><i class="fab fa-github"></i>GitHub</a></li>
        <div class="gnav__outer">
      </ul>
    </nav>
  </div>
</header>
```
```erb:app/views/layouts/_footer.html.erb
<footer class="footer">
  <div class="container">
    <small>© d0ne1s</small>
  </div>
</footer>
```
```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= render 'layouts/header' %>
    <main class="main">
      <%= yield %>
    </main>
    <%= render 'layouts/footer' %>
  </body>
</html>
```
[【Rails】パーシャルを利用する](https://qiita.com/d0ne1s/items/154a5faa5ae09466e637)
##flashの表示エリアを作成
```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
.
.
  <body>
    <%= render 'layouts/header' %>
    <% flash.each do |message_type, message| %>
      <div class="<%= message_type %>"><%= message %></div>
    <% end %>
    <main class="main">
.
.
```
##開発環境にデバッグ情報を表示する
```erb:app/views/layouts/application.html.erb
<!DOCTYPE html>
.
.
  <%= debug(params) if Rails.env.development? %>
</body>
.
.
```
特定の変数の中身を表示したい場合には`<%= debug @tests if Rails.env.development? %>`のように記述します。
[Railsのテスト環境にデバッグ用の情報を表示する](https://qiita.com/d0ne1s/items/df27a381184c4724c200)

##QuiCSSの導入
普段使っているSassのディレクトリ構成を取り入れ、自分のテンプレートをプロジェクトに追加します。
[スピードに特化したコーディング規約【QuiCSS】](https://qiita.com/d0ne1s/items/5211969b566b6a503eb8)

```
- stylesheets
  └── application.scss
  └── bases
      └── _reset.scss
      └── _config.scss
      └── _base.scss
      └── _mixin.scss
      └── _responsive.scss
      └── _utility.scss
  └── components
      └── _btn.scss
      └── _title.scss
      └── _form.scss
  └── layouts
      └── _header.scss
      └── _gnav.scss
      └── _main.scss
      └── _fnav.scss
      └── _footer.scss
      └── _flash.scss
      └── _debug.scss
  └── pages
      └── 
  └── pulgins
      └── 
```
```app/assets/stylesheets/application.scss
//削除↓ 記述が残っていると、パーシャルを個別にコンパイルしようとして「変数が定義されていない」と怒られます。
*= require_tree .
```
```app/assets/stylesheets/application.scss
//以下を追記
@import './bases/reset';
@import './bases/config';
@import './bases/base';
@import './bases/mixin';
@import './bases/responsive';
@import './bases/utility';

@import './compornents/btn';
@import './compornents/btn-outline';
@import './compornents/form';
@import './compornents/title';

@import './layouts/header';
@import './layouts/gnav';
@import './layouts/main';
@import './layouts/footer';
@import './layouts/flash';
@import './layouts/debug';
```

##Herokuアプリを作成しデプロイ
本番環境のデータベースも開発環境と同じPostgresなので、データベース周りの設定は基本的に不要です。

```config/environments/production.rb
config.assets.compile = true
```
```terminal
$ heroku login
```
```terminal
$ heroku create rails-quick-setup
```
アプリ名にアンダーバーは使えません。

```terminal
$ git push heroku master
```
```terminal
$ heroku run rails db:migrate
```
[RailsアプリをHerokuにデプロイする手順](https://qiita.com/d0ne1s/items/59b5d9ed69e822c5b39c)

##HerokuのDBをTablePlusで読み込み
1. [Herokuのダッシュボード](https://dashboard.heroku.com/apps)にアクセス
2. 該当のアプリ名(rails-quick-setup)をクリック
3. Resources > Heroku Postgres をクリック
4. Settings > View Credentials をクリック
5. 表示される接続情報をTablePlusに入力し、connectをクリック
(2020/3/5追記)TablePlusの画面で「new connection from url」をクリックして、URIに書かれている記述をコピペすると、入力の手間が省けます。
<img width="497" alt=" 2019-12-27 18.43.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244893/fd2d20ab-0d89-ad91-2ee6-266506ec51f8.png">


##HerokuとGitHubを接続
1. [Herokuのダッシュボード](https://dashboard.heroku.com/apps)にアクセス
2. 該当のアプリ名(rails-quick-setup)をクリック
3. Deployをクリック
4. Deployment method > GitHubをクリック
5. リポジトリを検索し、connectをクリック
6. Automatic deploys > Wait for CI to pass before deployにチェック
7. Enable Automatic Deploysをクリック

以上の設定で、GitHubにプッシュしたタイミングでテストが走り、自動でデプロイが行われるようになります。

##README.mdを編集
```md
# Rails Quick Setup
Railsプロジェクトのセットアップを高速化するために作ったサンプルです。
[Railsプロジェクト作成時にやること全まとめ](https://qiita.com/)

## Ruby version

- See `.ruby-version`.

## Rails version

- See `Gemfile`.

## Database version

- PostgreSQL >= 11.6

## Project initiation

bash
$ git clone git@github.com:nyshk97/rails_quick_setup.git

bash
$ bundle install --path vendor/bundle

### Configuration

*ファイルの中身はご自身の環境に合わせて適宜変更してください*

- データベースの設定

bash
$ cp config/database.yml.default config/database.yml


### Database creation

bash
$ bundle exec rails db:create
$ bundle exec rails db:migrate


## Run rails server

bash
$ bundle exec rails server
```

##管理画面用の名前空間を作成
管理画面用のベースとなるcontrollerとviewファイルを作成します。

```app/controllers/admin/application_controller.rb
class Admin::ApplicationController < ActionController::Base
  layout 'admin/layouts/application'
end
```
```erb:app/views/admin/layouts/application.html.erb
<!DOCTYPE html>
<html>

<head>
  <title><%= full_title(yield(:title)) %></title>
  <%= csrf_meta_tags %>
  <%= csp_meta_tag %>

  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>

<body>
  <%= render 'admin/layouts/header' %>
  <% flash.each do |message_type, message| %>
    <div class="<%= message_type %>"><%= message %></div>
  <% end %>
  <%= yield %>
  <%= render 'admin/layouts/footer' %>
  <%= debug params if Rails.env.development? %>
</body>

</html>
```
```erb:app/views/admin/layouts/_header.html.erb
<header class="header">
  <div class="container header__container">
    <div class="header__logo">
      <h1 class="header__title">管理画面</h1>
    </div>
  </div>
</header>
```
```erb:app/views/admin/layouts/_footer.html.erb
<footer class="footer">
  <div class="container">
    <small>© d0ne1s</small>
  </div>
</footer>
```
適当なコントローラーを作成しましょう。

```terminal
$ rails g controller admin/static_pages index
```
継承元のコントローラーを管理画面用のものに変更。管理画面用のコントローラーを作るたびに修正するのは少しめんどくさいですね。

```app/controllers/admin/static_pages_controller.rb
class Admin::StaticPagesController < Admin::ApplicationController
  def index
  end
end
```

##出来たもの
GitHUb：https://github.com/nyshk97/rails_quick_setup
Heroku：https://rails-quick-setup.herokuapp.com/

##TODO
- 基本的な認証機能の追加（Devise）
- 論理削除を追加（paranoia）
- 本番環境でのメール送信（SendGrid）
- Bundleの仕組みを整理（Rubyのバージョンを切り替えた時のgemの依存関係で問題が出ないかなど）