如何改进我的Rakefile(部署)

时间:2012-02-17 19:34:42

标签: ruby rake rakefile

我正在写我的第一个Rakefile。我在文档中看到的第一件事是"there is no special format for a 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

欢迎其他想法/链接/示例。

1 个答案:

答案 0 :(得分:1)

这并不能真正回答您的问题 - 但为什么不使用capistrano?如果您还不知道它,它是一个经常用于顺利处理部署的红宝石工具