rake任务变量

时间:2011-12-01 14:30:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 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变量真的很难看,我怎么能有一个地方定义这个变量,所以两个任务都可以使用它?

2 个答案:

答案 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