2007 年 6 月 29 日,星期五

Capistrano 2.0 预览 4

由 jamis 发布

我真是个胆小鬼。我非常希望 Capistrano 的下一个版本成为正式的“Capistrano 2.0”版本。但是,随着变更日志的不断增长,我开始打了退堂鼓。

因此,今晚我宣布发布 Capistrano 2.0 的第四个(希望也是最后一个!)预览版本。与之前一样,你可以从 Rails 测试版宝石服务器获取它

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

(你可能会问,Capistrano 是什么?请允许我引导你了解一下 http://www.capify.org……)

以下是一些在预览版 #4 中新增的更改

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

你可以在 CHANGELOG 中查看全部更改列表。

所以,试一试吧。试用一下。将你的反馈发布至 Capistrano 邮件列表。我很想在下周发布 cap2 最终版!

P.S. 如果你使用的是 Windows 电脑,并且在尝试安装 Capistrano 宝石时收到了 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

这对我来说似乎有效;如果你发现对你不适用,请告诉我。