使用场景
一般都有两到三个环境
- 正式环境(production)
-
测试环境(staging)
-
开发环境(development)
不能用一个mina deploy 来部署所有的环境吧,我一开始就做的比较矬,添加了多个方法。
task :deploy_staging do
set :domain, 'xxxx'
....
end
task :deploy_dev do
set :domain, 'xxxx'
....
end
但这样会有一个问题,如果也想在不同的环境里执行非deploy 的方法怎么办?总不能把所有的方法都这么写一遍吧!
这肯定是一个普遍的问题
Google了一下就找到了一个gem:mina-multistage
使用方法就是,在deploy目录加上多个环境.rb文件
里面只要指定一下变量就好了,真是太好用了。
新问题
Mina 升级到了1.0.6版本后,发现mina-multistage 不管怎么设置都是用的Master分支,能力有限看了半天的mina-multistage源码也没有看出所以然来,其中有人也报了同样的bug出来。
但还是有收获的,发现mina 本身就支持这样的功能:
task :staging do
set :domain, 'dev.xxxx.com'
set :rails_env, 'staging'
set :branch, 'dev'
end
task :production do
set :domain, 'www.xxxxx.com'
set :branch, 'master'
set :rails_env, 'production'
end
使用方式与multistage一模一样。yeah!