はじめに
私は irb
をよく使うので、せっかくなら常に最新版を使ってバグを見つけたいなと思いました。
irb
と reline
は git clone
しておおむね master
に追従しているので、ファイルパスを指定して irb
を起動することにしました。
ruby -I <path>
Ruby
起動時に -I
オプションをつけると、探索先を追加で指定することができます。
追加された探索先は $:
で確認できます。
i.rb
puts $:
-I
オプションをつけずに実行してみます。
~/sandbox ❯ ruby i.rb /usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18
-I
オプションをつけて実行してみます。
❯ ruby -I ~/sandbox i.rb /Users/mi/sandbox /usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18
指定したパスが探索先に増えました!
注意点
複数のパスを指定する場合は複数の -I
オプションを付ける必要があるようです。
~/sandbox ❯ ruby -I ~/sandbox ~/sandbox/ruby i.rb ruby: Is a directory -- /Users/mi/sandbox/ruby (LoadError) ~/sandbox ❯ ruby -I ~/sandbox -I ~/sandbox/ruby i.rb /Users/mi/sandbox /Users/mi/sandbox/ruby /usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0 /Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18
rbenv
のバージョンを指定する
環境変数 RBENV_VERSION
でバージョンを指定することができます。
~/sandbox ❯ RBENV_VERSION=2.7.2 ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin18] ~/sandbox ❯ RBENV_VERSION=3.0.0 ruby -v ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin18]
irb
をファイルパス指定で起動する
irb/exe/irb
から起動できます。
コマンド
RBENV_VERSION
でバージョンを固定し、-I
オプションで探索先を追加し、irb/exe/irb
で irb
を起動するコマンドです。
$ RBENV_VERSION=3.0.0 ruby -I /Users/mi/ghq/github.com/ruby/reline/lib -I /Users/mi/ghq/github.com/ruby/irb/lib /Users/mi/ghq/github.com/ruby/irb/exe/irb
実際に使ってみました。最新版の irb
と reline
を参照できていることがわかりました。
$ RBENV_VERSION=3.0.0 ruby -I /Users/mi/ghq/github.com/ruby/reline/lib -I /Users/mi/ghq/github.com/ruby/irb/lib /Users/mi/ghq/github.com/ruby/irb/exe/irb irb(main):001:0> irb_info => Ruby version: 3.0.0 IRB version: irb 1.3.1 (2021-01-12) InputMethod: ReidlineInputMethod with Reline 0.2.1 and /Users/mi/.inputrc .irbrc path: /Users/mi/.irbrc irb(main):002:0> Reline::VERSION => "0.2.1" irb(main):003:0> $: => ["/Users/mi/ghq/github.com/ruby/reline/lib", "/Users/mi/ghq/github.com/ruby/irb/lib", "/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/byebug-11.1.3/lib", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/extensions/x86_64-darwin-18/3.0.0/byebug-11.1.3", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/coderay-1.1.3/lib", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/method_source-1.0.0/lib", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/pry-byebug-3.9.0/lib", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby/3.0.0/x86_64-darwin18", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/site_ruby", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby/3.0.0/x86_64-darwin18", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/vendor_ruby", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0", "/Users/mi/.rbenv/versions/3.0.0/lib/ruby/3.0.0/x86_64-darwin18"]