rake task 回傳值?


#1

我想在rake task B裡面呼叫另外一隻rake task A
有辦法在B內取得執行A後的回傳值嗎?

ex.

namespace :hello do
  desc test
  task :A, [:foo ] => :environment do |t, args|
    args['foo']
  end
  
  task :B => environment do |t, args|
    Rake::Task[hello:A].execute('foo' => 'bar')  #要如何回傳'bar'?
  end
  
end

#2

hmmm … 應該 code 複製貼上(兩份一樣的)或寫雙用 method 即可


#3

抱歉這邊看不太懂@@
可以再說明一下嗎


#4

沒,我原本想說你可以把 A , B 程式, A 想得到 B 的值,則改為 A + B , B 即可

不過後來看到似乎可以這樣做,不過我們家很少在寫 task,所以只能給你參考就是了

http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks

至於取得回傳值,可能有問題,這邊不確定,但是預設其實是stdout,所以說不定你可以覆寫 logger 的方式取得回傳值

A…okay…看來有人和我的想法一樣X"DDD

http://stackoverflow.com/questions/3530/how-do-i-run-rake-tasks-within-a-ruby-script

其實就是把 stdout fake 掉然後抓回來即可,記得弄完了要弄回去才行

$ori_stdout = $stdout
$stdout = FAKE
  #...do something , log to FAKE
$stdout = $ori_stdout
  #...next , print & use FAKE

#5

謝謝!這邊我試看看