【问题标题】:how can I improve my Rakefile (deployment)如何改进我的 Rakefile(部署)
【发布时间】:2012-02-17 19:34:42
【问题描述】:

我正在编写我的第一个 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

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

【问题讨论】:

    标签: ruby rake rakefile


    【解决方案1】:

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

    【讨论】:

    • 会看看谢谢!是你自己用的吗?
    • 我个人使用它,是的,我们在我的公司使用它,并且几个“大牌”(GitHub 是我头上的那个)也在使用它。它在 ruby​​/rails 社区中非常主流
    • 说是用来从单片机部署到(远程)服务器,但是可以从本地文件系统部署到本地服务器(只是拷贝)吗?
    • 我不知道这个用例。这是一个自以为是的软件,开发人员可能不会关心这种情况。尽管如此,除非您的项目是私有的并且您不想投资私有存储库托管服务,或者不想维护自己的存储库,否则您可以非常快速地在线设置存储库
    • 但是开发是在本地机器上完成的,部署主要是从它们那里完成的 - 不需要提交在线 repo :) 会尽量让它为我工作,谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2010-10-29
    • 2019-04-14
    • 1970-01-01
    • 2014-07-21
    • 2017-12-09
    • 2016-03-07
    相关资源
    最近更新 更多