我该如何改进我的Rakefile(部署)
问题描述:
我在写我的第一个Rakefile。我在文档中看到的第一件事是"there is no special format for a Rakefile"和“Rakefile中没有特殊的语法”。我该如何改进我的Rakefile(部署)
好了,我只好拿出我自己的东西,但我可以看到至少有两个问题,我的生物:
1)我需要创建多个文件夹,其中五。 6 directory
任务的顺序看起来有点奇怪。 deploy
任务中的5个依赖列表看起来更奇怪。我可以将它缩小到一行吗?
2)我需要重复我的目录名文字两次 - 当我定义他们的部署路径和当我复制内容。如果不引入5个更多变量,我可以避免这种情况吗
在Java Ant中,我将创建一个包含所有名称文字的属性文件 - 我可以使用Rake做到这一点吗?
这是我的本钱:
WEBAPPSDIR = '/var/webapps/'
WEBAPPNAME = 'foo.local'
WEBAPPDIR = File.join(WEBAPPSDIR, WEBAPPNAME)
VIEWSDIR = File.join(WEBAPPDIR, 'views')
PUBLICDIR = File.join(WEBAPPDIR, 'public')
CSSDIR = File.join(PUBLICDIR, 'css')
IMAGESDIR = File.join(PUBLICDIR, 'images')
TMPDIR = File.join(WEBAPPDIR, 'tmp')
HTMLDIR = File.join(PUBLICDIR, 'html')
directory VIEWSDIR
directory CSSDIR
directory HTMLDIR
directory IMAGESDIR
directory TMPDIR
desc 'Deploy to webapps dir'
task :deploy => [VIEWSDIR, CSSDIR, IMAGESDIR, TMPDIR, HTMLDIR] do
cp 'config.ru', WEBAPPDIR
Dir.glob('*.rb') {|f| cp f, WEBAPPDIR}
Dir.glob('views/*.{mab,str}') {|f| cp f, VIEWSDIR}
Dir.glob('css/*.css') {|f| cp f, CSSDIR}
Dir.glob('images/*.{png,jpg,gif}') {|f| cp f, IMAGESDIR}
Dir.glob('html/*.html') {|f| cp f, VIEWSDIR}
end
desc 'Cleans webapp dir'
task :clean do
rm_r WEBAPPDIR, {force: true}
end
其他的想法/链接/例子也欢迎。
答
这并不能真正回答你的问题 - 但你为什么不使用capistrano
?如果您还不知道它,它是一个经常用于处理部署的红宝石工具顺利
将看看谢谢!这是你使用自己的东西吗? – 2012-02-17 19:42:20
我个人使用它,是的,我们在我的公司使用它,并且几个“大名”(GitHub是我头顶的那个)也在使用它。它在ruby/rails社区中非常主流 – ksol 2012-02-17 19:43:39
它说它用于从SCM部署到(远程)服务器,但它是否可以从本地文件系统部署到本地服务器(仅复制)? – 2012-02-17 19:52:18