knife-soloの内部メソッド`run_command`の実態の場所について
knife-soloの実行時に、適用先のユーザーのホームディレクトリに.bashrcが存在するとエラーに成ってしまうので、実際にどのような処理がそこでされているかを確認しようとしました。
まず chef_versionメソッド内部でrun_commandが呼ばれていたので
lib/chef/knife/solo_cook.rb#L294
run_command(cmd).stdout.strip
run_commandの宣言場所を探し、prepare.run_commandが呼ばれているのを確認しました。
lib/knife-solo/bootstraps.rb#L31
def run_command(cmd)
prepare.run_command(cmd)
end
ただ、
lib/knife-solo/bootstraps.rb#L43
module Delegates
...
def prepare
@prepare
end
end #Delegates
lib/knife-solo/bootstraps.rb#L122
class Base
...
def initialize(prepare)
@prepare = prepare
end
...
end
の処理がメソッドがインスタンス変数を呼び、インスタンス変数がメソッドにより定義されてるように見えるのですが、これがどのような事を期待した処理なのか理解できませんでした。
Issueへの登録はしています、自分で解決できればと思い質問いたします。
https://github.com/matschaffer/knife-solo/issues/410
このprepareからどのように外部コマンドの実行処理部分を探せるのでしょうか?