2007年6月29日,星期五

Capistrano 2.0 预览版 4

jamis 发布

我真是个胆小鬼。我非常希望 Capistrano 的下一个版本是官方的“Capistrano 2.0”发布版。但随着我看着变更日志越来越长,我开始有些打退堂鼓了。

因此,今晚我宣布 Capistrano 2.0 的第四个(希望也是最后一个!)预览版。和以前一样,你可以从 Rails beta gems 服务器获取它。

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

(你问,Capistrano 是什么?请允许我引导你的注意力到 http://www.capify.org……)

以下项目只是预览版 #4 中一些新变化:

  • deploy:symlink 任务现在单独运行时也能正确工作了。
  • 同步实例化网关,以防止多次实例化。
  • 使用“which”代替“test -p”来测试一个命令是否存在于路径中。
  • 现在 :hosts 和 :roles 键可以接受 lambda,以惰性选择任务使用的哪些主机或角色。
  • Net::SSH 1.1.0 之前的版本可以再次与 Capistrano 一起工作。
  • 变量访问现在是线程安全的。
  • 部署代码现在是区域设置无关的,这样即使你的计算机使用非英语区域设置,也可以正确解析修订版本。
  • 现在你可以在定义任务时传递 :on_error => :continue,这样在任务执行期间发生的任何连接或命令错误都将被忽略,允许任务(及后续任务)继续执行。

你可以在 CHANGELOG 中查看所有变更的完整列表。

所以,试试吧。试用一下。在 Capistrano 邮件列表 上发布你的反馈。我希望下周就能发布 cap2 最终版!

附注:如果你使用的是 Windows 机器,并且在尝试安装 Capistrano gem 时遇到 Zlib 错误,请尝试以下方法。找到 rubygems/package.rb 文件(无论它在你的 Ruby 安装中的哪个位置),打开它,找到 zipped_stream 方法。然后,将其整体替换为以下内容:

def zipped_stream(entry)
  entry.read(10) # skip the gzip header
  zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
  is = StringIO.new(zis.inflate(entry.read))
ensure
  zis.finish if zis
end

这对我来说似乎解决了问题;如果对你不起作用,请告诉我。