Ruby Rake预配置?

Ruby Rake预配置?,ruby,rake,Ruby,Rake,我如何用Ruby的方式来实现这一点 # Rakefile desc "Run task on server #1" task :one do # Do somethin on server 1 Srv1.exec "..." end desc "Run task on server #2" task :two do # Do somethin on server 2 Srv2.exec "..." end desc "Run task on both ser

我如何用Ruby的方式来实现这一点

# Rakefile

desc "Run task on server #1"
task :one do
    # Do somethin on server 1
    Srv1.exec "..."
end

desc "Run task on server #2"
task :two do
    # Do somethin on server 2
    Srv2.exec "..."
end

desc "Run task on both servers"
task :both do
    # Do somethin on both servers
    Serv1.exec "..."
    Serv2.exec "..."
end
如何要求结束执行配置代码?如何进行缩放(如果需要Serv3)?
Serv1
应该是一个类还是其他什么


我需要做的是用Rake控制Vagrant VM,在Vagrant内运行自定义任务,与主机系统同步数据,在生产环境中运行一些代码并将结果发送给Vagrant,等等。

如果您试图在多台服务器上执行某些操作,
Rake
可能不是执行此任务的最佳工具。也许您想查看Capistrano,它通常用于部署软件,但也可以作为远程执行一般操作的工具。

好的。我自己解决了这个问题,在
Rakefile
的头部加载了两个文件,第一个是带有server类的
server.rb
,第二个是带有服务器实例化代码的
init.rb
({:user=>'…这是可以从
Rackfile

中的任务访问的。首先,我将为您的模型修正一个小错误。使用更简单的方法执行
任务:

desc "Run task on both servers"
task :both => [ :one, :two ]
我如何需要终端执行配置代码?我如何进行扩展(如果我需要Serv3)?Serv1应该是一个类还是其他什么

只需创建一个类
Serv
,并向其传递多个服务器或其他内容。这样您将获得:

desc "Run task on a server"
task :one do
   # Do somethin on a server
   Serv.new( ENV[ 'SERVER_NUMBER' ] ).exec "..."
end

desc "Run task on all servers"
task :one do
   # Do somethin on all servers
   Serv.exec "..."
end

Capistrano是一个有着自己理念的部署工具,Rake是一个任务执行器。我想做一个原始的解决方案来学习ruby。看起来是这样的!但是如何存储和管理服务器的配置呢?应该是JSON、YAML还是ruby哈希对象?