embulk 0.9.XをBundlerで利用している人は、Gemfileでembulk.gemのバージョンを指定しよう

3 min read読了の目安(約2900字

本文書について

embulk 0.9.XをBundlerで利用している(embulkのプラグイン管理にGemfileを使っている人)への案内です。

要約

embulk 実行時に以下のようなメッセージが出力されたら、Gemfile を確認して修正をしましょう。

エラーメッセージ(0.10.26以降)

*******************************************************************************************
Running Embulk version (0.9.23) does not match the installed embulk.gem version (0.10.26).

If you use Embulk v0.9.* without Bundler:
   Uninstall embulk.gem from your Gem path.
   An embulk.gem-equivalent should be embedded in your Embulk's core JAR of v0.9.*.

If you use Embulk v0.9.* with Bundler:
   Try updating your Gemfile as below:
     gem 'embulk', '< 0.10'
   Bundler will find the embulk.gem-equivalent embedded in your Embulk's core JAR of v0.9.*.

If you use Embulk v0.10.*:
   Be aware that v0.10.* is an unstable development series. If you are aware of that,
   upgrade it to the latest v0.10.*, and use exactly the same version of embulk.gem.
   In case you use Bundler, your Gemfile should have 'embulk' as below:
     gem 'embulk', '0.10.XX'  # Exactly the same version of your Embulk's core JAR.

If you use Embulk v0.8.* or earlier:
   Update to the latest v0.9.*. v0.8 or earlier are deprecated.
*******************************************************************************************

エラーメッセージ(0.10.25まで)

*******************************************************************************************
Running Embulk version (0.9.23) does not match the installed embulk.gem version (0.10.25).

If you use Embulk v0.9.* or v0.10.[0-23] without Bundler:
   Uninstall embulk.gem from your GEM_HOME/GEM_PATH.
   An embulk.gem equivalent should be embedded in your Embulk's core JAR.

If you use Embulk v0.9.* or v0.10.[0-23] with Bundler:
   Try updating your Gemfile as below:
     gem 'embulk', '< 0.10'
   Bundler will find the embulk.gem equivalent embedded in your Embulk's core JAR.

If you use Embulk v0.10.25 or later:
   Use exactly the same version of embulk.gem.
   In case you use Bundler, your Gemfile should declare like:
     gem 'embulk', '0.9.23'

If you use Embulk v0.10.24:
   Update to v0.10.25 or later.

If you use Embulk v0.8.* or earlier:
   Update to the latest v0.9.*. v0.8 or earlier are deprecated.
*******************************************************************************************

変更前

gem 'embulk'

変更後

gem 'embulk', '< 0.10'

2021年1月19日以降(embulk 0.10.24から)、
現在開発中のembulk 0.10.X(開発版)で、embulkのgemがまた提供されるようになりました。
しかし中身は別物で、使い方も別物です。このgemには今まで本体に組み込まれていた、本体とのつなぎになるRubyコードのみが入っています。
Gemfileにバージョンを指定してない場合、最新版のembulk.gemがインストールされ不具合がでてしまうことが懸念されます。上記のエラーメッセージはそれを防止するためのものです。
0.10.25以降のembulk.gemでは、実行中のembulk本体とgemのバージョンを比較してバージョンが不一致だった場合、警告を出しプログラムが終了します。
こちらを回避する方法が上記で記載した'< 0.10'という表記です。
利用するgemは0.10より前のバージョンを利用するという意味です。

embulk bundleコマンドにはgem "embulk"にバージョンを指定するようなオプションは提供されていません。sed等のツールを使って適宜書き換えを行ってください(追記: 2021/2/15)