Mel*_*lon 18 rake ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我在同一名称空间下有两个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
Run Code Online (Sandbox Code Playgroud)
如您所见,两个任务都在同一名称空间下,并且两个任务都使用server_name='myserver' 常量变量.
server_name在相同的命名空间下两次定义变量真的很难看,我怎么能有一个地方定义这个变量,所以两个任务都可以使用它?
Dav*_*ulc 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
Run Code Online (Sandbox Code Playgroud)
命名空间可以访问在其作用域之前声明的变量.
我想建立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
Run Code Online (Sandbox Code Playgroud)
这里的优点是以后的代码可以修改@server_name- 你不能用局部变量做的事情:
namespace :db do
@server_name = 'server_2'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11227 次 |
| 最近记录: |