2015-08-03 71 views
3

是否有某種方式可以訪問在先決條件中定義的變量?例如Rakefile - 在先決條件中定義的訪問變量

task :new_file do 
    filename = 'foobar.txt' # in reality I ask the user for the filename 
    File.write(filename, 'Some glorious content') 
end 

task :new_file! => [:new_file] do 
    exec "vim #{filename.inspect}" 
end 

我想rake new_file!簡單地是rake new_file速記與發射VIM因爲我在new_file任務中創建任何文件一起。

我所能想到的是在:new_file中填充一個全局變量FILENAME並在new_file!中使用它,然後清除它,但是如果有「更多Rake」的方法去做,我想知道。

回答

0

一種方法是這樣定義的任務之外的變量:

filename = 'default.name' 

task :new_file do 
    filename = 'foobar.txt' # in reality I ask the user for the filename 
    File.write(filename, 'Some glorious content') 
end 

task :new_file! => [:new_file] do 
    # filename will be visible here too, and its value was set in new_file 
    exec "vim #{filename.inspect}" 
end 
+0

這是真的和我一樣定義一個全局變量,這是一件好事,我寧願避免。 –