经过比我期望的更长的延迟,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 执行任意命令,而 Capistrano 从 2.0 版本以来一直是这样做的。如果您使用的是此类主机,可以在您的 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
其他更改。 还有许多其他较小的错误修复和更改:
请享用!如有任何 bug,请在 Rails trac 上报告,并将组件设置为“Capistrano”。