2012-02-24 212 views
1

我運行一個像這樣的文件:將參數傳遞給Ruby腳本

ruby hello.rb world.csv data.csv 

將如何開始的文件看?我有這個。

require 'daemons' 

pwd = File.dirname(File.expand_path(__FILE__)) 

wFile = "#{pwd}/world.csv" 
dFile = "#{pwd}/data.csv" 

Daemons.run("hello.rb #{wFile} #{dFile}") 

回答

3

你必須像這樣創建一個文件hello_daemon.rb

require 'daemons' 

Daemons.run("hello.rb") 

並運行它(你可以使用start一個,restartrun):

ruby hello_daemon.rb start -- world.csv data.csv 

而且daemons將運行hello.rb

ruby hello.rb world.csv data.csv 
2

使用全局常量ARGV(雖然沒有多少東西需要學習)接收帶參數的字符串數組。
因此,對於您的情況:

require 'daemons' 

files = [] 
ARGV.each do |arg| 
    files << File.expand_path(arg) 
end 

這應該給你絕對路徑的每一個參數,這樣就可以從任何地方打開它們。

+0

我想你可能會誤解我。在hello.rb中,我將它設置爲接受ARGV [0]和ARGV [1]的參數,但守護進程無法正確傳遞參數。 – sunnyrjuneja 2012-02-28 04:17:55

+1

'ARGV [0]'可能是當前文件的名稱 – farnoy 2012-02-28 05:34:52

+0

可能,他誤解了你的問題。 – Jiemurat 2013-06-28 05:56:55