engineyard 3.1.3 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/engineyard/cli.rb +44 -0
- data/lib/engineyard/version.rb +1 -1
- data/spec/ey/console_spec.rb +57 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1e06c616357b9704ae4bc72a77c8a3f1db653d6
|
4
|
+
data.tar.gz: 74c3b3bc128af34c303ef237e5ce93078e213732
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 046cb60b0d7a6c1c36f3577c86050da53a9d99fbb97ed4974886717aed1a08185d7fabfd931e6557241f28132305695c2c00c817aa7c81873bb3f750ab23d0c5
|
7
|
+
data.tar.gz: 4eff8c75b738ecdba7fbc0eb930acb3cd3311696faf1d9496a5aa84f36de13b838671a9ac5698d57572ba70c1ad739ce3ef4ae42ce867df75db3e787a3d45d21
|
data/lib/engineyard/cli.rb
CHANGED
@@ -522,6 +522,50 @@ WARNING: Interrupting again may prevent Engine Yard Cloud from recording this
|
|
522
522
|
exit exits.detect {|status| status != 0 } || 0
|
523
523
|
end
|
524
524
|
|
525
|
+
desc "console [--app APP] [--environment ENVIRONMENT] [--account ACCOUNT]", "Open a Rails console session to the master app server."
|
526
|
+
long_desc <<-DESC
|
527
|
+
Opens a Rails console session on app master.
|
528
|
+
DESC
|
529
|
+
method_option :environment, type: :string, aliases: %w(-e),
|
530
|
+
required: true, default: '',
|
531
|
+
desc: "Environment to console into"
|
532
|
+
method_option :app, type: :string, aliases: %w(-a),
|
533
|
+
required: true, default: '',
|
534
|
+
desc: "Name of the application"
|
535
|
+
method_option :account, type: :string, aliases: %w(-c),
|
536
|
+
required: true, default: '',
|
537
|
+
desc: "Name of the account in which the environment can be found"
|
538
|
+
|
539
|
+
def console
|
540
|
+
app_env = fetch_app_environment(options[:app], options[:environment], options[:account])
|
541
|
+
instances = filter_servers(app_env.environment, options, default: {app_master: true})
|
542
|
+
user = app_env.environment.username
|
543
|
+
cmd = "cd /data/#{app_env.app.name}/current && bundle exec rails console"
|
544
|
+
cmd = Escape.shell_command(['bash','-lc',cmd])
|
545
|
+
|
546
|
+
ssh_cmd = ["ssh"]
|
547
|
+
ssh_cmd += ["-t"]
|
548
|
+
|
549
|
+
trap(:INT) { abort "Aborting..." }
|
550
|
+
|
551
|
+
exits = []
|
552
|
+
instances.each do |instance|
|
553
|
+
host = instance.public_hostname
|
554
|
+
name = instance.name ? "#{instance.role} (#{instance.name})" : instance.role
|
555
|
+
ui.info "\nConnecting to #{name} #{host}..."
|
556
|
+
unless cmd
|
557
|
+
ui.info "Ctrl + C to abort"
|
558
|
+
sleep 1.3
|
559
|
+
end
|
560
|
+
sshcmd = Escape.shell_command((ssh_cmd + ["#{user}@#{host}"] + [cmd]).compact)
|
561
|
+
ui.debug "$ #{sshcmd}"
|
562
|
+
system sshcmd
|
563
|
+
exits << $?.exitstatus
|
564
|
+
end
|
565
|
+
|
566
|
+
exit exits.detect {|status| status != 0 } || 0
|
567
|
+
end
|
568
|
+
|
525
569
|
desc "scp [FROM_PATH] [TO_PATH] [--all] [--environment ENVIRONMENT]", "scp a file to/from multiple servers in an environment"
|
526
570
|
long_desc <<-DESC
|
527
571
|
Use the system `scp` command to copy files to some or all of the servers.
|
data/lib/engineyard/version.rb
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
print_my_args_ssh = "#!/bin/sh\necho ssh $*"
|
4
|
+
|
5
|
+
shared_examples_for "running ey console" do
|
6
|
+
given "integration"
|
7
|
+
|
8
|
+
def extra_ey_options
|
9
|
+
{:prepend_to_path => {'ssh' => "#!/bin/sh\necho ssh $*"}}
|
10
|
+
end
|
11
|
+
|
12
|
+
def command_to_run(opts)
|
13
|
+
cmd = ["console"]
|
14
|
+
cmd << "--environment" << opts[:environment] if opts[:environment]
|
15
|
+
cmd << "--quiet" if opts[:quiet]
|
16
|
+
cmd
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "ey console" do
|
21
|
+
include_examples "running ey console"
|
22
|
+
|
23
|
+
it "complains if it has no app master" do
|
24
|
+
login_scenario "one app, many environments"
|
25
|
+
ey %w[console -e bakon], :expect_failure => true
|
26
|
+
expect(@err).to match(/'bakon' does not have any matching instances/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "opens the console on the right server" do
|
30
|
+
login_scenario "one app, one environment"
|
31
|
+
ey command_to_run(:environment => 'giblets', :verbose => true)
|
32
|
+
expect(@raw_ssh_commands.select do |command|
|
33
|
+
command =~ /^ssh -t turkey@app_master_hostname.+ bash -lc '.+bundle exec rails console'$/
|
34
|
+
end).not_to be_empty
|
35
|
+
expect(@raw_ssh_commands.select do |command|
|
36
|
+
command =~ /^ssh -t turkey.+$/
|
37
|
+
end.count).to eq(1)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "is quiet" do
|
41
|
+
login_scenario "one app, one environment"
|
42
|
+
ey command_to_run(:environment => 'giblets', :quiet => true)
|
43
|
+
expect(@out).to match(/ssh.*-t turkey/)
|
44
|
+
expect(@out).not_to match(/Loading application data/)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "runs in bash by default" do
|
48
|
+
login_scenario "one app, one environment"
|
49
|
+
ey command_to_run(:environment => 'giblets', :quiet => true)
|
50
|
+
expect(@out).to match(/ssh.*bash -lc '.+bundle/)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "raises an error when there are no matching hosts" do
|
54
|
+
login_scenario "one app, one environment, no instances"
|
55
|
+
ey command_to_run(:environment => 'giblets', :quiet => true), :expect_failure => true
|
56
|
+
end
|
57
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Engine Yard Cloud Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -303,6 +303,7 @@ files:
|
|
303
303
|
- spec/engineyard/eyrc_spec.rb
|
304
304
|
- spec/engineyard/repo_spec.rb
|
305
305
|
- spec/engineyard_spec.rb
|
306
|
+
- spec/ey/console_spec.rb
|
306
307
|
- spec/ey/deploy_spec.rb
|
307
308
|
- spec/ey/ey_spec.rb
|
308
309
|
- spec/ey/init_spec.rb
|
@@ -379,6 +380,7 @@ test_files:
|
|
379
380
|
- spec/engineyard/eyrc_spec.rb
|
380
381
|
- spec/engineyard/repo_spec.rb
|
381
382
|
- spec/engineyard_spec.rb
|
383
|
+
- spec/ey/console_spec.rb
|
382
384
|
- spec/ey/deploy_spec.rb
|
383
385
|
- spec/ey/ey_spec.rb
|
384
386
|
- spec/ey/init_spec.rb
|