我在同一命名空间下有两个 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
变量真的很难看,我怎么能有一个地方定义这个变量,所以两个任务都可以使用它?
答案 0 :(得分:17)
试试这个:
namespace :db do
server_name='myserver'
task :first_task => :environment do
connect_to(server_name)
end
task :second_task => :environment do
do_something_with(server_name)
end
end
命名空间可以访问在其范围之前声明的变量。
答案 1 :(得分:6)
我想在David Sulc's answer上构建,但我建议使用实例变量:
namespace :db do
@server_name = 'myserver'
task first_task: :environment do
connect_to @server_name
end
task second_task: :environment do
do_something_with @server_name
end
end
这里的优点是以后的代码可以修改@server_name
- 你不能用局部变量做的事情:
namespace :db do
@server_name = 'server_2'
end