2011-06-16 61 views
0

我想在#{Rails.root} /lib/my_file.rb中創建一個文件my_file.rb,該文件執行位於#{Rails.root}/script/my_script中的腳本my_script。我打算用它像這樣:如何在執行腳本文件的rails中創建一個lib文件?

script/first_script # this first script will call a method in 
# lib/my_file.rb that will run the script/my_script file. 

我如何可以創建能夠執行一個腳本這樣一個lib文件?以及從lib文件執行腳本的命令是什麼?

+0

難道使用script/runner any_file.rb不是更容易嗎?爲什麼你需要這麼複雜的結構? – 2011-06-16 14:25:51

+0

腳本執行一些任務,我們通常執行它:腳本/ any_file> result.log 2> error.log,然後我們手動解析result.log。我們需要重寫腳本,以便它運行一個lib文件,它使用以下命令調用第二個腳本:script/second_script result.log 2 > error.log,然後是lib f ile可以訪問和解析result.log並顯示結果。 – umar 2011-06-16 14:34:27

+1

如果你想這樣做,你可能需要'popen3'方法,因爲它繞過了對中間日誌文件的需求。我已經更新了我的答案。 – tadman 2011-06-16 15:10:33

回答

2

如果通過「執行腳本」,您的意思是在單獨的進程中運行它,那麼您需要的是system調用。

更新

您還可以,如果你想捕捉STDOUTSTDERR獨立使用popen3方法。從這個例子:

Open3.popen3("#{Rails.root}/script/my_script") do |in, out, err| 
    # ... 
end 
相關問題