Class: DeployKit

Inherits:
Object
  • Object
show all
Defined in:
lib/deploy_kit/deploy_kit.rb

Direct Known Subclasses

BackupLog, BackupMysql, ClearFile, LogMonitor, S3storage

Instance Method Summary collapse

Constructor Details

#initializeDeployKit

Returns a new instance of DeployKit.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/deploy_kit/deploy_kit.rb', line 4

def initialize
  db_conf = YAML.load_file(File.join(RAILS_ROOT, 'config', 'database.yml'))
  @db_conf = db_conf[RAILS_ENV].symbolize_keys

  raw_config = File.read(File.join(RAILS_ROOT, 'config', 'deploy_kit.yml'))
  erb_config = ERB.new(raw_config).result
  fu_conf    = YAML.load(erb_config)
  @fu_conf   = fu_conf[RAILS_ENV].symbolize_keys

  @s3_conf = YAML.load_file(File.join(RAILS_ROOT, 'config', 'amazon_s3.yml'))[RAILS_ENV].symbolize_keys
  @fu_conf[:s3_bucket] ||= @s3_conf[:bucket_name]
  @fu_conf[:aws_access_key_id] ||= @s3_conf[:access_key_id]
  @fu_conf[:aws_secret_access_key] ||= @s3_conf[:secret_access_key]

  @fu_conf[:mysqldump_options] ||= '--complete-insert --skip-extended-insert'
  @verbose = !@fu_conf[:verbose].nil?
  @fu_conf[:keep_files] ||= 5
  check_conf
  create_dirs
end

Instance Method Details

#backup(store) ⇒ Object



58
59
60
# File 'lib/deploy_kit/deploy_kit.rb', line 58

def backup(store)
  raise 'Called abstract method: backup'
end

#backup_pathObject



54
55
56
# File 'lib/deploy_kit/deploy_kit.rb', line 54

def backup_path
  @fu_conf[:dump_base_path] || File.join(RAILS_ROOT, 'backup')
end

#check_confObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/deploy_kit/deploy_kit.rb', line 25

def check_conf
  @fu_conf[:s3_bucket] = ENV['s3_bucket'] unless ENV['s3_bucket'].blank?
  if @fu_conf[:app_name] == 'replace_me'
    raise DeployKitConfigError, 'Application name (app_name) key not set in config/deploy_kit.yml.'
  elsif @fu_conf[:s3_bucket] == 'some-s3-bucket'
    raise DeployKitConfigError, 'S3 bucket (s3_bucket) not set in config/deploy_kit.yml.  This bucket must be created using an external S3 tool like S3 Browser for OS X, or JetS3t (Java-based, cross-platform).'
  else
    # Check for access keys set as environment variables:
    if ENV.keys.include?('AMAZON_ACCESS_KEY_ID') && ENV.keys.include?('AMAZON_SECRET_ACCESS_KEY')
      @fu_conf[:aws_access_key_id] = ENV['AMAZON_ACCESS_KEY_ID']
      @fu_conf[:aws_secret_access_key] = ENV['AMAZON_SECRET_ACCESS_KEY']
    elsif @fu_conf[:aws_access_key_id].blank? || @fu_conf[:aws_access_key_id].include?('--replace me') || @fu_conf[:aws_secret_access_key].include?('--replace me')
      raise DeployKitConfigError, 'AWS Access Key Id or AWS Secret Key not set in config/deploy_kit.yml.'
    end
  end
end

#cmdObject



62
63
64
# File 'lib/deploy_kit/deploy_kit.rb', line 62

def cmd
  raise 'Called abstract method: cmd'
end

#create_dirsObject



46
47
48
# File 'lib/deploy_kit/deploy_kit.rb', line 46

def create_dirs
  ensure_directory_exists(backup_path)
end

#ensure_directory_exists(dir) ⇒ Object



50
51
52
# File 'lib/deploy_kit/deploy_kit.rb', line 50

def ensure_directory_exists(dir)
  FileUtils.mkdir_p(dir) unless File.exist?(dir)
end

#final_filenameObject



66
67
68
# File 'lib/deploy_kit/deploy_kit.rb', line 66

def final_filename
  raise 'Called abstract method: final_filename'
end

#timestampObject



42
43
44
# File 'lib/deploy_kit/deploy_kit.rb', line 42

def timestamp
  @timestamp ||= Time.now.strftime("%Y-%m-%d_%H%M%S")
end