初心者インフラエンジニアが困ったときに試行錯誤するブログ

インフラエンジニアが,開発の勉強をするときのログを残します

【Rails開発環境構築】rbenvをインストールしてbundleをプロジェクト管理してhelloworldする

実現したいこと

railsプロジェクトを複数立ち上げるときに,ruby本体のbundlerを汚さないように管理したい

やったこと

rbenvをインストールして,プロジェクト用のruby環境を管理しました.

$ brew update 
$ brew install rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ rbenv install 2.3.3
$ rbenv global 2.3.3

bundleもきれいにインストールするため,一度globalをきれいにしてから入れます

$ rbenv exec gem list
$ sudo gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'`
$ gem install bundler

と思いきや,パーミッションでエラーが起きました.sudo をつけると今度は,

ERROR:  Error installing bundler:
    bundler requires RubyGems version >= 3.0.0. Try 'gem update --system' to update RubyGems itself.

というエラーが...

調べてみると,パスが通ってなかったみたい.

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17]
$ source ~/.bash_profile
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin17]

ちゃんとrubyのバージョンが合いました.でもgem install bundlerは通りませんね.

$ which ruby
/Users/username/.rbenv/shims/ruby
$ which bundle
/usr/local/bin/bundle

ここに,bundleがグローバルになってしまい,rbenvの管理下になってないことが原因みたい.

とりあえず出たエラーに従い,以下コマンドを実行

$ gem update --system

インストールされたっぽい表示が出たので,インストールできたのかな.再度gem install bundlerしようとするとconflict起きるのですでに入ったみたい

試しに,test/hello-railsプロジェクトを適当に立ち上げ,railsを入れて見ます

$ bundle init
$ vi Gemfile #railsのコメントを入って外す
$ bundle install --path=vendor/bundle --binstubs=bundle_bin

--binstubsのおかげでbundle execをわざわざつけなくてもローカルのbundleから呼び出してくれるみたい.なのですが,できない.なんで.bundle execつければいけるけど

悔しいので再度プロジェクトを消してやり直す

$ rm -rf hello-rails
$ mkdir hello-rails 
$ cd hello-rails 
$ rbenv local 2.3.3
$ bundle init 
$ vi Gemfile
# gemの#を削除
$ bundle install --path=vendor/bundle --binstubs=bundle_bin
$ rails -v

できない...

調べてみると,どうやらrails4以降は--binstubsを使わないらしいです.

じゃあしょうがないか..とりあえずbundle execつけるだけでいいのでそこまでおおきな問題でもない

$ bundle exec rails s
$ ls 
$ rm -rf Gemfile.lock bin bundle_bin
$ bundle install
$ bundle exec rails -v
Rails 5.2.2

とりあえずRails5は入ったのですが,rails sできない.

あ,rails newするのを忘れておりました.

$ bundle exec rails new hello-rails
$ cd hello-rails 
$ rails s 

無事みんなの顔が見れました.ただこれもしかしたらbundleがglobalになっている可能性が...rails sで普通に立ち上がったし.てことで一応vendorの中にいれます

$bundle install --path=vendor/bundle

どうやら,

$ bundle exec rails new プロジェクト名

ではなく,

$ bundle exec rails new .

でカレントディレクトリに入れておけばよかった模様.GemfileはYで上書きで.

以上で,ひとまずrubyのインストールからbundleのきれいなインストールまでをおさらいできました.具体的に自分でやってみるのはやはり大切ですね

ではでは.

注意点

bundle をインストールするときや消すときなど,環境汚さないように注意して下さい. Git管理している人はとくに,Gitリポジトリごと消したり上書きしてしまったりするのに注意(一回やったことがあります...)

参考

以下の記事を参考にさせていただきました.

https://blog.tokoyax.com/entry/ruby/bundler

bundle install しようとしたら ruby のバージョン違くてコケた話 - Qiita

Macに慣れていない頃にRubyのインストール設定したことの整理 - Qiita

https://qiita.com/youcune/items/222777415f00d19cccb4

本記事について

本記事は,学習を目的に書かれています.

間違い,改良案などございましたら,コメントしていただけると幸いです.

基本的に編集途中ですので,何を書いてほしいかもコメントいただけると,

その情報を中心に追記します.