Ruby・bundlerのインストールで詰まった話
やりたかったこと
CTFにチームで出ることになり、連絡手段として新しくSlackを作った。
スタンプを増やそうと思い探したら、rubyスクリプトでインポートできるものを発見。
dockerはこの前やったし、rubyやってみるかーと思ったら何箇所か詰まったのでまとめ。
スタンプ自体はとても汎用性が高いのでおすすめ。
環境
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
してもダメだった。
インストールできたっぽいけどエラーって一体何?と思い、
エラーを完全コピーして調べる。
オチ
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もそのうち手を出したい