Class: EY::Serverside::CLI
- Inherits:
-
Thor
show all
- Defined in:
- lib/engineyard-serverside/cli.rb
Constant Summary
Constants inherited
from Thor
Thor::HELP_MAPPINGS, Thor::THOR_RESERVED_WORDS, Thor::VERSION
Instance Attribute Summary
Attributes included from Thor::Base
#options
Instance Method Summary
collapse
Methods inherited from Thor
default_task, desc, handle_argument_error, #help, help, map, method_option, method_options, printable_tasks, start, task_help
Methods included from Thor::Base
included, #initialize, register_klass_file, shell, shell=, subclass_files, subclasses
Instance Method Details
#deploy(default_task = :deploy) ⇒ Object
#install_bundler(version) ⇒ Object
192
193
194
195
196
197
198
199
200
201
202
203
204
|
# File 'lib/engineyard-serverside/cli.rb', line 192
def install_bundler(version)
egrep_escaped_version = version.gsub(/\./, '\.')
has_bundler_cmd = "gem list bundler | grep \"bundler \" | egrep -q '#{egrep_escaped_version}[,)]'"
unless system(has_bundler_cmd)
system("gem install bundler -q --no-rdoc --no-ri -v '#{version}'")
end
end
|
#integrate ⇒ Object
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'lib/engineyard-serverside/cli.rb', line 122
def integrate
EY::Serverside::LoggedOutput.verbose = options[:verbose]
EY::Serverside::LoggedOutput.logfile = File.join(ENV['HOME'], "#{options[:app]}-integrate.log")
app_dir = Pathname.new "/data/#{options[:app]}"
current_app_dir = app_dir + "current"
integrate_options = options.dup
integrate_options[:release_path] = current_app_dir.realpath.to_s
integrate_options[:branch] = (current_app_dir + 'REVISION').read.strip
config = EY::Serverside::Deploy::Configuration.new(integrate_options)
load_servers(config)
invoke :propagate
EY::Serverside::Server.all.each do |server|
server.sync_directory app_dir
server.run("rm -rf #{current_app_dir}")
end
EY::Serverside::Deploy.new(config).cached_deploy
end
|
#propagate ⇒ Object
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
# File 'lib/engineyard-serverside/cli.rb', line 207
def propagate
config = EY::Serverside::Deploy::Configuration.new
gem_filename = "engineyard-serverside-#{EY::Serverside::VERSION}.gem"
local_gem_file = File.join(Gem.dir, 'cache', gem_filename)
remote_gem_file = File.join(Dir.tmpdir, gem_filename)
gem_binary = File.join(Gem.default_bindir, 'gem')
servers = EY::Serverside::Server.all.find_all { |server| !server.local? }
futures = EY::Serverside::Future.call(servers) do |server|
egrep_escaped_version = EY::Serverside::VERSION.gsub(/\./, '\.')
has_gem_cmd = "#{gem_binary} list engineyard-serverside | grep \"engineyard-serverside\" | egrep -q '#{egrep_escaped_version}[,)]'"
if !server.run(has_gem_cmd) puts "~> Installing engineyard-serverside on #{server.hostname}"
system(Escape.shell_command([
'scp', '-i', "#{ENV['HOME']}/.ssh/internal",
"-o", "StrictHostKeyChecking=no",
local_gem_file,
"#{config.user}@#{server.hostname}:#{remote_gem_file}",
]))
server.run("sudo #{gem_binary} install --no-rdoc --no-ri '#{remote_gem_file}'")
end
end
EY::Serverside::Future.success?(futures)
end
|