プログラミング備忘録【Ruby on Rails】

初学者として日々学んだことや発見をいつでも引き出せるようブログにまとめてみた。初学者のため間違った説明があった場合、コメントいただけると嬉しいです。

環境構築&バージョン切り替えなどをまとめてみた!

環境構築

Homebrewとは?
コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムです。

1.Homebrewをインストール

・Homebrewをインストールするために、xcodeコマンドラインデバロッパーツールのインストール

$ xcode-select --install

f:id:keikamiguchi:20200623171307p:plain
xcode自体はいらないのでインストールをクリック
xcodeとは?
Apple社が提供している、MacOSiOSで動作するアプリを制作するための開発ツール

・homebrewをインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

・途中、enterとパスワードを求められます。操作しているMac端末のログインパスワードを入力してください。

・念の為、Homebrewを最新版にアップデート

$ brew upgrade

2.rbenvのインストール(Rubyのバージョン管理を行ってくれる)

$ brew install rbenv ruby-build

・rbenvの初期設定を行う

$echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

・初期化を反映させる

source ~/.bash_profile

3.Rubyのインストール

・インストール可能なRubyのバージョンを調べる

$ rbenv install -l

・バージョンを指定してインストール

$ rbenv install 2.6.5

・通常使うバージョンとして設定

$ rbenv global 2.6.5

・gem群のアップデート(rubyに同梱されているgemより新しいバージョンが公開されている場合があるため、念のため最新版にアップデートしている)

$ gem update --system

4.開発に必要なgemを追加

1.bundlerのインストール

$ gem install bundler

bundlerとは?
gem同士の互換性を保ちながらパッケージの種類やバージョンを管理してくれるgem

2.Railsのインストール(ここではバージョン5.2.3をインストール)

$ gem install rails 5.2.3

*Rails6以降をインストールする場合は、yarnとwebpackerのインストールが必要

$ brew install yarn
$ rails webpacker:install ←確かrails newした後のアプリディレクトリに移動してからかな?忘れた!

3.postgresqlのインストール

$ brew install postgresql

postgresqlの起動(停止する場合はstartをstopに変えて入力)

$ brew services start postgresql

4.gitのインストール

$ brew install git

初期設定

翻訳機能

⑴以下にアクセスし、内容を全てコピー
rails-i18n/ja.yml at master · svenfuchs/rails-i18n · GitHub
⑵[config/locales/ja.yml]を作成し、コピーした内容を貼り付けることで、エラーメッセージなどのテンプレートを日本語化
⑶[config/locales/model.ja.yml]を作成し、以下のように編集することで、モデルのカラム名など翻訳のカスタマイズが可能(以下は例なので、アプリに合わせてカスタマイズしてください)

ja:
  activerecord:
    models:
      blog: ブログ
      user: ユーザー
    attributes:
      blog:
        title: タイトル
        content: 内容
      user:
        title: タイトル
        name: 名前
        email: メールアドレス
        current_password: 現在のパスワード
        password: パスワード
        password_confirmation: 確認用パスワード
        remember_me: ログインを記憶

アプリ環境を日本語に設定

[config/initializers]に「locale.rb」を作成し、以下を記述

I18n.config.available_locales = :ja
I18n.default_locale = :ja

*config配下にある設定ファイルは、サーバが起動した瞬間だけ全ての設定が読み込まれて反映されるので、新しい設定を反映させたい場合はサーバーを再起動する必要があります。

タイムゾーンの設定

「config/application.rb」を編集

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module QuickLearning
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2
    config.time_zone = 'Tokyo'                #追記
    config.active_record.default_timezone = :local      #追記
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
  end
end

エラー画面のカスタマイズ(ここではGitHubのようなエラー画面を表示)

1.以下にアクセスし、404.pngと、500.pngをpublicフォルダ配下に保存
v2-achieve/public at day13 · diveintocode-corp/v2-achieve · GitHub
2.public/404.htmlの内容を以下に書き換え

<!DOCTYPE html>
<html>
<head>
  <title>The page you were looking for doesn't exist (404)</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <style>
  .error {
    padding-top: 16%
  }
  p{
    text-align: center;
  }
  img{
    display: block;
    margin: 0 auto;
  }
  </style>
</head>
<body>
  <!-- This file lives in public/404.html -->
  <div class="error">
    <img src="/404.png">
    <p>お探しのページは見つかりません。</p>
  </div>
</body>
</html>

3.public/500.htmlの内容を以下に書き換え

<!DOCTYPE html>
<html>
<head>
  <title>Internal Server Error (500)</title>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <style>
  .error {
    padding-top: 16%
  }
  p{
    text-align: center;
  }
  img{
    display: block;
    margin: 0 auto;
  }
  </style>
</head>
<body>
  <!-- This file lives in public/500.html -->
  <div class="error">
    <img src="/500.png">
    <p>Internal Server Error</p>
  </div>
</body>
</html>

4.開発環境で本番環境のエラー画面の表示を確認
[config/environments/development.rb]の以下をfalseに変更

config.consider_all_requests_local = true

5.存在しないRoutingにアクセスし、404エラーを発生させることで表示内容を確認
6.開発用のエラー画面で本番用のエラー画面を見せる設定にしたままだと、非常に開発がしづらくなるので、確認が終わった後はconfig.consider_all_requests_local = falseをtrueに戻す。

Railsのバージョンを指定して開発を行う

Rails開発環境の構築(複数バージョン共存可能)(Homebrew編) - Qiita
1.インストール可能なrailsの安定版を確認

$ gem list rails -rea

2.gemfileの作成&記述(コピペでエラーが出る場合は、ターミナルに1行ずつ記述)

$ cat << EOS > Gemfile	*複数行のファイルを作成
source "http://rubygems.org"
gem "rails", "バージョン" ←例:"5.2.3"
EOS

*catはファイル操作のコマンド、<< EOS からEOSまでがヒアドキュメント、> ファイル名でファイルに記述。
3.railsをvender/bundleディレクトリ以下にインストール

$ bundle install --path vendor/bundle

4.アプリの作成

$ bundle exec rails new アプリ名 -d 使用するデータベース名 --skip-bundle

*--skip-bundleを忘れずに!
5.以下の不要になったファイルを削除

$ rm -f Gemfile
$ rm -f Gemfile.lock
$ rm -rf .bundle

6.アプリのディレクトリに移動してから以下を実行

$ bundle install --path vendor/bundle

7.Gitの管理対象から vendor/bundle ディレクトリを外す。

$echo '/vendor/bundle' >> .gitignore

*vendor/bundleディレクトリにあるGemsは容量を食うのでGitリポジトリに入れたくない。
*GemfileやGemfile.lockファイルはGitの管理対象なので、cloneした人はそれをもとにbundle install --path vendor/bundleすれば、簡単に同じGem環境を導入できる。

8.データベースの作成

$ bundle exec rails db:create

9.起動確認

$ bundle exec rails server

Railsのアンインストール

$ gem uninstall rails
*これでも「rails -v」で表示されるようなら以下を実行
$ gem uninstall railties

Rubyのバージョン切り替え

1.新たにバージョンを追加する場合

⑴インストール可能なRubyバージョン確認
$ rbenv install -l
⑵ 目的のバージョンを指定してインストール
$ rbenv install 2.6.1
⑶作業ディレクトリでのみバージョンを切り替える
$ rbenv local 2.6.1
*システム全体で使用するrubyのバージョンを切り替えたい場合は、localをglobalに変更
⑷切り替わっていることを確認
$ ruby -v
⑸bundlerのみインストール
$ gem install bundler

2.インストール済みのバージョンに切り替える場合
上記の⑶のみ実行

覚えておきたいコマンド一覧

利用中のRubyバージョン確認
$ ruby -v
インストール可能なRubyバージョン確認
$ rbenv install -l
インストール可能なrailsの安定版を確認
$ gem list rails -rea
目的のバージョンをインストール
$ rbenv install 2.2.0
現在インストール済みのバージョン群
$ rbenv versions
インストールされているgemの一覧表示
$ gem list
全体で利用するバージョンを変更
$ rbenv global 2.2.0
特定のディレクトリのみで利用するバージョンを変更
$ rbenv local 2.2.0
rehashしてあげる
$ rbenv rehash

railsコマンドまとめ

ダウングレード
$ gem uninstall railties -v '4.2.1' 

homebrewコマンド

Homebrewのアップデート

$ brew update
Homebrewでインストールしたパッケージも合わせてアップデート
$ brew upgrade
インストールされたパッケージ一覧を表示
$ brew list
更新のあるパッケージを確認
$ brew outdated
古いバージョンのパッケージを削除
$ brew cleanup

より細かなコマンドは以下
Homebrew使い方まとめ - Qiita

これもかぶる内容!なやまされた!
bundle installすると"can't find gem bundler…"というエラーが発生 - Qiita