Edited at

【初心者向け】anyenvでRailsの環境構築

※Mac向けの記事です


Homebrewの代わりにanyenv

Ruby on Railsの公式チュートリアルではHomebrewを使った環境構築を紹介していましたが、

私はanyenv(※)を利用しているため、導入手順を調べて構築しました。

何度かエラーが出てハマったので、手順を丁寧に残しておきます。


anyenv とは、ざっくり言うと、rbenv とか、nbenv とか複数バージョンをインストールできる **env 系をまとめて管理できるツール。


Mac に anyenv でサクッとマルチ開発環境構築より引用


構築手順

参考:Rails Girls インストール・レシピ

Homebrewを利用する場合は、上記URLの手順通りで構築できます。


前提


  • MacOS

  • Homebrewインストール済み(未インストールの場合より早く構築可能)


Command line toolsをインストール

$ xcode-select --install

※"$"はコマンドに入力しないこと(以後省略)


Homebrewでインストールしたenv系をアンインストール

Homebrewを導入していない方はスキップしてください。

brewとanyenvが混在すると競合する可能性があるため、brewでインストールしたenv系を削除する。

$ brew uninstall rbenv

他のツールが依存していると削除できないこともあるので、envに依存しているツールを先に削除する。ディレクトリが残ってしまうので、同時に削除しておく。

$ rm -rf ~/.rbenv


anyenvのインストール


Homebrew導入済み場合

$ brew install anyenv

$ anyenv init
# 実行後、ターミナルを再起動する


Homebrewを使わない場合


  • GitHubのソースからインストール

$ git clone https://github.com/anyenv/anyenv ~/.anyenv


  • パスを通す

GitHubより引用

#bashの場合

$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile

#Ubuntu Desktopの場合
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc

#Zshの場合
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc

#Fishの場合
$ set -Ux fish_user_paths $HOME/.anyenv/bin $fish_user_paths


  • セットアップしてターミナルを再起動

$ ~/.anyenv/bin/anyenv init

# 実行後、ターミナルを再起動する


各env系のインストール


  • 今回はnodenv, rbenvを導入する。

$ anyenv install nodenv

$ anyenv install rbenv


各種の安定版のバージョンを確認

$ nodenv version

$ rbenv version

# rehashしておく(gem)
$ nodenv rehash
$ rbenv rehash

私の場合は下記の通りになりました

$ rbenv version

2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

$ nodenv version
12.1.0 (set by /Users/******/.anyenv/envs/nodenv/version)


bundlerのインストール


bundlerがインストールされているか確認

$ bundle -v

# 私の場合は以下のように出力された
Bundler version 2.0.2

# インストールを確認したらアップデートする
$ gem update bundler


インストールされていなかった場合

bundleをインストールする

$ gem install bundler

$ bundle -v


Railsのインストール


作業ディレクトリ作成

# フォルダをカレントディレクトリに作成

$ mkdir rails_sample(フォルダ名)

# 作成したフォルダに移動
$ cd ~/rails_sample

cd /rails_sampleで移動するのを忘れるのに注意(忘れるとrails server実行時にエラーが出ます)


Gemfileの作成

これを忘れるとrailsファイル作成時に「.gemがありません」というエラーが出ます。

# ~/rails_sample配下にて

$ bundle init


  • Gemfileを編集する

# Gemfile編集モードに入る

$ vi Gemfile

# 編集モードに切り替わるので, iを押下してカーソルの左から入力開始(i: Insert の意味)
# #gem "rails" をコメント解除(#を削除)して以下のようにする

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails"


Railsのインストール

# 念の為アップデートしておく

$ sudo gem update --system

# railsをインストール
$ bundle install --path=vendor/bundle

# railsのバージョンを確認
$ bundle exec rails -v
Rails 5.2.3

# rehashしておく(railsコマンドを使えるようにする)
$ rbenv rehash

# sampleフォルダにrailsアプリフォルダ(app)を作成

~/rails_sample
$ bundle exec rails new app
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create Gemfile
(以下略)


rails serverを起動する

# ディレクトリ移動(作成したappフォルダへ)

$ cd /app

# サーバー起動
$ rails server

ここで起動したら完了です🎉


Rails is not currently installed on this system.

上記のメッセージが出た場合、指示に従います。

Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your "rails" command.

$ sudo gem install rails
# パスワードを要求されたら入力する

~/rails_sample/app
$ rails server


Yay! You're on Rails!

http://localhost:3000/ へアクセスするとRailsの画面が表示されます🎉

スクリーンショット 2019-06-20 15.19.48.png


rails server が起動しない😣

私がハマったパターンの解決策です。以下を試してみてください。

(上記手順にあった $rbenv rehash を忘れたがために発生したものと思われます)

# 各envのバージョン確認

~/sample_rails
$ anyenv version
nodenv: 12.1.0 (set by /Users/******/.anyenv/envs/nodenv/version)
rbenv: 2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

# 現在の環境で動いているrbenvのバージョン確認(*が付いてるもの)
$ rbenv versions
system
* 2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

# rehashしておく
$ rbenv rehash

# 念の為railsを再インストール
$ sudo gem install rails

# railsのバージョンを確認
$ rails -v
Rails 5.2.3

# インストールを確認したのでディレクトリ移動
~/sample_rails
$ cd /app

# server起動
~/sample_rails/app
$ rails server

私の場合はrailsを何度インストールしても

Rails is not currently installed on this system. が表示されましたが、上記の方法で解決できました。

参考になれば嬉しいです。


参考

参考にさせていただきました🙏