1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初めてのローカル環境構築(MacでHomebrewを経由しRailsを導入する)

Last updated at Posted at 2021-06-05

はじめに

railsチュートリアルを1周した後に、オリジナルアプリ作成のためにローカル環境を構築しました。
チュートリアル学習時は、cloud9を使用していた為、初めての作業でした。

初学者のため、必須ではないコマンドが含まれているかもしれませんが、どうかご了承ください。
なかなか苦戦しながら環境設定をしたので、同じ境遇の方に少しでも参考になると幸いです。
もし、修正箇所がございましたら、ぜひ、お知らせください。

目標

下記作業までの完了を目標としています。

  • 内容
    • railsに新規アプリ作成
    • MySQLの設定および導入
    • Git・GitHubの設定
    • herokuサーバにアプリをデプロイ

前提

  • PC仕様

    • OS:macOS(Catalina)
  • 使用シェル

    • zsh
  • 使用技術

    • バックエンド:ruby(バージョン:2.7.3)
    • フレームワーク:rails(バージョン:6.1.3.2)
    • データベース:MySQL(バージョン:8.0.25)
    • インフラ:heroku

1.homebrewの導入

はじめに、ターミナル(私の場合はVScodeのターミナル)に入力します。
上手くいけば、homebrewが使用可能になります。

ターミナル(zsh)

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

homebrewはAppleで提供してないツールをインストールする時に使う便利なソフトのようです。
詳しくは、下記URLを参考にしてください。
■Homebrew公式ページ


念のため、homebrewがインストールできているか確認します。

ターミナル(zsh)

% brew -v

〜〜実行結果〜〜
Homebrew <バージョン>

ここで、homebrewのバージョンが表示されれば、インストールされています。

2.Ruby,Railsのインストール

まず、homebrew経由で必要なgem一式をインストールします。
(もしかすると不要かも:ここはrailsチュートリアルを参考にしました)

ターミナル(zsh)

% brew install libtool libxslt libksba openssl libyaml

rubyのバージョン管理ツールrbenvruby-buildをインストールします。
これでrubyを土台にしてRubyGemを使って、railsが構成できる準備が整います。

ターミナル(zsh)

% brew install rbenv ruby-build

■ Rubyインストール

まず、インストール可能なrubyバージョンを確認します。

ターミナル(zsh)

% rbenv install --list-all

上記で確認したバージョンの中から指定したいバージョンを選択し、rubyをインストール&コンパイルします。

ターミナル(zsh)

% rbenv install <バージョン>

インストール出来ているrubyバージョンを確認します。

ターミナル(zsh)

% rbenv versions

もしインストール済みのrubyで不要なものがあれば
削除しておきましょう。

ターミナル

% rbenv uninstall バージョン

ここで、ターミナルで使用しているシェルを調べておきます。

ターミナル(zsh)

% echo $SHELL

〜〜実行結果〜〜
/bin/zsh

私の場合、上記通り、zshが動作しているようでした。

先程に調べたシェルに対して、rbenv初期化コードを書き込みます。
(おそらく、MacOSがCatalinaの方は、zshかと思います)

ターミナル(zsh)

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

初期化した内容をすぐに反映させます。
(ターミナルを再起動しても同じ動作となるはずです。)

ターミナル(zsh)

% source ~/.zshrc

土台となるrubyをバージョン指定します。
(globalは全範囲で使われる設定で、localとするとディレクトリ毎で制御できるようです。)
※railsインストールする前に行います。

ターミナル(zsh)

% rbenv global <バージョン>

一度、rubyがインストールできているか確認します。

ターミナル(zsh)

% ruby -v

■ Railsインストール
railsのバージョンを指定して、インストールします。
(RubyGemsをもって、railsをインストールしている)

ターミナル(zsh)

% gem install rails -v <バージョン>

なお、インストール済みのrailsで不要なバージョンが存在する場合は
削除しておきましょう。

ターミナル
# インストール済みのrailsバージョンを全て確認する
% gem search ^rails$ -l

*** LOCAL GEMS ***

rails (6.1.4, 6.1.3.2, 5.1.7)

# 不要なバージョンを削除する
% gem uninstall rails -v '5.1.7' 
% gem uninstall railties -v '5.1.7'

ちゃんと、railsがインストールできているか確認します。

ターミナル(zsh)

% rails -v

これで、rubyとrailsがインストールできました!良かった良かった!

3.MySQLのインストールから設定まで

続いて、データベースの設定していきます。
まず、homebrewを使ってmysqlをインストールします。

ターミナル(zsh)

% brew install mysql

mysqlがインストールできたか確認します。

ターミナル(zsh)

% brew info mysql

さっそく、mysqlサーバーを起動させてみます。
(停止する時はstartではなくstopをコマンドとします。)

ターミナル(zsh)

% mysql.server start

root権限でログインします。
現状はパスワード無しで、ログイン可能です。

ターミナル(zsh)

% mysql -u root

ログインできた所で、セキュリティ設定を行います。
(mysqlにログインするとプロンプトがmysql>に変わります。)

ターミナル(MySQL)

mysql> mysql_secure_installation

上記コマンドを行うと、下記質問をMySQLから聞かれるので、それぞれ回答していきます。
(基本は全てy(YES)の回答で良いのかなと。)

  • 質問内容
    • パスワードの設定を行うか                 → 回答:y
    • パスワードの強度はどうするか               → 回答:0 ~ 2
      (Low:0, Medium:1, Strong:2)
    • 登録パスワードは入力してください             → 設定するパスワードを入力
    • 入力されたパスワードで設定して良いか           → 回答:y
    • 匿名ユーザーを削除するか                 → 回答:y
    • リモートサーバーからrootユーザーへのアクセスを遮断するか → 回答:y
    • テスト用のデータベースを削除するか            → 回答:y
    • (最後)入力内容をすぐに反映するか            → 回答:y

上記が設定できたら、パスワードが設定できているか確認のため
exitコマンドでMySQLから脱出します。

ターミナル(MySQL)

mysql> exit

先ほどのMySQLへのログインコマンドに、-pオプション(password)を付けると
PASSWORDがプロンプト表示されますので、設定したパスワードを入力します。

ターミナル(zsh)

% mysql -u root -p

Enter password: ここに設定したパスワードを入力する
         (セキュリティ上、表示はされません)

すると、再度rootユーザーでログインできるかと思います。
先程とは異なりパスワードありで、rootユーザーでログインできる様になりました。

ただし、管理権限をもつrootユーザーで常時ログインして
作業する事は望ましくないので、新規ユーザーを作成しておいた方が良いでしょう。
(当記事では触れませんが、下記記事が分かりやすく解説してくれています。)

参考: データベースを使用するユーザーを作成する方法

MySQLの新規ユーザー設定は、下記記事を参考にさせて頂きました。
@reeenapi さん、ありがとうございました。
■RailsのDBを(初めから| |後から)MySQLに変更する

4.Railsアプリ作成

railsアプリケーションを作成する前に、念のため、
homebrewでインストールされたものを一覧で確認しておきます。

ターミナル(zsh)

% brew list

開発する作業ディレクトリ(environment)を作成して、そこに移動します。

ターミナル(zsh)

# environmentディレクトリを作成
% mkdir environment

# 作成したenvironmentディレクトリに移動
% cd environment

railsのバージョンを指定して、アプリケーションを作成します。

※オプション
--skip-test:minitestを使用しない場合のオプション
-d mysql:MySQLをデータベースとして設定

ターミナル(zsh)

# <バージョン>は6.1.3など設定したいバージョンを記述
# <アプリケーション名>は何でもOK
% rails _<バージョン>_ new <アプリケーション名> -d mysql --skip-test

作成できたアプリケーションのディレクトリに移動します。

ターミナル(zsh)

% cd <アプリ名>

rails newコマンドでアプリを生成すると、命名したアプリ名のディレクトリ直下に
gemfileとdatabase.ymlが自動で修正されます。

はじめに、Gemfileのdatabase欄にあるgemが「sqlite(デフォルト)」ではなく
「mysql2」となっていることを確認します。

Gemfile
〜省略〜

# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.5'

〜省略〜

次にconfig/database.ymlで、usernameとpasswordが空白になっているので
さきほどMySQLで設定したものを記入していきます。

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <設定したユーザー名>
  password: <設定したパスワード>
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: アプリ名_development

test:
  <<: *default
  database: アプリ名_test

production:
  <<: *default
  database: アプリ名_production
  username: アプリ名
  password: <%= ENV['アプリ名_DATABASE_PASSWORD'] %>

ここで、railsコマンドでデータベースを作成しておきます。

ターミナル(zsh)

% rails db:create

これでMySQLの世界で新しいデータベースが作成されているはずです。

下記コマンドでmysqlにログインして確かめてみましょう。

ターミナル(zsh)

% mysql -u <ユーザー名> -p

Enter password: 

作成されているデータベースの一覧を出します。

ターミナル(MySQL)

mysql> show databases;

+-------------------------+
| Database                |
+-------------------------+
| アプリ名_development     |
| アプリ名_test            |
| ~以下省略~               |
+-------------------------+
 rows in set (0.00 sec)

先ほど、config/database.ymlで設定した名称で
・アプリ名_development(開発用)と
・アプリ名_test(テスト用)
の2つのデータベースが作成されていると思います。

これでMySQLのインストールと設定が完了しました!

番外:railsを使いやすくする

rubyのコード解析ツールとして、rubocopというgemがあります。

rubocop導入には、下記記事が参考にさせて頂きました。

@d0ne1s さん、ありがとうございました。
[■VSCodeでRubocopを使う]
(https://qiita.com/d0ne1s/items/a3566aca023d11f2bfc4)

5.Git/GitHubの設定

ここからは、変更履歴を残すGit/GitHubの設定をしていきます。

1.Git
Gitがインストールされているか、念のため、確認します。
(Macでは標準で搭載されていたはずです)

ターミナル(zsh)

% git --version

まず、Gitの設定をします。

ターミナル(zsh)

# 名前
% git config --global user.name "名前"

# メールアドレス
% git config --global user.email Eメールアドレス

# (任意)Gitのパスワードを1日(86,400秒)保持する設定
% git config --global credential.helper "cache --timeout=86400"

一旦、Gitの設定状況を確認します。

ターミナル(zsh)

% git config -l

railsアプリケーションのディレクトリに移動しておきます。

ターミナル(zsh)

% cd <アプリ名>

このディレクトリで、Gitの初期化を行います。
(.gitファイルが生成されて以降の変更記録が残っていきます。)

ターミナル(zsh)

% git init

.gitファイルが存在することを、念のため、確認します。
(ls:現ディレクトリ内のファイル一覧を表示, -a:隠しファイルも含める)

ターミナル(zsh)

% ls -a

.git . . . . . . . . 
↑ 隠しファイルが表示される 

gitの現況を確認します。
(未add・未commitの状態を把握)

ターミナル(zsh)

% git status

新規作成および変更を加えた全ファイルをgitのステージングエリアへ追加します。

ターミナル(zsh)

% git add .

ステージングエリアの変更分に問題がなければ、コミットします。
(-mでメッセージ付ける)

ターミナル(zsh)

% git commit -m "メッセージ"

これまでのcommit履歴を表示します。
(オプションの--onelineは1行表示)

ターミナル(zsh)

% git log --oneline


2.GitHub

■GitHub公式ページ(まず、こちらでリポジトリを作成する)
上記URLからリポジトリを作成後、GitHubと現在のGitのリポジトリを紐付けます。

ターミナル(zsh)

% git remote add origin https://github.com/GitHubアカウント名/アプリ名.git

Git commitで変更したファイルをGitHubへpushします。

ターミナル(zsh)

% git push origin master

これで、Git/GitHubの設定が完了です!

6.Herokuの設定からデプロイまで

herokuに関しては、下記記事の一部を実行しています。
@murakami-mm さん、ありがとうございました。
[■Herokuへのデプロイ方法【Heroku+Rails+MySQL】]
(https://qiita.com/murakami-mm/items/9587e21fc0ed57c803d0)

まず、herokuのインストールします。
■heroku公式ページ(参考)

ターミナル(zsh)

% brew tap heroku/brew && brew install heroku

いつものように、herokuがインストールできているかの確認します。

ターミナル(zsh)

% heroku -v

インストールできていれば、herokuサーバにアプリケーションを作成します。

ターミナル(zsh)

% heroku apps:create アプリ名

作成したアプリに、MySQLベースのClearDBというデータベースを適用させます。
無料ですが、容量が5MBです。詳細は下記にあります。
■heroku(ClearDB概要)

ターミナル(zsh)

% heroku addons:create cleardb:ignite

次は、設定のためにClearDBのURLを確認します。

ターミナル(zsh)

% heroku config

〜〜実行結果〜〜

=== アプリ名 Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true

そして、上記で取得したURLを参考にして、各種設定をしていきます。

ターミナル(zsh)

% heroku config:add DB_NAME='<データベース名>'
% heroku config:add DB_USERNAME='<ユーザー名>'
% heroku config:add DB_PASSWORD='<パスワード>'
% heroku config:add DB_HOSTNAME='<ホスト名>'
% heroku config:add DB_PORT='3306'
% heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'

再度、設定確認のコマンドを打って、ちゃんと設定できているか確認します。

ターミナル(zsh)

% heroku config

最後に、ローカルリポジトリの内容をherokuへpushします。

ターミナル(zsh)

% git push heroku master

git push Heroku masterコマンドを打つと、返答メッセージの文末あたりに
自分が作ったWEBアプリのURLが参照されます。

そのURLをクリックして、本番環境(heroku)でアプリが起動できているか確認してみてください!!

#終わりに

Qiita記事を中心に情報収集しながら、はじめて環境構築をした内容をまとめました。
現在、railsで新規アプリを実装していますが、毎日エラーと戦ってます。笑
今後は、学習内容のアウトプットのために、投稿記事を増やせればと思っています。
拙い文章でしたが、最後までお読みいただき、ありがとうございました!!!!!

それでは、また。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?