2014-10-22 27 views
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) 

可以請你幫助我瞭解什麼是錯誤,它可能如何固定?

謝謝。

回答

0

我認爲你必須將scm選項設置爲:git。所以這個:set :scm, :git。至少這是默認Capistrano itself has

另外,爲什麼你沒有設置stage選項,如capistrano pure ruby guide中所述?

該頁面明確指出stage選項需要在加載setupdeploy文件之前sed。

請注意,由於在加載安裝和部署之前需要設置階段,所以需求訂單很重要。

除此之外,你在這裏做了一個非常新穎的工作(你是我知道的第一個這樣做)。

+0

首先,感謝您的回覆。其次,將'scm'設置爲':git'並不能解決問題,請參閱上面的'grep'更新。另外,因爲不調用Capistrano :: Application.invoke(「production」)',所以添加'set:stage,:production'不起作用。儘管如此,我設置了它,由於scm而失敗。任何其他想法?順便說一句,你可以測試你的建議,你有任何你需要的。 – MrRoth 2014-10-23 11:50:45

相關問題