class Ruboty::Capistrano::Actions::Rollback

Attributes

env[R]
message[R]
path[R]
role[R]

Public Class Methods

new(message) click to toggle source
# File lib/ruboty/capistrano/actions/rollback.rb, line 9
def initialize(message)
  @message = message
  @env = Ruboty::Capistrano.config.env
  @role = message.match_data[1]
  @path = Ruboty::Capistrano.config.local_repo_path[@role]
end

Public Instance Methods

call() click to toggle source
# File lib/ruboty/capistrano/actions/rollback.rb, line 16
        def call
          message.reply("#{@env}環境の#{@role}をrollbackします")
          rollback
          message.reply("#{@env}環境の#{@role}をrollback完了しました")
        rescue => e
          err_message = <<~TEXT
            :cop:問題が発生しました:cop:
            ```
            #{e.message}
            ```
          TEXT
          message.reply(err_message)
        end

Private Instance Methods

rollback() click to toggle source
# File lib/ruboty/capistrano/actions/rollback.rb, line 31
def rollback
  cmd = "cd #{path} && bundle && bundle exec cap #{@env} deploy:rollback"
  out, err, status = Bundler.with_clean_env { Open3.capture3(cmd) }
  raise RollbackError.new(err) unless err.empty?
end