【问题标题】:How can I continue to use Accurev with Capistrano 3?如何继续使用 Accurev 和 Capistrano 3?
【发布时间】:2015-01-07 16:19:41
【问题描述】:
我们使用 AccuRev(我无法更改)并且一直在使用 Capistrano 2 进行部署。我需要升级到 Capistrano 3,但似乎 Accurev SCM 模块已被删除。有什么方法可以让我继续使用 AccuRev 并使用 Capistrano 3 进行部署?
deploy.rb 片段
set :scm, :accurev
部署错误
cap aborted!
LoadError: cannot load such file -- capistrano/accurev.rb
【问题讨论】:
标签:
ruby-on-rails
capistrano
capistrano3
accurev
【解决方案1】:
作为 Capistrano3 文档 says - 只有 git、hg 和 svn 支持。
但是将old accurev module 从 Capistrano 2 移植到 Capistrano 3 应该不是那么难。一些类发生了变化,但核心是相同的 - 函数必须返回带有正确参数的正确命令。
您可以从master 的 git 实现开始,并将其替换为 AccuRev。
【解决方案2】:
我使用一年以来的解决方法如下:
1- 编辑文件 capistrano-3.3.5/lib/capistrano/setup.rb 并替换
load "capistrano/#{fetch(:scm)}.rb"
通过
load "#{fetch(:scm_path, 'capistrano')}/#{fetch(:scm)}.rb"
2- 添加到您的 config/deploy.rb 文件中
set :scm_path, 'path/to/accurev/directory'
这将使 capistrano 有机会打开 accurev 的配置模式。请注意 capistrano v3 更改了它的语法,您可能需要修改 accurev 文件(我建议将它们复制到您的 lib 文件夹中)。
直接编辑gem文件内容很难看,但是这里没有别的办法。如果你愿意,你也可以 fork 他们的 git 并在你的 fork 上进行修改。
我有类似的问题,因为我在 capistrano 中使用定制的 scm。自去年以来一直试图让他们接受拉取请求以添加此 scm_path 配置选项,但他们拒绝了,并表示他们将很快迁移到更好的东西......