Posted at

【2019年度版】Railsの環境構築から動作確認までの手順を理解しながらやった(Mac, MySQL)


はじめに

Rails環境の既存プロジェクトの開発をしていると、なかなかRailsプロジェクトを1から開発することはありません。そうなると、プロジェクトの作り方が身につかないので、勉強がてらやってみました。


前提


  • Homebrewをインストールして

  • Homebrewからrbenvや、mysqlをインストールして

  • rbenvからRubyをインストールします

Rubyがインストールできれば、gem(Rubyのパッケージ管理ツール)が使えるので、gemからbundler(gemのver.管理ツール)やRailsをインストールします。

ここらへんの設定は、省略します。

その辺の設定は以下を参考にしてください。


環境


  • macOS HighSierra 10.13.6

  • Rails 5.2.0

  • Ruby 2.5.1

  • mysql 5.7.22


    • mysqlはdockerに作成



  • Docker version 18.03.1-ce


グローバルにあるRubyをなるべく汚さずに環境構築

Railsチュートリアルや入門書には、以下のように、GemパッケージとしてのRailsや、Railsプロジェクトをインストールするのを見ます。

$ gem install rails

$ rails new project

これだと、グローバルにgemがインストールされてしまいます。自分の場合だとrbenvを使っているので、

/Users/ユーザ名/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems

にインストールされるでしょう。

一生、1つのプロジェクトのみで開発する場合や、複数プロジェクト開発でも使用するパッケージのバージョンを1つ1つ合わせるなら別ですが、自分はその予定ではないので、グローバルなRubyにはBundlerだけインストールされてる状態にします。

以下、参考図←ちなみに、図はdraw.ioで、赤い注釈はSkitchで作成。それぞれ便利でした。

スクリーンショット 2019-03-16 15.17.15.png

図を見てもらうとわかりやすいですが、Rubyのバージョンは、プロジェクト毎にrbenvで管理します。そして、それぞれのgemのバージョンは、プロジェクト毎にBundlerで管理したいので、プロジェクト内にインストールします。ちなみに、RailsもGemのパッケージで、これもプロジェクト内インストールすることで、プロジェクト毎に任意のバージョンにできます。

ちなみに、この後の説明で出て来ますが、Railsプロジェクトを立ち上げるために、開発用サーバを起動するコマンドを実行しますが、

以下の2つのコマンドには違いがあります。

$ bundle exec rails s

こちらは、(おそらく同階層にある)RailsプロジェクトのGemfileで指定された環境でのサーバ起動

$ rails s

こちらは、グローバル環境でのサーバ起動です。今ままで区別わからず起動してました。

ここら辺の話は、この記事が参考になりました。

では、作業ディレクトリを作ります。


Railsプロジェクトをインストールするための作業するディレクトリを作成


作業ディレクトリの作成

$ mkdir my_blog

$ cd my_blog

この作業ディレクトリ名が、プロジェクト名になります。

次に、プロジェクト内のBundlerでGemを管理するために、Gemfileを作ります。


Gemfileの作成


Gemfileの作成

$ bundle init

Writing new Gemfile to /Users/ユーザー名/~/Gemfile


Gemfile内にあるgem "rails"のコメントアウトだけ消します。

スクリーンショット 2019-03-16 16.58.09.png

インストールが完了したら、Railsプロジェクトの作成をします。


Railsプロジェクトの作成


Railsプロジェクトの作成

$ bundle exec rails new . -d mysql



  • -d で使用するDBを指定


  • .でカレントディレクトリにRailsプロジェクトを作成する。という指定


Railsプロジェクトの作成

$ bundle exec rails new . -d mysql

exist
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
conflict Gemfile
Overwrite /Users/ユーザー名/~/Gemfile? (enter "h" for help) [Ynaqdhm]

実行すると、Gemfileを上書きしていいかと問われるので、Yesする。あとは、プロジェクトに必要なgemのインストールですね。


補足

自分の環境に限ったことかもしれませんが、rails newして、Gemfileを上書きしようとしたら、以下のようなエラーが出ました。

...

Permission denied @ rb_sysopen - /Users/ユーザ名/my_blog/Gemfile

書き込みの権限がなかったので、変更したら、Gemfileの上書きができました。

~/my_blog ❯❯❯ ll

-r--r--r-- 1 ryosuke staff 144B 3 16 16:57 Gemfile

$ chmod 644 Gemfile

~/my_blog ❯❯❯ ll

-rw-r--r-- 1 ryosuke staff 144B 3 16 16:57 Gemfile


Railsなど、必要なgemのインストール


Railsインストール

$ bundle install --path=vendor/bundle -j4


これで、グローバルのRuby配下じゃなく、プロジェクト(my_blog)ディレクトリ配下にあるvendor/bundleディレクトリ内にgemがインストールされます。

スクリーンショット 2019-03-16 17.25.50.png

また、オプションの-j4をつけることで、並列処理してくれる(らしい)ので、インストールが早くなります。

参考: https://qiita.com/camelmasa/items/5ca27ab398f105f86c76


DB作成

まず、config/database.ymlにあるhost,username,password,databaseを、ご自身のMySQLや、今回のプロジェクトに合わせて変更してください。

セキュリティ上、詳しく書けません。←なので自分以上に初心者の方は、ここでつまづきそうな予感。。

$ bundle exec rails db:create

Created database 'my_blog_development'
Created database 'my_blog_test'

MySQLにログインして、DBが作成された事を確認します。

mysql> show databases;

+-----------------------------------+
| Database |
+-----------------------------------+
| my_blog_development |
| my_blog_test |
+-----------------------------------+

DBが出来た事を確認できました(他のDBなどは省略してます)。


ローカルサーバの立ち上げ

$ bundle exec rails s

ブラウザで http://localhost:3000/ にアクセスして

スクリーンショット 2019-03-16 17.53.17.png

こんなん出ればOKです。

以上です!


作成手順(説明なし版)

実行するコマンドだけ取り上げると

# 作業ディレクトリの作成

$ mkdir my_blog
$ cd my_blog

# Gemfileの作成
$ bundle init

# Railsプロジェクトの作成
$ bundle exec rails new . -d mysql

# Railsなど、必要なgemのインストール
$ bundle install --path=vendor/bundle -j4

# DB作成
$ bundle exec rails db:create

# ローカルサーバの立ち上げ
$ bundle exec rails s

エンジニア名乗るなら、これくらいは15分でサクッと作れるようになりたいですね。


参考