我有同樣的命名空間下的兩個Rake任務類似以下內容:rake任務變量
namespace :db do
task :first_task => :environment do
server_name='myserver'
connect_to(server_name)
end
task :second_task => :environment do
server_name='myserver'
do_something_with(server_name)
end
end
正如你看到的,任務是同一個命名空間之下,這兩個任務使用server_name='myserver'
常變量。
在相同的命名空間下定義server_name
變量真的看起來很醜陋,我怎麼能有一個地方定義這個變量,這樣兩個任務都可以使用它?
不,你不應該那樣做。原因是你不知道,伊娃在哪裏。我也沒有。一個耙子任務是用一個塊來聲明的,而不是一個類,因此伊娃的背景是不清楚的。 – meandre
@meandre以這種方式使用實例變量有什麼問題?你能證明它可能出錯的地方嗎?你有更好的建議嗎?有關更詳細的討論,請參閱http://daneharrigan.com/2010/06/rake-tasks-102/中的「任務中的實例變量」部分。 –
@meandre實際上,以我顯示的方式定義的實例變量會在'Rake.application.in_namespace(name,&block)'的上下文中進行評估(請參閱https://github.com/jimweirich/rake/blob/v10.3.2 /lib/rake/dsl_definition.rb#L140)。我不確定你的擔心是什麼。 –