Class: EY::Serverside::CLI
Constant Summary
Constants included
from Dataflow
Dataflow::UnificationError, Dataflow::VERSION
Constants inherited
from Thor
Thor::HELP_MAPPINGS, Thor::THOR_RESERVED_WORDS, Thor::VERSION
Instance Attribute Summary
Attributes included from Thor::Base
#options
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Dataflow
#barrier, #by_need, #flow, included, #local, #need_later, #unify
Methods inherited from Thor
default_task, desc, handle_argument_error, #help, help, map, method_option, method_options, printable_tasks, task_help
Methods included from Thor::Base
included, #initialize, register_klass_file, shell, shell=, subclass_files, subclasses
Class Method Details
9
10
11
12
13
|
# File 'lib/engineyard-serverside/cli.rb', line 9
def self.start(*)
super
rescue RemoteFailure
exit(1)
end
|
Instance Method Details
#deploy(default_task = :deploy) ⇒ Object
#install_bundler(version) ⇒ Object
199
200
201
202
203
204
205
206
207
208
209
210
211
|
# File 'lib/engineyard-serverside/cli.rb', line 199
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
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
154
155
156
157
158
159
160
|
# File 'lib/engineyard-serverside/cli.rb', line 129
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)
EY::Serverside::Server.load_all_from_array(assemble_instance_hashes(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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
# File 'lib/engineyard-serverside/cli.rb', line 214
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')
barrier(*(EY::Serverside::Server.all.find_all do |server|
!server.local? end.map do |server|
need_later do
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
end))
end
|