2017-03-25 4 views
18

capistranoを使用して私のレールサイトを展開しようとしました。 は、だから私は、これはこれは私のキャップファイルraidを使ってcapistrano 3.8.0で 'cap production deploy'を実行するとタスク 'start'をビルドする方法がわかりません

# Load DSL and Setup Up Stages 
require 'capistrano/setup' 
require 'capistrano/deploy' 

require 'capistrano/rails' 
require 'capistrano/bundler' 
require 'capistrano/rvm' 
require 'capistrano/puma' 
require 'capistrano/scm/git' 

install_plugin Capistrano::SCM::Git 

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined. 
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 

である私は

(Backtrace restricted to imported tasks) 
cap aborted! 
Don't know how to build task 'start' (see --tasks) 

Tasks: TOP => production 

を得たものである

cap production deploy 

を実行したとき、これは

set :repo_url,  'xxx' 
set :application,  'xxx' 
set :user,   'yyy' 
set :puma_threads, [4, 16] 
set :puma_workers, 0 

set :pty,    true 
set :use_sudo,  false 
set :stages,   ["staging", "production"] 
set :default_stage, "production" 
set :deploy_via,  :remote_cache 
set :deploy_to,  "/home/#{fetch(:user)}/apps/#{fetch(:application)}" 
set :puma_bind,  "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock" 
set :puma_state,  "#{shared_path}/tmp/pids/puma.state" 
set :puma_pid,  "#{shared_path}/tmp/pids/puma.pid" 
set :puma_access_log, "#{release_path}/log/puma.error.log" 
set :puma_error_log, "#{release_path}/log/puma.access.log" 
set :ssh_options,  { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa) } 
set :puma_preload_app, true 
set :puma_worker_timeout, nil 
set :puma_init_active_record, true # Change to false when not using ActiveRecord 

namespace :puma do 
    desc 'Create Directories for Puma Pids and Socket' 
    task :make_dirs do 
    on roles(:app) do 
     execute "mkdir #{shared_path}/tmp/sockets -p" 
     execute "mkdir #{shared_path}/tmp/pids -p" 
    end 
    end 

    before :start, :make_dirs 
end 

namespace :deploy do 
    desc "Make sure local git is in sync with remote." 
    task :check_revision do 
    on roles(:app) do 
     unless `git rev-parse HEAD` == `git rev-parse origin/master` 
     puts "WARNING: HEAD is not the same as origin/master" 
     puts "Run `git push` to sync changes." 
     exit 
     end 
    end 
    end 

    desc 'Initial Deploy' 
    task :initial do 
    on roles(:app) do 
     before 'deploy:restart', 'puma:start' 
     invoke 'deploy' 
    end 
    end 

    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     invoke 'puma:restart' 
    end 
    end 

    before :starting,  :check_revision 
    after :finishing, :compile_assets 
    after :finishing, :cleanup 
end 

だから私のdeploy.rbです上記のコードは動作していますしかし私は私の宝石を更新するとき私はもう私のアプリを展開することはできません。

どうすればこの問題を解決できますか?

ありがとうございます!

答えて

59

キャップファイルrequire 'capistrano/puma'の後にinstall_plugin Capistrano::Pumaを追加します。

capistrano3-pumaは数日前に3.0に移動しました。この行は、このバージョンでのデフォルトのpumaタスクのロードに必要です。

https://github.com/seuros/capistrano-puma#usage

+0

ありがとうございます。エラーメッセージがとても暗いので、あなたがこの問題をどのように解決したか教えてください。 – sandre89

+1

@ sandre89私は、これが起こる数週間前に同じプロジェクトを展開しました。グーグルでは多くの回答がありましたが、回答がありませんでした。私はGemfileのほとんどの宝石にcapistrano拡張グループ以外のバージョン制約があることに気付きました。そこで、ロックファイルと[rubygems.org](https://rubygems.org/gems/capistrano3-puma/)のこれらの宝石の履歴を確認し、 'capistrano3-puma'の主なバージョンアップを見つけました。その後、このエラーを解決しました。 – Jin

+0

願い私はあなたのためにビールを買うことができました。多分あなたに現金を送ることができますか? – Augusto

関連する問題