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