Port 53

明日のための技術メモ

Ruby・bundlerのインストールで詰まった話

やりたかったこと

CTFにチームで出ることになり、連絡手段として新しくSlackを作った。
スタンプを増やそうと思い探したら、rubyスクリプトでインポートできるものを発見。
dockerはこの前やったし、rubyやってみるかーと思ったら何箇所か詰まったのでまとめ。
スタンプ自体はとても汎用性が高いのでおすすめ。

github.com

環境

MacOS Mojave 10.14.6

rbenvのインストールと適用

最初にデフォルト環境の確認。

 $ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

必要なのは2.5.1なので、先にバージョン管理のためrbenvを入れる

$ brew update
$ brew install rbenv

$ rbenv --version
rbenv 1.1.2

#インストール可能なバージョン表示
$ rbenv install -l

rbenvがインストールできたので、Ruby2.5.1を入れる

rbenv install 2.5.1
ruby-build: using openssl from homebrew
Downloading ruby-2.5.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
Installing ruby-2.5.1...
ruby-build: using readline from homebrew
Installed ruby-2.5.1 to /Users/saturn/.rbenv/versions/2.5.1

ところが、インストールしても規定のRubyのバージョンが古いまま。
2.5.1に切り替えてもダメだったので~/.bash_profileにeval "$(rbenv init -)"を追記。

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

#2.5.1へ切り替える
$ rbenv global 2.5.1

$ rbenv versions
  system
* 2.5.1 (set by /Users/saturn/Downloads/slack-reaction-decomoji-master/scripts/.ruby-version)

#Rubyのパスを確認する
$ which ruby
/usr/bin/ruby

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"  

#viで~/.bash_profileへ追記後、再読み込み
$ source ~/.bash_profile

#確認
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]

bundlerのインストール

bundlerをインストール、できたように思えたが別のエラーでダメ

 $ gem install bundler
Fetching: bundler-2.0.2.gem (100%)
Successfully installed bundler-2.0.2
Parsing documentation for bundler-2.0.2
Installing ri documentation for bundler-2.0.2
Done installing documentation for bundler after 3 seconds
1 gem installed


$ bundler -v
Traceback (most recent call last):
    2: from /Users/saturn/.rbenv/versions/2.5.1/bin/bundler:23:in `<main>'
    1: from /Users/saturn/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/saturn/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)

rbenv rehashしてもダメだった。
インストールできたっぽいけどエラーって一体何?と思い、
エラーを完全コピーして調べる。

オチ

blog.hokkai7go.jp

bunder2とRubyGemsの相性の問題で、きちんとバージョンを明示して
入れてあげないといけないとのこと。こんなことあるのね。。。

$ gem install bundler -v '1.17.3'
Fetching: bundler-1.17.3.gem (100%)
Successfully installed bundler-1.17.3
Parsing documentation for bundler-1.17.3
Installing ri documentation for bundler-1.17.3
Done installing documentation for bundler after 3 seconds
1 gem installed

$ rbenv rehash

$ bundle -v
Bundler version 1.17.3

あとはgithubに出ている手順を真似するだけ。
スタンプセットを入れる、だけのはずがRubyの環境設定の勉強になった。
せっかくだからRubyもそのうち手を出したい

参考