Embulkが0.6系から0.7系にメジャーバージョンアップされて、色々と機能が増えたのに加えて、APIにも変更が加わったようです。
プラグインを開発している人は、まず embulk selfupdate してから、embulk migrate <plugin dir> を実行すれば、万事幸せです。gradle のバージョンは自動で上げます。非互換になったAPIは自動で書き換えます。 #embulk
— Sadayuki Furuhashi (@frsyuki) 2015年8月19日
Twitterで↑のお達しがあったのを見かけて、過去に作ったembulk-filter-insertプラグインが動かなくなっていないか、一応確認してみました。何も変更しなくてもEmbulk 0.7系で動きました……。おそらく、大したことしてないプラグインだからだと思います。
プラグインのmigrate手順
とはいえ、一応念のため、リリースノートにあるembulk migrate
サブコマンドを実行しておきました。
happyturn% embulk selfupdate 2015-08-19 23:28:14.239 +0900: Embulk v0.6.18 Checking the latest version... Found new version 0.7.1. Downloading https://dl.bintray.com/embulk/maven/embulk-0.7.1.jar ... Updated to 0.7.1. happyturn% embulk migrate embulk-filter-insert 2015-08-19 23:50:55.789 +0900: Embulk v0.7.1 Detected Ruby plugin for unknown Embulk version... Created /.ruby-version Modified /embulk-filter-insert.gemspec Done. Please check modifieid files.
embulk migrate
サブコマンドで変更があったのは、上記の2ファイルだけでした。非互換のAPIは特に使っていなかったみたいです。.ruby-versionはjruby-9.0.0.0の指定、gemspecは以下の行が追加されただけでした。
spec.add_development_dependency 'embulk', ['~> 0.7.1']
あとは、以下の手順でRubyGems.orgに公開。
% bundle install % bundle exec rake build % bundle exec rake release
すでにインストール済みの方は、以下のコマンドでアップデートしてご利用ください。
% embulk gem update embulk-filter-insert
Liquid(テンプレートエンジン)の恩恵
Embulk 0.7系から、設定ファイルが Liquid(テンプレートエンジン)対応になり、設定ファイルに環境変数を埋め込めるようになりました。設定ファイルの拡張子を .yml.liquid にして、以下のように{{ env.環境変数名 }}
と記載すると、その箇所が環境変数に置き換えられます。
Release 0.7.0 — Embulk 0.7 documentation
Enambed Liquid template engine. If configuration file name ends with .yml.liquid, embulk embeds environment variables using Liquid template engine.
embulk-filter-insertとの関係で言うと、例えば環境変数にホスト名を埋め込んでおけば、共通の設定ファイルで、そのホスト名をカラムに挿入できるようになりました。
filters: - { type: insert, column: { host: {{ env.HOSTNAME }} }, at: top }
以下のようにホスト名を設定し、
happyturn% export HOSTNAME=happyturn
previewコマンドを実行すると、先頭のカラムにホスト名が入ります。便利ですね!(僕は何もしてませんけど)
happyturn% embulk preview embulk-simple-test/config.yml.liquid 2015-08-20 00:51:22.255 +0900: Embulk v0.7.1 2015-08-20 00:51:23.330 +0900 [INFO] (preview): Loaded plugin embulk-filter-insert (1.1.0) 2015-08-20 00:51:23.346 +0900 [INFO] (preview): Listing local files at directory '/Users/myoshiz/devel/embulk-simple-test/csv' filtering filename by prefix 'sample_' 2015-08-20 00:51:23.351 +0900 [INFO] (preview): Loading files [/Users/myoshiz/devel/embulk-simple-test/csv/sample_01.csv.gz] +-------------+---------+--------------+-------------------------+ | host:string | id:long | account:long | time:timestamp | +-------------+---------+--------------+-------------------------+ | happyturn | 1 | 32,864 | 2015-01-27 19:23:49 UTC | | happyturn | 2 | 14,824 | 2015-01-27 19:01:23 UTC | | happyturn | 3 | 27,559 | 2015-01-28 02:20:02 UTC | | happyturn | 4 | 11,270 | 2015-01-29 11:54:36 UTC | +-------------+---------+--------------+-------------------------+
embulk-filter-insertプラグインの詳細は、過去記事をどうぞ。
プラグインの使い方などの紹介記事:カラムを好きな場所に挿し込みたい人のためのembulk-filter-insertプラグイン - 無印吉澤@HatenaBlog