Sha256: f9bd9f30a4a47e56df3acde23b26096e25061bebce51316a517e4de08ac72e46

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

git_plugin = self

namespace :deploy do
  before :starting, :check_racecar_hooks do
    invoke 'racecar:add_hooks'
  end
end

namespace :racecar do
  def consumer_list
    YAML.parse_file(fetch(:racecar_task_path)).to_ruby['tasks']
  end

  def build_pid_file(consumer_name)
    "#{fetch(:racecar_pid_path)}/#{consumer_name.downcase}.pid"
  end

  task :add_hooks do
    after 'deploy:updated', 'racecar:stop'
    after 'deploy:published', 'racecar:start'
    after 'deploy:failed', 'racecar:restart'
  end

  desc 'Test'
  task :test do
    on roles(fetch(:racecar_role)) do |role|
      within release_path do
        with rails_env: fetch(:rails_env) do
          info fetch(:racecar_pid_path)
          git_plugin.consumer_list.each { |item|
            git_plugin.build_pid_file(item)
          }
        end
      end
    end
  end

  desc 'Start'
  task :start do
    on roles(fetch(:racecar_role)) do |role|
      within current_path do
        with rails_env: fetch(:rails_env) do
          git_plugin.consumer_list.each do |item|
            execute(:bundle, "exec racecar --daemonize #{item} --pidfile #{git_plugin.build_pid_file(item)}")
          end
        end
      end
    end
  end

  task :stop do
    on roles(fetch(:racecar_role)) do |role|
      within current_path do
        with rails_env: fetch(:rails_env) do
          git_plugin.consumer_list.each do |item|
            execute(:bundle, "exec racecarctl stop --pidfile #{git_plugin.build_pid_file(item)}")
          end
        end
      end
    end
  end

  task :restart do
    invoke! 'racecar:stop'
    invoke! 'racecar:start'
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
capistrano-racecar-1.0.2 lib/capistrano/tasks/racecar.rake