embulk のプラグイン等のデバッグをしていて、 embulk 環境の JRuby 特有の条件や性質にぶち当たることがある。
そういう場合に、 embulk の世界でインタラクティブにデバッグできたら便利だな、と考えていた。
探してみた所、どうやらそのような隠しコマンドが存在するようだ。
勝手に隠しコマンドと呼んでみたものの、実はどこかに記述されているのかもしれない。
少なくとも 2017 年 10 月 4 日現在、 Web ドキュメント や README や embulk --help
には見つけられなかった。
この記事で解説してみる (誤った理解があるかもしれない)
embulk irb
jirb (JRuby の IRB ) に入る事ができる (インタラクティブシェルや REPL の類)
あとはいつも通り。たとえば
$ embulk irb
2017-10-04 23:49:33.706 +0900: Embulk v0.8.30
irb(main):001:0> p 'yay'
"yay"
=> "yay"
irb(main):004:0> 3.times {|i| print(i)}
012=> 3
当然、プラグインを require して使うこともできる。デバッグが捗る。
embulk exec
embulk exec
は bundle exec
のように embulk 環境でシェルコマンドを実行できる。
たとえば、環境変数を表示できるコマンドである env を実行すると
$ embulk exec env
GEM_HOME=...
JAVA_MAIN_CLASS_12912=...
RUBY=...
JAVA_ARCH=x86_64
GEM_PATH=
.
.
.
など、環境変数が得られる。
embulk gem
でインストールしたパッケージに付属するコマンドも実行できるようになる。
2017 年 10 月 5 日 追記:
どうやら廃止される可能性があるらしい。 (hiroysato さんから教えていただきました。ありがとうございます。)
こんにちは、こちらの機能ですが、現在EmbulkのJRubyの依存を減らす作業をしていて、v0.9で廃止されるかもとのことです。こちらに要望を書くと良いと思います。https://github.com/embulk/embulk/issues/631 … ※ JRubyのプラグインが使えなくなるという意味ではないです。
— hiroyuki sato (@hiroysato) 2017, 10月 5
まだ見つけたばかりだし un-JRuby-ing the boot process と呼んでいる改善によって JRuby のデバッグしにくさが発展的に解消されるのであれば、 embulk irb
や embulk exec
が使えなくても平気かなぁ?