# File lib/geordi/capistrano_config.rb, line 21 def primary_server # Actually, servers may have a :primary property. From Capistrano 3, the # first listed server is the primary one by default, which is a good- # enough default for us. servers.first end
class Geordi::CapistranoConfig
Attributes
deploy_info[RW]
root[RW]
stage[RW]
Public Class Methods
new(stage)
click to toggle source
# File lib/geordi/capistrano_config.rb, line 6 def initialize(stage) self.stage = stage self.root = find_project_root! load_deploy_info end
Public Instance Methods
env()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 32 def env deploy_info[/^\s*set\s*:rails_env,\s*['"](.*?)['"]/, 1] end
primary_server()
click to toggle source
remote_root()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 28 def remote_root File.join deploy_info[/^\s*set\s*:deploy_to,\s*['"](.*?)['"]/, 1], 'current' end
servers()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 17 def servers deploy_info.scan(/^\s*server\s*['"](.*?)['"]/).flatten end
shell()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 36 def shell 'bash --login' end
user(server)
click to toggle source
# File lib/geordi/capistrano_config.rb, line 12 def user(server) cap2user = deploy_info[/^\s*set\s*:user,\s*['"](.*?)['"]/, 1] cap2user || deploy_info[/^\s*server\s*['"]#{server}['"],.*user.{1,4}['"](.*?)['"]/, 1] end
Private Instance Methods
find_project_root!()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 64 def find_project_root! current = ENV['RAILS_ROOT'] || Dir.pwd until File.exist?(File.join(current, 'Capfile')) if current == '/' || current == '/home' || !File.directory?(current) raise <<~ERROR Could not locate Capfile. Are you calling me from within a Rails project? Maybe Capistrano is not installed in this project. ERROR else current = File.dirname(current) end end current end
load_deploy_info()
click to toggle source
# File lib/geordi/capistrano_config.rb, line 44 def load_deploy_info lines = [] self.deploy_info = '' if stage lines += File.readlines(File.join(root, "config/deploy/#{stage}.rb")) end lines += File.readlines(File.join(root, 'config/deploy.rb')) lines.each do |line| next if line =~ /^\s*#/ # Omit comment lines line.chomp! if line =~ /[\\,]\s*$/ # Join wrapped lines deploy_info << line end deploy_info end