rbenv-gemsetという存在を知る
インストールはhomebrewで行います。
$ brew install rbenv-gemset
rbenvとコンボで使う管理ツールです
仕組み的には、プロジェクトの中にある.ruby-versionに伴い、.rbenvの中に格納されるrubyバージョンのディレクトリにgemsetsというディレクトリを設置します。
このrbenv-gemsetを利用する前に、rbenvを用意する必要がありますので、こちらを先に読んで設定の上、下記から始まる記事を読んでください。
rbenvでプロダクト毎にrubyのバージョン管理をする
rbenvでの設定が済んだら、下記のようにしてgemsetを作成していきます。
rbenv gemset create 使われているRubyバージョン gemセットの名前(プロジェクト名にするのがセオリーのようです)
(ex:
rbenv gemset create 2.6.0 gemgem-yes
list
これを使うと設置したgemset名とそれに紐づいたrubyバージョンをみることができます。
rbenv gemset list
gemsetを有効にする
有効にするために、プロジェクトのディレクトリ内で
echo >.rbenv-gemsets gemset名
で、.rbenv-gemsetsというファイルを作成します。
rbenv gemset active
=> gemset名 global
こうすることで、上記のように、gemsetが有効化します。この状態でbundle insetallをすると作成されたgemsetのディレクトリにgemが入っていきます。
Railsのアプリケーションの開発環境を整える
状況としては2パターンです。元々開発されているアプリケーションにアサインされた時か、新しくアプリを作る時です。
若干手順が異なるので、ここに記しておこうと思います。
新規アプリの場合
まずは、gemコマンドを使ってRails本体をインストールします。
気をつけなければならないこと
初めて開発環境を構築する時、macで行う時限定かもしれませんが・・・windows環境はわかりません・・・すいません。
macの場合、元々入っているgemとrailsに妨害を食らって、sudo gem install railsループにハマる可能性があります。
試しに、whichコマンドを打ってみると、
$ wich rails
/usr/bin/rails
こんな風にデフォルトで入ってる邪魔な奴がいます。本質的にはパスの問題なので、以前書いたapple-git問題と同じシチュエーションですが、Railsの方がハマりやすい罠として顕現する気がします。
なぜなら、嘘の指示を出してきますからね・・・sudo gem install railsのコマンドを言われた通りに行うと、rbenvの実行権限が変化し、更なる面倒くさい事態を引き込むことになるからです。
もし、既にこのsudo gem install railsのループにハマり、今度は、gem uninstall railsなどのコマンドすらPermission deniedが原因で打てなくなったら、まず、下記コマンドで実行権限を奪還してください。
$ sudo chown -R ユーザー名:staff /Users/ユーザー名/.rbenv
さて、実行権限を奪還したら、今度は、.rbenv内部にインストールしたrailsを使えるようにします。Catalinaからシェルのデフォルトはzshになったので、.zshrcの書式でここでは記述します。bashやfishをお使いの方は、適宜書き換えてください。
export PATH=$HOME/.rbenv/shims:$PATH
変更をsourceコマンドで反映させます。
$ source ~/.zshrc
$ gem install rails
こうすることで、
$ rails -v
Rails 6.0.3.4
whichコマンドでも参照しているパスを見てみます。
$which rails
/Users/ユーザー名/.rbenv/shims/rails
ちゃんとrbenv管理下のRailsを参照していますね。これでもう大丈夫です。
と、出てくれば、OKです。
ようやく、アプリを作成するコマンドを使います。
- dbがMySQLの場合
$ rails new アプリ名 -d mysql
もしくは、既にリポジトリがある場合だったら下記みたいにする
$ rails new . -d mysql
ここで、bundle installした時にmysql2がインストールできないエラーに当たるかもしれません。そんな時は、この記事の下にある「開発環境周りで使うであろう自分の備忘録Qiita記事」の所に貼ったリンクの記事をご覧ください。
$ bundle install
既存のアプリの場合
最初は恐らくbundle intallする為のbundleが無い可能性があるので、最初はgem installでbundlerを落としておきます。
$ gem install bundler
$ bundle install
下記のパスに移動して上げてgemのディレクトリにgemの中身が落ちてきていれば成功です。rubyのバージョンはそれぞれのrbenvでインストールしたものに合わせて、また、gemセットの名前は自分で作ったものでパスを打ってください。
$ cd .rbenv/versions/rbenvで落としたrubyバージョン/gemsets/gemセット/gems
gemsetの削除
rbenv gemset delete 使われているRubyバージョン gemセットの名前
(ex:
rbenv gemset delete 2.6.0 gemgem-yes
=> deleted gemgem-yes from 2.6.0