0
我跟着capistrano in ruby script文档。capistrano 3 pury ruby错误 - 不知道如何构建任务':检查'
我的文件:
$ ls
deploy.rb Gemfile Gemfile.lock
Capistrano的版本:
$ cat Gemfile | grep -i cap
gem "capistrano", "3.2.1"
红宝石版本:
$ bundle exec ruby --version
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux-gnu]
Ruby脚本:
require "capistrano/all"
set :application, "my_app"
set :deploy_to, "/home/my_app"
set :tmp_dir, "/tmp"
set :keep_releases, 5
SSHKit::Backend::Netssh.configure { |ssh| ssh.ssh_options = { forward_agent: true, port: 22, user: "deploy_user", keys: "/ssh/key" } }
server "host.example.com", roles: [:myrole]
require "capistrano/setup"
require "capistrano/deploy"
cap_gem_dir = File.join Gem::Specification.find_by_name("capistrano").gem_dir, "lib", "capistrano", "tasks", "*.rake"
Dir.glob(cap_gem_dir).each { |r| import r }
Capistrano::Application.invoke("deploy")
执行:
$ bundle exec ruby deploy.rb
** Invoke deploy (first_time)
** Execute deploy
** Invoke deploy:starting (first_time)
** Execute deploy:starting
** Invoke deploy:check (first_time)
** Execute deploy:check
/var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb:62:in `[]': Don't know how to build task ':check' (RuntimeError)
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:353:in `[]'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/dsl.rb:15:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake:36:in `block (2 levels) in <top (required)>'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
from /usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/dsl.rb:15:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake:4:in `block (2 levels) in <top (required)>'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
from /usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/dsl.rb:15:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/framework.rake:65:in `block (2 levels) in <top (required)>'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/framework.rake:64:in `each'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/framework.rake:64:in `block in <top (required)>'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
from /usr/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
from /var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
from /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/dsl.rb:15:in `invoke'
from deploy.rb:13:in `<main>'
虽然我不知道,好像是命名空间缺失 - Don't know how to build task ':check'
- 在':check'
应该是'deploy:check'
。
更新:
似乎scm
变量必须设置。
$ grep -nH scm /var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake
/var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake:9: invoke "#{scm}:create_release"
/var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake:36: invoke "#{scm}:check"
/var/lib/gems/2.1.0/gems/capistrano-3.2.1/lib/capistrano/tasks/deploy.rake:205: invoke "#{scm}:set_current_revision"
加入set :scm, "deploy"
让它继续下去,但后来失败
/var/lib/gems/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb:62:in `[]': Don't know how to build task 'deploy:create_release' (RuntimeError)
可以请你帮助我了解什么是错误,它可能如何固定?
谢谢。
首先,感谢您的回复。其次,将'scm'设置为':git'并不能解决问题,请参阅上面的'grep'更新。另外,因为不调用Capistrano :: Application.invoke(“production”)',所以添加'set:stage,:production'不起作用。尽管如此,我设置了它,由于scm而失败。任何其他想法?顺便说一句,你可以测试你的建议,你有任何你需要的。 – MrRoth 2014-10-23 11:50:45