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变量两次看起来真的很难看,我怎么能有一个地方定义这个变量,这样两个任务都可以使用它?

试试这个:

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

命名空间可以访问在其作用域之前声明的变量。

我想以David Sulc的答案为基础,但我建议使用实例变量:

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

相关内容

  • 没有找到相关文章

最新更新