我开始使用vlad进行新部署,并且想知道设置它的最佳方式是什么,以便我可以为本地开发和远程生产服务器使用相同的任务?
我考虑将所有内容定义为远程任务,然后使用设置域变量的dev / prod方法,然后我可以调用rake dev/prod vlad:do_something
,但这只是完全错误。
我的许多任务对于在我的本地服务器和生产服务器上运行非常有用,我希望通过为本地服务器设置一个“任务”并为远程服务器设置一个“remote_task”来避免重复自己。 e.g。
def do_something
run "echo something"
end
task :do_something_dev
do_something
end
remote_task do_something_prod
do_something
end
我是否遗漏了某些内容,或者这些是否是在本地和远程计算机上使用相同rake任务的唯一选项?
答案 0 :(得分:5)
这个怎么样:
[:development, :test, :production].each do |environment|
namespace environment do
task :do_something do
echo "do something on #{environment}"
end
end
end
这会给你:
rake vlad:development:do_something
rake vlad:test:do_something
rake vlad:production:do_something
只用一种方法就可以不那么冗长了。但是只要有2或3种方法,就可以忽略开销。