class Capistrano::DeployLocker::Provider
Public Class Methods
new(config = Capistrano::DeployLocker.config)
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 4 def initialize(config = Capistrano::DeployLocker.config) @config = config FileUtils.mkpath(config.lock_dir) end
Public Instance Methods
clear()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 32 def clear @lock_file.flock(File::LOCK_UN | File::LOCK_NB) @lock_file.close end
create()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 17 def create @lock_file = File.open(lock_file, File::RDWR | File::CREAT, 0o0644) unless @lock_file.flock(File::LOCK_EX | File::LOCK_NB) @lock_file.close message = "#{lock_file} is already locked!\n" if i = info message << "Info: #{i}" else message << 'No additional info available.' end raise Capistrano::DeployLocker::AlreadyLocked, message end update_info end
info()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 37 def info return unless File.readable?(info_file) JSON.parse(File.read(info_file)) end
locked?()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 9 def locked? locked = false File.open(lock_file, File::RDWR | File::CREAT, 0o0644) do |f| locked = true unless f.flock(File::LOCK_EX | File::LOCK_NB) end locked end
update_info()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 42 def update_info content = { user: @config.who, reason: @config.why, date: Time.now, }.to_json File.write(info_file, "#{content}\n") end
Private Instance Methods
info_file()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 57 def info_file File.join(@config.lock_dir, "#{@config.lock_key}.info") end
lock_file()
click to toggle source
# File lib/capistrano/deploy_locker/provider.rb, line 53 def lock_file File.join(@config.lock_dir, "#{@config.lock_key}.lock") end