今までRailsアプリの開発環境は全部Dockerで作ってたけど、雑に作って挙動確認したい時とかにいちいちDockerで環境作るの面倒なので、ローカルにもRailsの環境を作っておく。
作るもの
- DBはsqlite
- Rubyのバージョンはrbenvで管理
前提
- macOS Catalina 10.15.7
- Homebrewが使える
- シェルはzsh
rbenvをインストール&セットアップ
$ brew install rbenv ruby-build
$ rbenv -v
rbenv 1.1.2
$ vim ~/.zshrc
.zshrc
eval "$(rbenv init -)"
$ source ~/.zshrc
Rubyをインストール
$ rbenv install --list # インストールすることが可能なRubyのバージョン一覧が表示される
$ rbenv install 2.7.2 # Ruby 2.7.2をインストール
$ rbenv versions # 現在インストールされているRubyのバージョン一覧
$ rbenv global 2.7.2 # 今回インストールしたバージョンのRubyを使用するように設定を変更
$ exec $SHELL -l
$ ruby -v
2.7.2 # 違うバージョンが表示されたら、シェルを再起動して再確認する
Railsをインストール
$ gem install rails -v "6.1.3.1"
$ exec $SHELL -l
$ rails -v
Rails 6.1.3.1
Railsアプリを作成、動作確認
$ rails new sample_app
$ cd sample_app
$ rails s
http://localhost:3000
にアクセスして表示を確認。
その他
- システムのRuby(Macに元々入ってるRubyを使うと、パーミッションの問題でRailsがインストールできないからrbenvとか使った方が良い)
-
.zshrc
内の記述について-
eval
は引数にセットしたコマンドを実行するコマンド - ここでは
rbenv init -
を実行している - なぜ直接実行せず、evalを通しているのか?
- rbenv init -の内部の処理で
export
コマンドで環境変数を設定する処理がある - シェルスクリプトはサブシェル等で実行されるため、コマンド内で変数をexportしても元のシェルにはなんら影響がない
- evalを使ってexportすると、元のシェルに環境変数を設定することができる
- rbenv init -の内部の処理で
-
- rails 6.1.3をインストールしようとしたら、mimemagic関連のエラーが出たから6.1.3.1に変更した