1. 事前準備
1.1 MySQL互換の MariaDB をインストール
① インストール
$ brew install mariadb
$ brew services start mariadb
トラブルシューティング
以下のように MariaDB が起動しない場合
$ sudo mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
MariaDB 関連のデータをすべて削除して再インストール
$ brew services stop mariadb
$ brew uninstall mariadb
$ sudo rm -rf /usr/local/mysql
$ sudo rm -rf /Library/StartupItems/MYSQL
$ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane
$ sudo rm -rf /Library/Receipts/mysql-.pkg
$ sudo rm -rf /usr/local/Cellar/mysql*
$ sudo rm -rf /usr/local/bin/mysql*
$ sudo rm -rf /usr/local/var/mysql*
$ sudo rm -rf /usr/local/etc/my.cnf
$ sudo rm -rf /usr/local/share/mysql*
$ sudo rm -rf /usr/local/opt/mysql*
$ brew install mariadb
$ brew services start mariadb
② ユーザー作成・権限割当
開発用なのでフル権限を与える
- ユーザー名:
myuser
- パスワード:
pass
$ sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO myuser@localhost IDENTIFIED BY 'pass' WITH GRANT OPTION;
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> select Host,User from user;
MariaDB [mysql]> quit
1.2 yarn をインストール
Rails で webpacker を使用する際に yarn が必要ためインストールする。
※ node と yarn の関係などを知らない場合はネットで調べること
また、node のバージョン管理できるように、nodenv もインストールする。
$ brew install nodenv
$ echo 'eval "$(nodenv init -)"' >> ~/.zprofile
$ exec $SHELL -l
$ nodenv install --list
$ nodenv install 12.10.0
$ nodenv global 12.10.0
$ npm install -g yarn
2. グローバルにある Ruby を汚さずに Railsインストール
gem install rails
を行うと ~/.rbenv/versions/2.5.1/lib/ruby/gems/2.6.4/gems
の中に rails がインストールされます。 rails new
をする時しか使用しないのにグローバルにインストールされてしまうのは無駄なので、インストールしない方法で進めます。
rbenv インストール
$ brew install rbenv
$ echo 'eval "$(rbenv init -)"' >> ~/.zprofile
$ exec $SHELL -l
rbenv で ruby をインストール
$ rbenv install 2.6.4
$ rbenv global 2.6.4
bundler をインストール
$ gem install bundler
プロジェクトディレクトリを作成
$ mkdir report_app
$ cd report_app
.ruby-version ファイルを配置
rbenv の機能で プロジェクトディレクトリに移動した際に自動で ruby のバージョンを切り替えてくれる設定ファイルを配置する。
2.6.4
Gemfile 作成
$ bundle init
Gemfile を編集し、 rails のコメントアウトを外す
# gem "rails" ← 削除
gem "rails", "6.0.0" ← 追加
gem インストール
$ bundle install --path vendor/bundle
Rails プロジェクト作成
$ bundle exec rails new . -d mysql --skip-sprockets
※ --skip-sprockets
は sprockets を使わず、webpacker を使用するため追加
実行すると、Gemfileを上書きしていいかと表示されるので Yes にする。
※ bundle install で gem mysql2 のエラーが表示された場合
-
openssl をインストールし、パスを通す
$ brew install openssl $ which openssl /usr/bin/openssl ← パスが通ってないから通す $ echo 'export PATH=/usr/local/opt/openssl/bin:$PATH' >> ~/.zprofile $ exec $SHELL -l $ which openssl /usr/local/opt/openssl/bin/openssl
-
bundle config に設定を追加
$ bundle config --local build.mysql2 --with-opt-dir="$(brew --prefix openssl)"
-
再度 bundle install
$ bundle
```
3. Webpacker インストール
$ bin/rails webpacker:install
4. database.yml 設定
config/database.yml
を以下の通り編集する
username: myuser
password: pass
5. Rails 起動
$ bin/rails db:create
$ bin/rails s
6. 起動確認
ブラウザのアドレスバーに localhost:3000
と入力しEnter
その他設定
Webpacker の設定
-
app/assets
を削除する -
layout/application.html.erb
のstylesheet_link_tag
をstylesheet_pack_tag
に差し替える -
画面のちらつきを抑えるため
config/webpacker.yml
のextract_css
をtrue
にする -
Webpacker を使うので Sprockets のディレクトリ
app/assets
を削除する
Turbolinks の無効化
他のJSライブラリと相性が悪いため turbolinks を無効化する
-
Gemfile
のtarbolinks
を削除 -
app/javascript/packs/application.js
のrequire("turbolinks").start()
を削除 -
app/views/layouts/application.html.haml
のdata-turbolinks-track
を削除 -
package.json
のturbolinks
を削除
Slim 導入
-
Gemfile
にgem 'slim-rails'
を追加 - 既存の
erb
ファイルをslim
に変換する
https://qiita.com/mocchicc/items/abab4cdfac7b542742a6
RSpec 導入
-
Gemfile に以下追加
group :development do gem 'factory_bot_rails' end group :test do gem 'rspec-rails', '~> 4.0.0.beta2' gem 'rails-controller-testing' end
-
rspecに必要なファイルを生成する
-
$ bin/rails generate rspec:install
-
bin/rspec
コマンドを生成する$ bundle binstubs rspec-core
-
rspec の設定ファイルを変更する
rails_helper.rb に設定追加
rails_helper.rb# FactoryBot.create を create で呼べるようにする config.include FactoryBot::Syntax::Methods # rspec3.3の aggregate_failures オプションをデフォルトとする config.define_derived_metadata do |meta| meta[:aggregate_failures] = true unless meta.key?(:aggregate_failures) end # focus を付与したテストのみ実行する config.filter_run_when_matching :focus
-
Rspec を使うので Minitest のディレクトリ
test
を削除する
Rails Console を便利にする
-
Rails Console や デバッグを便利にするための gem を導入する
Gemfilegroup :development, :test do gem 'awesome_print' gem 'pry-byebug' gem 'pry-rails' end
-
.pryrc
ファイルを作成する- Railsプロジェクトのrootディレクトリに.pryrcファイルを配置しておけばデバッグ中に利用できるエイリアスが貼れる
.pryrcif defined?(PryByebug) Pry.commands.alias_command 'c', 'continue' Pry.commands.alias_command 's', 'step' Pry.commands.alias_command 'n', 'next' Pry.commands.alias_command 'f', 'finish' end
一通りの基本設定は完了。それではアプリの実装に入りましょう。