2007 年 5 月 11 日,星期五

Capistrano 2.0 预览版 2

jamis 发布

即将发布的 Capistrano 2.0 版本持续发展!远程管理单个服务器和服务器集群从未如此简单。有了 Capistrano,您可以

  • 一键部署 Web 应用程序
  • 在多台机器上保持软件同步
  • 只需轻点几下即可安装整个服务器
  • 用您的顶级系统管理员技能给女士们留下深刻印象

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

Capistrano 2.0 预览版 2 现已发布(版本 1.99.1)。您只能从 Rails beta gem 服务器获取它

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

请注意,Capistrano 2.0 与 Capistrano 1.x 配方不完全向后兼容。有关升级的更多信息,请查看 http://www.capify.org/upgrade

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

  • net-ssh
  • net-sftp
  • highline

下载它,安装它,试用它。尽情体验。报告您发现的问题。我们离正式发布不远了!

好了。现在所有这些都说完了,让我们来谈谈 PR2 的新内容。首先,是错误修复

  • “copy”部署策略现在会将本地副本签出到临时目录,而不是使用当前工作目录。这使得它可以与一些挑剔的 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 现在根据服务器的完整连接信息(包括主机名、用户名和端口)唯一标识服务器。(以前,服务器仅基于主机名唯一。)这使得 Capistrano 可以在 NAT 环境中使用,其中所有服务器使用相同的主机名,但端口号不同。

功能:“capify”命令现在支持“-h”开关,这应该使其行为更符合人们的预期。