Ruby on rails Capistrano 3升级问题

Ruby on rails Capistrano 3升级问题,ruby-on-rails,nginx,capistrano,unicorn,Ruby On Rails,Nginx,Capistrano,Unicorn,我一直在尝试从Capistrano 2升级到Capistrano 3,但一直在解决所有错误。我被困在一个我现在不知道如何解决的问题上。我用的是独角兽和Nginx 错误跟踪: cap production deploy:cold --trace ** Invoke production (first_time) ** Execute production ** Invoke load:defaults (first_time) ** Execute load:defaults cap aborte

我一直在尝试从Capistrano 2升级到Capistrano 3,但一直在解决所有错误。我被困在一个我现在不知道如何解决的问题上。我用的是独角兽和Nginx

错误跟踪:

cap production deploy:cold --trace
** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
cap aborted!
Task Argument Error
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task_manager.rb:96:in `resolve_args_with_dependencies'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task_manager.rb:62:in `resolve_args'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task_manager.rb:24:in `define_task'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:360:in `define_task'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/dsl_definition.rb:32:in `task'
config/deploy.rb:31:in `block (2 levels) in <top (required)>'
config/deploy.rb:29:in `each'
config/deploy.rb:29:in `block in <top (required)>'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task_manager.rb:196:in `in_namespace'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/dsl_definition.rb:104:in `namespace'
config/deploy.rb:28:in `<top (required)>'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capistrano-3.0.1/lib/capistrano/setup.rb:12:in `load'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capistrano-3.0.1/lib/capistrano/setup.rb:12:in `block (2 levels) in <top (required)>'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:236:in `call'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:236:in `block in execute'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:231:in `each'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:231:in `execute'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:175:in `block in invoke_with_call_chain'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:168:in `invoke_with_call_chain'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:161:in `invoke'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:149:in `invoke_task'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in `each'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in `block in top_level'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:115:in `run_with_threads'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:100:in `top_level'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:78:in `block in run'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:75:in `run'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capistrano-3.0.1/lib/capistrano/application.rb:12:in `run'
/Users/devanb/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/capistrano-3.0.1/bin/cap:3:in `<top (required)>'
/Users/devanb/.rbenv/versions/2.0.0-p247/bin/cap:23:in `load'
/Users/devanb/.rbenv/versions/2.0.0-p247/bin/cap:23:in `<main>'
Tasks: TOP => production

可能是一些东西,但是在Capistrano 3中,
deploy:cold
被贬低了,我刚刚尝试了它,我得到了我所期望的“不知道如何构建任务”。可能会运行
deploy:setup\u config
,然后直接执行
deploy

还有一些其他的东西需要调整,比如你不能再使用这种方法来流式处理日志文件,它只是一个简单的
execute
。例如:

namespace :logs do
  desc "tail rails logs" 
  task :tail_rails do
    on roles(:app) do
      execute "tail -f #{shared_path}/log/#{fetch(:rails_env)}.log"
    end
  end
end
通常,任务定义格式也需要更新,例如:

task :setup_config, roles: :app do
  # some stuff
end
将成为

task :setup_config do
  on roles(:app) do
     #some stuff
  end
end

看起来您的Cap 2配置在很大程度上是基于Railscast的。我也是,我最近经历了将所有使用它的应用程序迁移到新的Cap 3应用程序的过程。我已经记录了我最终使用的方法,包括代码。

可能是一些东西,但是在Capistrano 3中,
deploy:cold
被贬低了,我刚刚尝试过,我得到了我所期望的“不知道如何构建任务”。可能会运行
deploy:setup\u config
,然后直接执行
deploy

还有一些其他的东西需要调整,比如你不能再使用这种方法来流式处理日志文件,它只是一个简单的
execute
。例如:

namespace :logs do
  desc "tail rails logs" 
  task :tail_rails do
    on roles(:app) do
      execute "tail -f #{shared_path}/log/#{fetch(:rails_env)}.log"
    end
  end
end
通常,任务定义格式也需要更新,例如:

task :setup_config, roles: :app do
  # some stuff
end
将成为

task :setup_config do
  on roles(:app) do
     #some stuff
  end
end

看起来您的Cap 2配置在很大程度上是基于Railscast的。我也是,我最近经历了将所有使用它的应用程序迁移到新的Cap 3应用程序的过程。我已经记录了我最终使用的方法,包括代码。

堆栈跟踪非常清楚。错误来自文件的第31行,您试图使用旧的Capistrano 2语法定义任务。新的Capistrano3使用Rake,因此您必须使用Rake语法来定义任务,并借助一些Capistrano方法。Rake不识别“角色”和“除外”。TalkingQuick为定义任务的新方法提供了一个很好的例子。

堆栈跟踪非常清晰。错误来自文件的第31行,您试图使用旧的Capistrano 2语法定义任务。新的Capistrano3使用Rake,因此您必须使用Rake语法来定义任务,并借助一些Capistrano方法。Rake不识别“角色”和“除外”。TalkingQuick为定义任务的新方法提供了一个很好的例子。

再次感谢!我打了一两个嗝。首先是处理Sidekiq<代码>上限中止
无法加载这样的文件--sidekiq/capistrano
/Users/dbeitel/Documents/Projects/liveinbam/Capfile:19:in`
第二个是rbenv<代码>上限中止
无法激活capistrano-rbenv-2.0.0,因为sshkit-1.3.0与sshkit(~>1.2.0)冲突
/Users/dbeitel/Documents/Projects/liveinbam/Capfile:20:in`所以第二个错误是因为存在gem版本冲突,您需要确保只需要一个版本的sshkit。第一个看起来像是您试图在没有安装sidekiq的情况下要求使用sidekiq脚本。几乎没有可能的原因。您正在使用bundle exec吗?您是否安装了sidekiq版本,其中包括capistrano 3任务?希望这有助于@TalkingQuick我正在尝试遵循您的教程。我不知道在哪里可以找到您在教程中提到的deploy:setup\u config任务。再次感谢!我打了一两个嗝。首先是处理Sidekiq<代码>上限中止
无法加载这样的文件--sidekiq/capistrano
/Users/dbeitel/Documents/Projects/liveinbam/Capfile:19:in`
第二个是rbenv<代码>上限中止
无法激活capistrano-rbenv-2.0.0,因为sshkit-1.3.0与sshkit(~>1.2.0)冲突
/Users/dbeitel/Documents/Projects/liveinbam/Capfile:20:in`所以第二个错误是因为存在gem版本冲突,您需要确保只需要一个版本的sshkit。第一个看起来像是您试图在没有安装sidekiq的情况下要求使用sidekiq脚本。几乎没有可能的原因。您正在使用bundle exec吗?您是否安装了sidekiq版本,其中包括capistrano 3任务?希望这有助于@TalkingQuick我正在尝试遵循您的教程。我不知道在哪里可以找到您在教程中提到的deploy:setup\u config任务。