Skip to content

Instantly share code, notes, and snippets.

@hiroyuki-sato
Last active December 24, 2015 08:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroyuki-sato/a4e7416b01e2a2fe7704 to your computer and use it in GitHub Desktop.
Save hiroyuki-sato/a4e7416b01e2a2fe7704 to your computer and use it in GitHub Desktop.
Embulkとrubygem

Embulkとrubygem

embulk-plugin-input-roo-excelはExcelのデータを読み込むためのInputプラグインです。このプラグインでは、Excelファイルを読込みするためにrubyのライブラリrooを使用しています。

このドキュメントはEmbulkで、Rubyのライブラリを使うためにはどのようにしたら良いかをメモしたものです。

このドキュメントは一部不完全なところがあります。(まだ手順が確立できておらず試行錯誤中です。)

環境

  • OS: CentOS7
  • Java: OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13)
  • Embulk: 0.3.2

現在の課題

  • 「良さそうな手順」よりももっと簡単に環境を整備できるだろうか?
  • java -jar embulk.jar gem install embulk-plugin-input-roo-excel したときにrooを入れる方法
  • embulk-plugin-input-roo-excel/Gemfileにgem 'roo'と書けばgem insallしたときに関連するパッケージが導入される?

良さそうな手順

バンドルの作成

空のバンドルを作成します。

java -jar embulk.jar  bundle my_bundle
Initializing my_bundle...
Fetching: bundler-1.7.12.gem (100%)
Successfully installed bundler-1.7.12
1 gem installed
The Gemfile specifies no dependencies
Your bundle is complete!
It was installed into .

roo gemの導入

gem install コマンドでrooのgemを導入します。

java -jar embulk.jar -b  my_bundle gem install roo
Fetching: ruby-ole-1.2.11.8.gem (100%)
Successfully installed ruby-ole-1.2.11.8
Fetching: spreadsheet-1.0.1.gem (100%)
Successfully installed spreadsheet-1.0.1
Fetching: nokogiri-1.6.6.2-java.gem (100%)
Successfully installed nokogiri-1.6.6.2-java
Fetching: rubyzip-1.1.7.gem (100%)
Successfully installed rubyzip-1.1.7
Fetching: roo-1.13.2.gem (100%)
Successfully installed roo-1.13.2
5 gems installed

確認

インストールされたgemはどこへ?、my_bundle/jruby/1.9/gems/へインストールされるようです。

ls -1 my_bundle/jruby/1.9/gems/
bundler-1.7.12
nokogiri-1.6.6.2-java
roo-1.13.2
ruby-ole-1.2.11.8
rubyzip-1.1.7
spreadsheet-1.0.1

gem listでインストールされたパッケージを確認します。

java -jar embulk.jar -b  my_bundle gem list 

*** LOCAL GEMS ***

bundler (1.7.12)

あれ??、表示されない。おかしいな

Gemfileにrooのエントリを追加します。

vi my_bundle/Gemfile
# ..
gem 'roo'
% java -jar embulk.jar -b  my_bundle gem list 

*** LOCAL GEMS ***

bundler (1.7.12)
nokogiri (1.6.6.2 java)
roo (1.13.2)
ruby-ole (1.2.11.8)
rubyzip (1.1.7)
spreadsheet (1.0.1)

今度は正しく表示されました。

あとは、my_bundle/embulk以下にプラグインを書いて次のように実行すれば意図どおり動作するようです。

vi my_bundle/embulk/input_roo_excel.rb

設定ファイルは次のとおりです。

cat config.yml 
exec: {}
in:
  type: roo_excel
  paths: ["/home/arch/test"]
  columns:
    - { name: name, type: string }
    - { name: name_kana, type: string }
    - { name: e-mail, type: string }
out: {type: stdout}

プレビューを実行します。

env LANG=ja_JP.utf-8  java -jar embulk.jar  -b  my_bundle preview config.yml 
Excel input started.
Excel input thread 0...
+-------------+------------------+---------------------------------+
| name:string | name_kana:string |                   e-mail:string |
+-------------+------------------+---------------------------------+
|          名前 |             ふりがな |                            アドレス |
|      吉岡 さゆり |         よしおか さゆり |     yoshioka_sayuri@example.com |
|       千葉 龍吉 |         ちば りゅうきち |     chiba_ryuukichi@example.com |
|       土橋 拓郎 |        つちはし たくろう | tsuchihashi_takurou@example.com |
|       本間 紗季 |           ほんま さき |          honma_saki@example.com |
|        田口 翔 |          たぐち しょう |        taguchi_shou@example.com |
|       田所 えみ |          たどころ えみ |        tadokoro_emi@example.com |
|      伊集院 あい |        いじゅういん あい |           ijuuin_ai@example.com |
|      滝田 あさみ |          たきた あさみ |        takita_asami@example.com |
|       高田 知世 |           たかだ ちせ |        takada_chise@example.com |
|       池内 沙耶 |          いけうち さや |        ikeuchi_saya@example.com |
|       小池 竜次 |         こいけ りゅうじ |        koike_ryuuji@example.com |
|       安田 礼子 |          やすだ れいこ |        yasuda_reiko@example.com |
|        宮部 健 |           みやべ けん |          miyabe_ken@example.com |
|      西島 かおり |         にしじま かおり |     nishijima_kaori@example.com |
|       平井 高史 |          ひらい たかし |       hirai_takashi@example.com |
|       海野 由宇 |           うみの ゆう |           umino_yuu@example.com |
|      杉田 サダヲ |          すぎた さだお |       sugita_sadawo@example.com |
|     小田島 あさみ |         おだじま あさみ |       odajima_asami@example.com |
|       佐川 勝久 |         さがわ かつひさ |    sagawa_katsuhisa@example.com |
|       大倉 恵麻 |          おおくら えま |          ookura_ema@example.com |
|       西山 智花 |         にしやま ともか |    nishiyama_tomoka@example.com |
|       長岡 七世 |         ながおか ななせ |      nagaoka_nanase@example.com |
|      竹下 美和子 |         たけした みわこ |    takeshita_miwako@example.com |
|       梅田 智花 |          うめだ ともか |        umeda_tomoka@example.com |
|       白鳥 路子 |         しらとり みちこ |   shiratori_michiko@example.com |
|       宮地 秀隆 |         みやじ ひでたか |     miyaji_hidetaka@example.com |
|        菅野 優 |           すがの ゆう |          sugano_yuu@example.com |
|        広田 涼 |          ひろた りょう |         hirota_ryou@example.com |
|      野口 ひろみ |          のぐち ひろみ |      noguchi_hiromi@example.com |
|       末永 怜奈 |         すえなが れいな |       suenaga_reina@example.com |
|       加藤 真吾 |          かとう しんご |        katou_shingo@example.com |
|       小口 秀隆 |         おぐち ひでたか |     oguchi_hidetaka@example.com |
|       平井 昌代 |          ひらい まさよ |        hirai_masayo@example.com |
|       細川 早織 |         ほそかわ さおり |      hosokawa_saori@example.com |
|       片山 昌代 |         かたやま まさよ |     katayama_masayo@example.com |
|       高瀬 晃司 |          たかせ こうじ |        takase_kouji@example.com |
|       内海 早織 |          うちみ さおり |        uchimi_saori@example.com |
|        今 美優 |           いま みゅう |            ima_myuu@example.com |
|        半田 圭 |           はんだ けい |          hannda_kei@example.com |
|       神戸 夏希 |          こうべ なつき |       koube_natsuki@example.com |
|       西田 剛基 |          にしだ よしき |     nishida_yoshiki@example.com |
|        北川 窈 |          きたかわ よう |        kitakawa_you@example.com |
|        北村 惇 |         きたむら じゅん |        kitamura_jun@example.com |
|       田村 憲史 |         たむら のりひと |     tamura_norihito@example.com |
|      高崎 恵望子 |         たかさき えみこ |      takasaki_emiko@example.com |
|       戸田 徹平 |          とだ てっぺい |         toda_teppei@example.com |
|       川畑 奈々 |          かわはた なな |       kawahata_nana@example.com |
|      平田 裕次郎 |        ひらた ゆうじろう |     hirata_yuujirou@example.com |
|       倉本 法嗣 |         くらもと ほうし |     kuramoto_houshi@example.com |
|      浜野 はるみ |          はまの はるみ |       hamano_harumi@example.com |
+-------------+------------------+---------------------------------+

駄目な手順

バンドルの作成

% java -jar embulk.jar  bundle my_bundle
Initializing my_bundle...
Fetching: bundler-1.7.12.gem (100%)
Successfully installed bundler-1.7.12
1 gem installed
The Gemfile specifies no dependencies
Your bundle is complete!
It was installed into .

Gemfileの編集

% vi my_bundle/Gemfile
source 'https://rubygems.org/'

# Plugin bundle:
#
...
gem 'roo'

bundle installの実行

他のRubyと同じ感覚で、bundle installを実行すると次のように怒られます。

java -jar embulk.jar  -b  my_bundle bundle install
Could not find gem 'roo (>= 0) java' in the gems available on this machine.
Run `bundle install` to install missing gems.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment