最近,我一直在努力将Webistrano从没有使用bundler管理应用程序gems的版本升级到那个版本。为了部署rails应用程序,我们将在配方中使用require 'bundler/capistrano'
来为应用程序和其他相关步骤(如预编译资产等)加载bundle。但是,一旦Bundler与Gemfile一起使用以指定和加载适当的gem环境,require 'bundler/capistrano'
会引发以下错误:
** loading stage recipe'bundler'
***定义名为“install”的任务会影响具有该名称的现有方法
如果我从配方中排除了require,则继续部署但不使用bundler(没有bundle exec
等)。
尝试使用require 'rvm/capistrano'
来管理ruby环境时,我也遇到与rvm
类似的问题。
有关如何解决这个问题的想法吗?
答案 0 :(得分:1)
也许是因为你正在使用rake 0.9.x,它有安装任务 https://github.com/jimweirich/rake/blob/master/lib/rake/contrib/sys.rb#L30 尝试用rake 0.8.7运行 此问题可能与https://github.com/capistrano/capistrano/pull/90
有关答案 1 :(得分:0)
您的服务器和本地计算机上是否安装了bundler和rvm-capistrano gems?我之前见过这个问题。
答案 2 :(得分:0)
我刚检查了bundler/capistrano
的代码并且我知道rvm/capistrano
的代码,唯一能让这种情况发生的方法是capistrano
的{{1}}被覆盖/已破坏并且没有为namespace
定义提供适当的范围,请确保您不重新定义task
或没有其他namespace
/ gem
/ library
那样做。
可能将capistrano更新为更新的版本可以修复它(这可能是code
中已经修复的一些错误。)