2016-02-29 62 views
1

我定義如下供應商:廚師 - 呼叫其他行動行動LWRP

action :start do 
... 
end 

action :stop do 
... 
end 

action :restart do 
... 
end 

現在,而不是重寫的restartstopstart實施,我想打電話給action :stop,然後在action :startaction :restart,像這樣:

action :restart do 
    action :stop 
    action :start 
end 

有沒有辦法做到這一點?

編輯 - 正如Coderanger答覆中提到,解決的辦法是:

action :restart do 
    action_stop 
    action_start 
end 

回答

3

呼叫action_startaction_stop

+0

我不知道什麼是錯的,但是當我把'''action_stop'''和'''action_start'''在'''行動:restart''','''行動:stop'''和'' 'action:start'''執行兩次。當我只是粘貼開始/停止代碼時,一切都很好。 –

+0

查看下面的pastebin進行比較:第一次調用每個動作兩次,第二次很好。 http://pastebin.com/6r94LMNA http://pastebin.com/3WHwQhNF –

+0

我不知道什麼是'init'但它的確會被調用兩次。 – coderanger

0

我不知道這是否是正確的答案。我剛剛嘗試過這一點,它似乎在編譯時調用action_stop和action_start。我試圖運行這樣的事情:

action :create do 
    # steps to create resource 
    directory '/test' do 
    ... 
    end 

    action_config 
end 

action :config do 
    ... # configuration 
    template '/test/config' do 
    ... 
    end 
end 

它失敗了,因爲:配置先運行(創建目錄之前)。

我試圖把action_config到ruby_block - 這似乎工作,但我不知道,如果參數正確傳遞。