Class: ProvisionConfigGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
RelevanceRails::GeneratorOverrides
Defined in:
lib/generators/provision_config/provision_config_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RelevanceRails::GeneratorOverrides

#git

Instance Attribute Details

#authorized_keysObject (readonly)

Returns the value of attribute authorized_keys.



15
16
17
# File 'lib/generators/provision_config/provision_config_generator.rb', line 15

def authorized_keys
  @authorized_keys
end

Instance Method Details

#change_directoryObject

This generator may not receive a working directory; and we pull data by shelling out to RVM about the ruby version. This sets the directory explicitly beforehand.



20
21
22
# File 'lib/generators/provision_config/provision_config_generator.rb', line 20

def change_directory
  Dir.chdir(destination_root)
end

#check_authorized_keysObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/provision_config/provision_config_generator.rb', line 30

def check_authorized_keys
  if (@authorized_keys = fetch_keys).empty?
    abort <<-EOF
No SSH public keys were found!

To ensure you have remote access to your servers, an SSH public key must be available from at least one of these sources:
- local file (~/.ssh/id_rsa.pub, ~/.ssh/id_dsa.pub, or ~/.ssh/id_ecdsa.pub)
- ssh-agent (by running `ssh-add -L`)
- public keys git repo (URL to repo specified in ~/.relevance_rails/key_git_url)
    EOF
  end
end

#check_git_statusObject



24
25
26
27
28
# File 'lib/generators/provision_config/provision_config_generator.rb', line 24

def check_git_status
  unless `git status`[/working directory clean/]
    abort "Your git repository is dirty. Clean up before reinvoking this command."
  end
end

#commit_changesObject



65
66
67
68
# File 'lib/generators/provision_config/provision_config_generator.rb', line 65

def commit_changes
  git :add => 'provision/'
  git :commit => "-m 'Provision directory auto-created by elzar #{Elzar::VERSION}'"
end

#create_capistrano_filesObject



43
44
45
46
47
48
49
# File 'lib/generators/provision_config/provision_config_generator.rb', line 43

def create_capistrano_files
  backup_copy_file 'Capfile', 'Capfile'
  backup_template 'deploy.rb.erb', 'config/deploy.rb'
  backup_copy_file 'recipes_deploy.rb', 'config/deploy/recipes/deploy.rb'
  backup_copy_file 'vagrant.rb', 'config/deploy/vagrant.rb'
  git :commit => '-m "Add Capistrano files"'
end

#create_provision_directoryObject



51
52
53
54
55
# File 'lib/generators/provision_config/provision_config_generator.rb', line 51

def create_provision_directory
  Elzar.create_provision_directory Rails.root.join('provision'),
    :ruby_version => RelevanceRails.ruby_version, :database => database,
    :authorized_keys => @authorized_keys, :app_name => name
end

#create_rvmrcObject



57
58
59
60
61
62
63
# File 'lib/generators/provision_config/provision_config_generator.rb', line 57

def create_rvmrc
  if File.exists?(rvmrc = Rails.root.join('.rvmrc'))
    copy_file(rvmrc, 'provision/.rvmrc', :force => true)
  else
    remove_file 'provision/.rvmrc'
  end
end