2007 年 5 月 11 日,星期五

Capistrano 2.0 预览版 2

发布者:jamis

即将推出的 Capistrano 2.0 版本不断发展!远程管理单个服务器和服务器群集从未如此轻松。借助 Capistrano,您可以

  • 使用单个命令部署 Web 应用程序
  • 使多个计算机上的软件保持同步
  • 仅需几次击键就安装整个服务器
  • 用您的 sysadmin 精湛技术给女士们留下深刻印象

好吧,也许最后这一条除外,除非她是非常特别的一位女士。但其他的肯定适用。

Capistrano 2.0 预览版 2 现已推出(版本 1.99.1)。您只能从 Rails 测试版 gem 服务器上下载

gem install -s http://gems.rubyonrails.com capistrano

注意Capistrano 2.0 与 Capistrano 1.x 配方不 100% 向后兼容。如需了解有关升级的更多信息,请访问 http://www.capify.org/upgrade

要安装预览版,您还需要确保已经安装以下 gem,Capistrano 依赖于这些 gem(并且可以在主要的 Rubygems 存储库中找到这些 gem)

  • net-ssh
  • net-sftp
  • highline

下载它,安装它,试用它。进行试验。报告哪些功能不起作用。我们即将向公众发布!

那么,现在已经讨论完了这些内容,让我们来谈谈 PR2 中的新功能。首先,缺陷修复

  • 现在,“copy”部署策略会检出本地副本到临时目录,而不是使用当前的工作目录。这样就便于与某些挑剔的 SCM 搭配使用,这些 SCM 不喜欢在现有检出项中进行检出。
  • 对于某些部署策略,“deploy:check”任务已损坏。现在它应该适用于所有预打包的策略。
  • 现在,“shell”任务实际上可以正常工作。
  • 无论任务在哪个名称空间中得到定义,“desc”关键字都将适用于下一个已定义的任务。
  • 当通过 :ssh_options 给出明确的 :auth_methods 列表时,不要重试失败的连接。
  • 修复了几个小文档拼写错误。

接下来,新功能

功能:“deploy:cold”任务将在启动应用程序之前运行迁移。如果您是第一次部署应用程序,那么数据可能也需要设置!

功能:现在不鼓励扩展任务的旧方法(例如,名为“before_deploy”和“after_deploy”的任务扩展“deploy”任务)(尽管还未正式弃用)。新方法使用一些新的关键字

before :deploy, :my_custom_task
after “deploy:symlink”, :do_this, :and_do_that

更一般地说,您可以使用“on”关键字将您自己创建的任务附加到任意“事件”

on :before, :my_custom_task, :only => :deploy
on :after, :do_this, :and_do_that, :only => “deploy:symlink”

事件在任意事件被调用之前会触发 :before,事件完成之后,:after 会被立刻调用。Capistrano 目前支持四种其它事件

  • :start 在命令行调用任务时触发
  • :finish 在命令行调用任务完成时触发
  • :load 在所有配方加载完毕,但任务执行之前触发
  • :exit 在所有任务执行完毕之后触发

你甚至可以定义你自己的事件,然后使用“trigger”方法触发它们。

功能:“deploy:app”命名空间已被删除。它包含的任务现在直接位于“deploy”命名空间中。因此,“deploy:app:start”和“deploy:app:stop”现在分别为“deploy:start”和“deploy:stop”。

功能:如果你将“scm_command”设置为自定义值,因为你的SCM位于远程主机上的非标准位置,如果你SCM命令没有位于你本地主机的同一个位置,你以前遇到过一些问题。现在,如果你需要不同的 scm_command 设置,具体取决于它是在本地还是远程调用,你可以选择单独指定其中一个

set :scm_command, “/opt/local/bin/svn”
set :local_scm_command, “/usr/local/bin/svn”

请注意,如果设置“scm_command”,则“local_scm_command”将默认为该值,但如果设置“local_scm_command”,则“scm_command”不受影响。

功能:服务器现在由 Capistrano 根据其完整连接信息(包括主机名、用户名和端口)唯一标识。(以前,服务器仅基于主机名唯一。)这可以在 NAT 环境中使用 Capistrano,其中所有服务器都使用相同的主机名,但不同的端口号。

功能:“capify”命令现在理解“-h”开关,它应该能让人们的使用变得更容易。