Contents
はじめに
今回Ruby on Railsで新規プロジェクトを作成することになったのでその手順をまとめていきます。
毎回作成のたびに調べながらあと何があったっけって考えるので備忘録としての意味も込めています。
MacにRuby on Railsの環境構築をする手順は以下の記事にまとめてあるのでまだの人はこちらを参考にしてください。

作成手順
開発環境
MacOS Mojave バージョン 10.41.1
ruby 2.5.0
Rails 5.2.1
Gemfileの作成とRailsのインストール
最初にRailsプロジェクトを作成していきます。
プロジェクト用のディレクトリを作成し、そのディレクトリ内でGemfileを作成していきます。
今回はsample-appというディレクトリを作成していきます。
$ mkdir sample-app
$ cd sample-app/
$ bundle init
Writing new Gemfile to /path/to/directry_name/Gemfile
Gemfileが作成されるので編集していきます。
編集する箇所は`gem “rails”の行のコメントアウトを外すだけです。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails" #ここのコメントアウトを外す
次にRailsをインストールしていきます。
–path vendor/bundleをつけることでプロジェクト内のvender/bundleという場所にgemがインストールされます。
これをつけないといけないのは最初だけでこれ以降はbundle installだけで大丈夫です。
$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.1
Installing rake 12.3.1
Fetching concurrent-ruby 1.1.3
Installing concurrent-ruby 1.1.3
︙
︙
Fetching rails 5.2.1
Installing rails 5.2.1
Bundle complete! 1 Gemfile dependency, 41 gems now installed.
Bundled gems are installed into `./vendor/bundle`
これでインストールが完了です。
ポイントとしては普段では
$ gem install rails
$ rails new project-app
とすろのが一般的ですが、このようにしない理由としては、このやり方ではシステムのgemにインストールされてしまうのでシステムのgemをクリーンに保つために、vender/bundleに入れることでプロジェクトごとに別の場所にインストールして環境の依存度を減らすためにしています。
railsプロジェクトの作成
Railsのインストールができたので、実際にRailsプロジェクトを作成します。
オプションについてはあとで説明していくのでそれを見ながら作成したいプロジェクトに応じてオプションは適宜つけはずししてください。
$ bundle exec rails new . -B -d mysql --skip-test --skip-coffee
1つずつ説明すると、
まず先ほどvender/bundleに入れたのでbundle execで呼び出します。
rails newの後の「.」は現在のディレクトリに作成するという意味です。
「-B」はRailsプロジェクト作成時にbundle installを行わないようにするものです
「-d mysql」はDBをmysqlに変更しています。デフォルトはsqlite3です。
「–skip-test」はrailsのデフォルトのminitestを使わないようにします。最近ではテストツールとしてRspecを使うのが主流なのでRspecを使う前提でつけています。
「–skip-coffee」はjavascriptをより簡単にかけるようになるRailsデフォルトで入っているcoffeeスクリプトを使わないようにします。
今回つけませんでしたが、
「–skip-turbolinks」というのもturbolinksをオフにするためのオプションで、今回は特につけませんでしたがつけるかつけないかで意見が分かれる部分です。turbolinksはページ遷移をAjaxに置き換え、JavaScriptやCSSのパースを省略することで高速化するデフォルトで入っているgemですが、うまくやらないとjavascriptの読み込みがうまくいかなかったりとデメリットもあります。
他のオプションは$ rails new -h
で確認できるので確認するといいかと思います。
Gitリポジトリの設定
Railsプロジェクトの作成が完了しましたので、Gitリポジトリの設定をして開発を進めていけるようにします。
先ほどのrails newの時点で.gitファイルは作成されていると思うのでgitコマンドが使えるかと思います。もしなければgit initしましょう。
先に.gitignoreをいじっておきます。.gitignoreではgit管理に含めないファイルを設定していきます。
基本的にはrails newの時点でRailsデフォルトの設定のものを作成してくれているのでプラスで設定したいものだけを書き換えます。
先ほど/vender/bundleにGemがインストールされるように設定したので、これを含めないように設定します。
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config.
/.bundle
/vendor/bundle #追加
# Ignore all logfiles and tempfiles.
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignore uploaded files in development
/storage/*
!/storage/.keep
/node_modules
/yarn-error.log
/public/assets
.byebug_history
# Ignore master key for decrypting credentials and more.
/config/master.key
これで完了です。ではGitリポジトリに紐付けていきましょう。
$ git add .
$ git commit -m "initial commit"
$ git remote add origin https://github.com/username/project_name.git
$ git push -u origin master
git remoteの部分はgithubでリポジトリを作成した際に指示されるのでそのURLを使いましょう。bitbucketなどでも同様です。
タイムゾーンの設定
タイムゾーンをJSTに設定します。
config/application.rbに以下を追加します。
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local
dotenvで環境変数を設定できるようにする
例えばパスワードといったgit管理に入れたくないものや各開発環境に応じて違うものを環境変数として設定してENV[‘HOGEHOGE’]のようにアクセスできるようにします。
プライベートリポジトリならまだしもパブリックリポジトリでAPIキーなどをそのまま貼り付けていたらやばいことになってしまいます。
デフォルトでRailsでは環境変数を使うことができますが、ローカル環境で共通で使うことになるので複数プロジェクトで名前が競合する可能性があります。
dotenvを使うことでプロジェクトごとに環境変数を設定することができます。
Gemfileに以下を追加し、bundle installしましょう。
gem 'dotenv-rails'
カレントディレクトリ(appディレクトリなどがある階層)に、「.env」というファイルを作成し、ここに設定していきます。
具体的な書き方は以下でデータベースの設定をしていくのでそこで説明していきます。
データベースの設定
今回はmysqlを使用していきます。先ほどrails newをするときにmysqlを使用するオプションをつけたかと思います。
railsではconfig/database.ymlにデータベースの設定を書いていきます。
default: &default
adapter: mysql2
charset: utf8mb4
collation: utf8mb4_bin
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: <%= ENV['RAILS_DATABASE_HOST'] %>
username: <%= ENV['RAILS_DATABASE_USERNAME'] %>
password: <%= ENV['RAILS_DATABASE_PASSWORD'] %>
development:
<<: *default
database: sample-app_development
test:
<<: *default
database: sample-app_test
production:
<<: *default
database: sample-app_production
このように設定しました。
databaseの部分がsample-app_developmentのようになっていますが、{プロジェクト名}_developmentのようになっているかと思います。test,productionも同様です。
charset: utf8mb4
collation: utf8mb4_bin
encoding: utf8mb4
この部分が重要で、デフォルトではutf8で設定されていて、このままでも良いのですが、絵文字など記録できないのでutf8mb4にするのが無難かと思います。一応後からでも変更できるので状況に合わせて設定しましょう。
host: <%= ENV['RAILS_DATABASE_HOST'] %>
username: <%= ENV['RAILS_DATABASE_USERNAME'] %>
password: <%= ENV['RAILS_DATABASE_PASSWORD'] %>
この部分が先ほどの環境変数です。今回はdotenvを使用しているのでカレントディレクトリに「.env」を作成します。
RAILS_DATABASE_HOST='localhost'
RAILS_DATABASE_USERNAME='username'
RAILS_DATABASE_PASSWORD='password'
内容は自分の環境に応じて適宜変更してください。
加えて「.env」をgitignoreに追加しましょう。git管理に入れないために隔離したものを管理下から外さないと意味がありません。
ではデータベースの作成をしていきます。
$ bundle exec rake db:create RAILE_ENV=development
Created database 'sample-app_development'
Created database 'sample-app_test'
これでデータベースの作成が完了です。
Railsサーバーの起動
設定が完了したので起動していきましょう
$ rails s
=> Booting Puma
=> Rails 5.2.1 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
ブラウザで確認していきましょう。

無事確認できました。
まとめ
今回Railsのプロジェクト作成の手順をまとめていきました。あくまでも僕の手順なので状況に応じて取捨選択をしながらやれればと思います。
参考にした記事
https://qiita.com/yuitnnn/items/b45bba658d86eabdbb26