经过比预期的更大幅度的延迟之后,Capistrano 2.1 现已推出!(Capistrano 是一款用于在多台远程计算机上并行执行命令的实用工具,并且是许多 Rails 开发人员为自动部署而选择的工具。)此次发布的内容非常多,其中包括一些非常令人兴奋的更改。一如既往,通过 RubyGems 使用以下方式进行安装
gem install capistrano
以下列出了新内容,大体上按照重要性排序
不再有默认 PTY。在 2.1 之前,Capistrano 会为其执行的每一条命令请求一个伪终端。这样做会导致用户的配置文件脚本不会加载。嗯,现在不行了!从 2.1 开始,Capistrano 不再为每一条命令请求一个 pty,这意味着你的 .profile(或 .bashrc,或其他任何内容)将在每一条命令上正常加载!不过,请注意,有些人报告了在某些系统上,当未分配 pty 时,一些命令会自动进入非交互模式。如果你没有看到命令像以前那样提示符,比如 svn 或 passwd,你可以通过将以下行添加到你的 capfile 中来恢复到以前的行为
default_run_options[:pty] = true
禁用 sh 包装。某些共享主机不允许使用 POSIX shell 来执行任意命令,而自 2.0 以来,Capistrano 一直在这样做。如果你在这样的主机上,则可以将以下行添加到你的 capfile 中
default_run_options[:shell] = false
Capistrano 会直接运行命令,而不是将其包装在“sh -c”命令中。不过,请注意,这意味着你在远程主机上的用户 shell 必须与 POSIX 兼容,否则你会收到晦涩的错误。
Git SCM 支持。非常感谢 Garry Dolley、Geoffrey Grosenbach 和 Scott Chacon 为 Capistrano 编写新的 Git SCM 模块所做的工作。如果你是一个 Git 用户,你现在可以这样做了
set :scm, :git
Accurev SCM 支持。感谢 Doug Barth,所有 Accurev 用户现在也可以享受 Capistrano 了。只需执行
set :scm, :accurev
Rails 的插件支持。通过“capify”实用工具生成的 Capfile 现在将包含一行,该行会自动加载 vendor/plugins/*/recipes/*.rb 中的所有配方。如果你想要此功能,并且你已有 Capfile(并且不介意丢失对 Capfile 所做的任何更改),则可以删除 Capfile 并重新运行“capify”。或者,你可以在你的 Capfile 中添加以下行,位于加载“config/deploy”的那一行之前
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
Windows 安全读取。任何时候 Capistrano 需要读取文件的內容时,它现在都将使用“b”标志,这样就不会损坏 Windows 上的二进制读取文件。
Cap shell 和 sudo。Capistrano shell 现在可以正确识别 sudo 命令,并正确提示输入密码。
使用 `match’ 来检查依赖项。存在用于 deploy:check 的新远程依赖项方法: “match”。您现在可以在各种命令的输出中查找任意正则表达式,以查看事物是否正确设置
depend :remote, :match, "rake -V", /version 0\.7/
Namespaces#top。有时您会希望在另一个任务中执行任务,但目标任务的父名称空间与同名名称空间冲突,并且会出现故障。您现在可以使用 “top” 方法跳转到名称空间层次结构的顶部
namespace :apache do namespace :deploy do task :restart do run "restart apache" top.deploy.restart end end end
其他更改。还有许多其他细微的错误修复和更改
尽情享受!并在 Rails trac 中报告任何错误,并将其组件设置为 “Capistrano”。