gem 改造して試験してみたい。どうするか。
探索パスが $LOAD_PATH に格納されているらしい。
$LOAD_PATH.unshift('./gems')
みたいにしといて、実行するディレクトリに gem を掘ってその中に gem なナニを git clone とかで持ってきとけば良いのかな。
もうひとつ。
fog の cloudstack な API 呼び出しの i/f 追加したい。まだ試してないのですが、方法を以下に控えておきます。
fog/cloudstack/compute.rb に以下を追加。
request :extract_template
あとは fog/cloudstack/requests/compute に extract_template.rb を追加して中身は以下なカンジ?
module Fog
module Compute
class Cloudstack
class Real
def extract_template(options={})
options.merge!(
'command' => 'extractTemplates'
)
request(options)
end
end # Real
Mock なナニはとりあえず略。試験したら別途追記の方向ってことで。
追記
試してみました。とりあえず http://github.com/fog/fog を fork してそれを手元に clone してとりあえず branch して
$ mkdir gems
$ cd gems
$ cd fog
$ git checkout -b extractTemplate
あと、とりあえず試験用のソレに以下の記述を追加。
$:.unshift File.dirname(__FILE__) + "/gems"
次。とりあえず fog 側に手続き追加。fog/cloudstack/compute.rb に以下を追加
request :extract_template
で、fog/cloudstack/request/compute/extract_template.rb はとりあえず以下なカンジ。
def extractt_templates(options={})
options.merge!(
'command' => 'extracttTemplate'
)
# request(options)
pp "xxx"
"xxx"
end
これでテスト用のスクリプトで
pp @compute.extractTemplate
呼び出してどうなるか。
list_template.rb:35:in
<main>': undefined method
extractTemplate’ for #Fog::Compute::Cloudstack::Real:0x007f0fd0033cc0 (NoMethodError)
ぐぬ。パスが確認できるのか。
irb(main):009:0> Gem::Specification.find_by_path("fog").full_gem_path
=> "/home/rms/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/fog-1.8.0"
駄目だ。つうかこれ、gem build しないと駄目なの?
$ cd fog
$ gem build fog.gemspec
Successfully build RubyGem
Name: fog
Version: 1.21.0
File: fog-1.21.0.gem
うーん、なんか違う感。これは gem i できる .gem ができただけだし。
結局入れないと駄目らしい
ので、以下。
$ gem i fog-1.21.0/fog-1.21.0.gem
.rbenv 配下にも入ってるみたい。修正して入れかえ、は
$ gem uninstall fog-1.21.0
で良いのかどうか。require したら新しい方が入ってるみたい。uninstall は以下なのかどうか。
$ gem uninstall fog -v='1.21.0'
つうか、extract_template 手続きが盛り込まれていない。何故だ。
もっかい
lib/fog/cloudstack/requests/compute/extract_template.rb 存在を確認。
$ ls lib/fog/cloudstack/requests/compute/extract_template.rb
lib/fog/cloudstack/requests/compute/extract_template.rb
gem 作る。
$ gem build fog.gemspec
導入。
$ gem i ./fog-1.21.0.gem
中身確認するもやはり extract_template.rb が無い。build された gem を確認してみるにやはり無い。gem ではなくて rake で build してみるか。
$ bundle install
$ bundle exec rake build
pkg の中にできるんですね。がしかし、.gem をバラしてみても lib の中にあるはずのソレが無い。むむ、と言いつつバラしたソレについて lib/fog/cloudstack/compute.rb 見てみるに、こちらの修正は反映されとるな。
で、git add してみたら今度は反映されていた。何なのこれ。
別件にて追記
bundler て jail みたいなもの、って理解だったんですが全然違うことに最近気が付いてたり。