我有同样的命名空间下的两个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)。我不确定你的担心是什么。 –