crazy-yard 3.2.2
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 +7 -0
- data/LICENSE +19 -0
- data/README.md +438 -0
- data/bin/ey +9 -0
- data/lib/engineyard.rb +9 -0
- data/lib/engineyard/cli.rb +816 -0
- data/lib/engineyard/cli/api.rb +98 -0
- data/lib/engineyard/cli/recipes.rb +129 -0
- data/lib/engineyard/cli/ui.rb +275 -0
- data/lib/engineyard/cli/web.rb +85 -0
- data/lib/engineyard/config.rb +158 -0
- data/lib/engineyard/deploy_config.rb +65 -0
- data/lib/engineyard/deploy_config/ref.rb +56 -0
- data/lib/engineyard/error.rb +82 -0
- data/lib/engineyard/eyrc.rb +59 -0
- data/lib/engineyard/repo.rb +105 -0
- data/lib/engineyard/serverside_runner.rb +159 -0
- data/lib/engineyard/templates.rb +6 -0
- data/lib/engineyard/templates/ey.yml.erb +196 -0
- data/lib/engineyard/templates/ey_yml.rb +119 -0
- data/lib/engineyard/thor.rb +215 -0
- data/lib/engineyard/version.rb +4 -0
- data/lib/vendor/thor/Gemfile +15 -0
- data/lib/vendor/thor/LICENSE.md +20 -0
- data/lib/vendor/thor/README.md +35 -0
- data/lib/vendor/thor/lib/thor.rb +473 -0
- data/lib/vendor/thor/lib/thor/actions.rb +318 -0
- data/lib/vendor/thor/lib/thor/actions/create_file.rb +105 -0
- data/lib/vendor/thor/lib/thor/actions/create_link.rb +60 -0
- data/lib/vendor/thor/lib/thor/actions/directory.rb +119 -0
- data/lib/vendor/thor/lib/thor/actions/empty_directory.rb +137 -0
- data/lib/vendor/thor/lib/thor/actions/file_manipulation.rb +314 -0
- data/lib/vendor/thor/lib/thor/actions/inject_into_file.rb +109 -0
- data/lib/vendor/thor/lib/thor/base.rb +652 -0
- data/lib/vendor/thor/lib/thor/command.rb +136 -0
- data/lib/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +80 -0
- data/lib/vendor/thor/lib/thor/core_ext/io_binary_read.rb +12 -0
- data/lib/vendor/thor/lib/thor/core_ext/ordered_hash.rb +100 -0
- data/lib/vendor/thor/lib/thor/error.rb +28 -0
- data/lib/vendor/thor/lib/thor/group.rb +282 -0
- data/lib/vendor/thor/lib/thor/invocation.rb +172 -0
- data/lib/vendor/thor/lib/thor/parser.rb +4 -0
- data/lib/vendor/thor/lib/thor/parser/argument.rb +74 -0
- data/lib/vendor/thor/lib/thor/parser/arguments.rb +171 -0
- data/lib/vendor/thor/lib/thor/parser/option.rb +121 -0
- data/lib/vendor/thor/lib/thor/parser/options.rb +218 -0
- data/lib/vendor/thor/lib/thor/rake_compat.rb +72 -0
- data/lib/vendor/thor/lib/thor/runner.rb +322 -0
- data/lib/vendor/thor/lib/thor/shell.rb +88 -0
- data/lib/vendor/thor/lib/thor/shell/basic.rb +393 -0
- data/lib/vendor/thor/lib/thor/shell/color.rb +148 -0
- data/lib/vendor/thor/lib/thor/shell/html.rb +127 -0
- data/lib/vendor/thor/lib/thor/util.rb +270 -0
- data/lib/vendor/thor/lib/thor/version.rb +3 -0
- data/lib/vendor/thor/thor.gemspec +24 -0
- data/spec/engineyard/cli/api_spec.rb +50 -0
- data/spec/engineyard/cli_spec.rb +28 -0
- data/spec/engineyard/config_spec.rb +61 -0
- data/spec/engineyard/deploy_config_spec.rb +194 -0
- data/spec/engineyard/eyrc_spec.rb +76 -0
- data/spec/engineyard/repo_spec.rb +83 -0
- data/spec/engineyard_spec.rb +7 -0
- data/spec/ey/console_spec.rb +57 -0
- data/spec/ey/deploy_spec.rb +435 -0
- data/spec/ey/ey_spec.rb +23 -0
- data/spec/ey/init_spec.rb +123 -0
- data/spec/ey/list_environments_spec.rb +120 -0
- data/spec/ey/login_spec.rb +33 -0
- data/spec/ey/logout_spec.rb +24 -0
- data/spec/ey/logs_spec.rb +36 -0
- data/spec/ey/rebuild_spec.rb +18 -0
- data/spec/ey/recipes/apply_spec.rb +29 -0
- data/spec/ey/recipes/download_spec.rb +43 -0
- data/spec/ey/recipes/upload_spec.rb +99 -0
- data/spec/ey/rollback_spec.rb +73 -0
- data/spec/ey/scp_spec.rb +176 -0
- data/spec/ey/servers_spec.rb +209 -0
- data/spec/ey/ssh_spec.rb +273 -0
- data/spec/ey/status_spec.rb +45 -0
- data/spec/ey/timeout_deploy_spec.rb +18 -0
- data/spec/ey/web/disable_spec.rb +21 -0
- data/spec/ey/web/enable_spec.rb +26 -0
- data/spec/ey/web/restart_spec.rb +21 -0
- data/spec/ey/whoami_spec.rb +30 -0
- data/spec/spec_helper.rb +84 -0
- data/spec/support/bundled_ey +7 -0
- data/spec/support/fixture_recipes.tgz +0 -0
- data/spec/support/git_repos.rb +115 -0
- data/spec/support/helpers.rb +330 -0
- data/spec/support/matchers.rb +16 -0
- data/spec/support/ruby_ext.rb +13 -0
- data/spec/support/shared_behavior.rb +278 -0
- metadata +411 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'rspec/matchers'
|
|
2
|
+
|
|
3
|
+
RSpec::Matchers.define :have_command_like do |regex|
|
|
4
|
+
match do |command_list|
|
|
5
|
+
@found = command_list.find{|c| c =~ regex }
|
|
6
|
+
!!@found
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
failure_message_for_should do |command_list|
|
|
10
|
+
"Didn't find a command matching #{regex} in commands:\n\n" + command_list.join("\n\n")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
failure_message_for_should_not do |command_list|
|
|
14
|
+
"Found unwanted command:\n\n#{@found}\n\n(matches regex #{regex})"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Kernel
|
|
2
|
+
def capture_stdio(input = nil, &block)
|
|
3
|
+
require 'stringio'
|
|
4
|
+
org_stdin, $stdin = $stdin, StringIO.new(input) if input
|
|
5
|
+
org_stdout, $stdout = $stdout, StringIO.new
|
|
6
|
+
yield
|
|
7
|
+
return @out = $stdout.string
|
|
8
|
+
ensure
|
|
9
|
+
$stdout = org_stdout
|
|
10
|
+
$stdin = org_stdin
|
|
11
|
+
end
|
|
12
|
+
alias capture_stdout capture_stdio
|
|
13
|
+
end
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
|
|
3
|
+
shared_examples_for "it has an ambiguous git repo" do
|
|
4
|
+
use_git_repo('dup test')
|
|
5
|
+
|
|
6
|
+
before(:all) do
|
|
7
|
+
login_scenario "two apps, same git uri"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples_for "it requires an unambiguous git repo" do
|
|
12
|
+
include_examples "it has an ambiguous git repo"
|
|
13
|
+
|
|
14
|
+
it "lists disambiguating environments to choose from" do
|
|
15
|
+
run_ey({}, {:expect_failure => true})
|
|
16
|
+
expect(@err).to include('Multiple environments possible, please be more specific')
|
|
17
|
+
expect(@err).to match(/giblets/)
|
|
18
|
+
expect(@err).to match(/keycollector_production/)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
shared_examples_for "it takes an environment name and an app name and an account name" do
|
|
23
|
+
include_examples "it takes an app name"
|
|
24
|
+
include_examples "it takes an environment name"
|
|
25
|
+
|
|
26
|
+
it "complains when you send --account without a value" do
|
|
27
|
+
login_scenario "empty"
|
|
28
|
+
fast_failing_ey command_to_run({}) << '--account'
|
|
29
|
+
expect(@err).to include("No value provided for option '--account'")
|
|
30
|
+
fast_failing_ey command_to_run({}) << '-c'
|
|
31
|
+
expect(@err).to include("No value provided for option '--account'")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "when multiple accounts with collaboration" do
|
|
35
|
+
before :all do
|
|
36
|
+
login_scenario "two accounts, two apps, two environments, ambiguous"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "fails when the app and environment are ambiguous across accounts" do
|
|
40
|
+
run_ey({:environment => "giblets", :app => "rails232app", :ref => 'master'}, {:expect_failure => !@succeeds_on_multiple_matches})
|
|
41
|
+
if @succeeds_on_multiple_matches
|
|
42
|
+
expect(@err).not_to match(/multiple/i)
|
|
43
|
+
else
|
|
44
|
+
expect(@err).to match(/Multiple application environments possible/i)
|
|
45
|
+
expect(@err).to match(/ey \S+ --account='account_2' --app='rails232app' --environment='giblets'/i)
|
|
46
|
+
expect(@err).to match(/ey \S+ --account='main' --app='rails232app' --environment='giblets'/i)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "runs when specifying the account disambiguates the app to deploy" do
|
|
51
|
+
run_ey({:environment => "giblets", :app => "rails232app", :account => "main", :ref => 'master'})
|
|
52
|
+
verify_ran(make_scenario({
|
|
53
|
+
:environment => 'giblets',
|
|
54
|
+
:application => 'rails232app',
|
|
55
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
56
|
+
:ssh_username => 'turkey',
|
|
57
|
+
}))
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
shared_examples_for "it takes an environment name and an account name" do
|
|
63
|
+
include_examples "it takes an environment name"
|
|
64
|
+
|
|
65
|
+
it "complains when you send --account without a value" do
|
|
66
|
+
login_scenario "empty"
|
|
67
|
+
fast_failing_ey command_to_run({}) << '--account'
|
|
68
|
+
expect(@err).to include("No value provided for option '--account'")
|
|
69
|
+
fast_failing_ey command_to_run({}) << '-c'
|
|
70
|
+
expect(@err).to include("No value provided for option '--account'")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "when multiple accounts with collaboration" do
|
|
74
|
+
before :all do
|
|
75
|
+
login_scenario "two accounts, two apps, two environments, ambiguous"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "fails when the app and environment are ambiguous across accounts" do
|
|
79
|
+
run_ey({:environment => "giblets"}, {:expect_failure => true})
|
|
80
|
+
expect(@err).to match(/multiple environments possible/i)
|
|
81
|
+
expect(@err).to match(/ey \S+ --environment='giblets' --account='account_2'/i)
|
|
82
|
+
expect(@err).to match(/ey \S+ --environment='giblets' --account='main'/i)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "runs when specifying the account disambiguates the app to deploy" do
|
|
86
|
+
run_ey({:environment => "giblets", :account => "main"})
|
|
87
|
+
verify_ran(make_scenario({
|
|
88
|
+
:environment => 'giblets',
|
|
89
|
+
:account => 'main',
|
|
90
|
+
:application => 'rails232app',
|
|
91
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
92
|
+
:ssh_username => 'turkey',
|
|
93
|
+
}))
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context "when the backend raises an error" do
|
|
97
|
+
before do
|
|
98
|
+
# FIXME, cloud-client needs to provide an API for making responses raise
|
|
99
|
+
allow(EY::CLI::API).to receive(:new).and_raise(EY::CloudClient::RequestFailed.new("Error: Important infos"))
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "returns the error message to the user" do
|
|
103
|
+
fast_failing_ey(command_to_run({:environment => "giblets", :account => "main"}))
|
|
104
|
+
expect(@err).to match(/Important infos/)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
shared_examples_for "it takes an environment name" do
|
|
112
|
+
it "operates on the current environment by default" do
|
|
113
|
+
login_scenario "one app, one environment"
|
|
114
|
+
run_ey(:environment => nil)
|
|
115
|
+
verify_ran(make_scenario({
|
|
116
|
+
:environment => 'giblets',
|
|
117
|
+
:account => 'main',
|
|
118
|
+
:application => 'rails232app',
|
|
119
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
120
|
+
:ssh_username => 'turkey',
|
|
121
|
+
}))
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "complains when you specify a nonexistent environment" do
|
|
125
|
+
login_scenario "one app, one environment"
|
|
126
|
+
# This test must shell out (not sure why, plz FIXME)
|
|
127
|
+
ey command_to_run(:environment => 'typo-happens-here'), {:expect_failure => true}
|
|
128
|
+
expect(@err).to match(/No environment found matching .*typo-happens-here/i)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "complains when you send --environment without a value" do
|
|
132
|
+
login_scenario "empty"
|
|
133
|
+
fast_failing_ey command_to_run({}) << '--environment'
|
|
134
|
+
expect(@err).to include("No value provided for option '--environment'")
|
|
135
|
+
fast_failing_ey command_to_run({}) << '-e'
|
|
136
|
+
expect(@err).to include("No value provided for option '--environment'")
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
context "outside a git repo" do
|
|
140
|
+
use_git_repo("not actually a git repo")
|
|
141
|
+
|
|
142
|
+
before :all do
|
|
143
|
+
login_scenario "one app, one environment"
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "works (and does not complain about git remotes)" do
|
|
147
|
+
run_ey({:environment => 'giblets'}) unless @takes_app_name
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
context "given a piece of the environment name" do
|
|
153
|
+
before(:all) do
|
|
154
|
+
login_scenario "one app, many similarly-named environments"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "complains when the substring is ambiguous" do
|
|
158
|
+
run_ey({:environment => 'staging'}, {:expect_failure => !@succeeds_on_multiple_matches})
|
|
159
|
+
|
|
160
|
+
if @succeeds_on_multiple_matches
|
|
161
|
+
expect(@err).not_to match(/multiple .* possible/i)
|
|
162
|
+
else
|
|
163
|
+
if @takes_app_name
|
|
164
|
+
expect(@err).to match(/multiple application environments possible/i)
|
|
165
|
+
else
|
|
166
|
+
expect(@err).to match(/multiple environments possible/i)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "works when the substring is unambiguous" do
|
|
172
|
+
login_scenario "one app, many similarly-named environments"
|
|
173
|
+
run_ey({:environment => 'prod', :migrate => 'rake db:migrate'}, {:debug => true})
|
|
174
|
+
verify_ran(make_scenario({
|
|
175
|
+
:environment => 'railsapp_production',
|
|
176
|
+
:application => 'rails232app',
|
|
177
|
+
:account => 'main',
|
|
178
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
179
|
+
:ssh_username => 'turkey',
|
|
180
|
+
}))
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "complains when it can't guess the environment and its name isn't specified" do
|
|
185
|
+
login_scenario "one app without environment"
|
|
186
|
+
run_ey({:environment => nil}, {:expect_failure => true})
|
|
187
|
+
expect(@err).to match(/No environment found for applications matching remotes:/i)
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
shared_examples_for "it takes an app name" do
|
|
192
|
+
before { @takes_app_name = true }
|
|
193
|
+
|
|
194
|
+
it "complains when you send --app without a value" do
|
|
195
|
+
login_scenario "empty"
|
|
196
|
+
fast_failing_ey command_to_run({}) << '--app'
|
|
197
|
+
expect(@err).to include("No value provided for option '--app'")
|
|
198
|
+
fast_failing_ey command_to_run({}) << '-a'
|
|
199
|
+
expect(@err).to include("No value provided for option '--app'")
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
it "allows you to specify a valid app" do
|
|
203
|
+
login_scenario "one app, one environment"
|
|
204
|
+
Dir.chdir(Dir.tmpdir) do
|
|
205
|
+
run_ey({:environment => 'giblets', :app => 'rails232app', :ref => 'master', :migrate => nil}, {})
|
|
206
|
+
verify_ran(make_scenario({
|
|
207
|
+
:environment => 'giblets',
|
|
208
|
+
:application => 'rails232app',
|
|
209
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
210
|
+
:ssh_username => 'turkey',
|
|
211
|
+
}))
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it "can guess the environment from the app" do
|
|
216
|
+
login_scenario "two apps"
|
|
217
|
+
Dir.chdir(Dir.tmpdir) do
|
|
218
|
+
run_ey({:app => 'rails232app', :ref => 'master', :migrate => true}, {})
|
|
219
|
+
verify_ran(make_scenario({
|
|
220
|
+
:environment => 'giblets',
|
|
221
|
+
:application => 'rails232app',
|
|
222
|
+
:master_hostname => 'app_master_hostname.compute-1.amazonaws.com',
|
|
223
|
+
:ssh_username => 'turkey',
|
|
224
|
+
}))
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
it "complains when you specify a nonexistant app" do
|
|
229
|
+
login_scenario "one app, one environment"
|
|
230
|
+
run_ey({:environment => 'giblets', :app => 'P-time-SAT-solver', :ref => 'master'},
|
|
231
|
+
{:expect_failure => true})
|
|
232
|
+
expect(@err).to match(/No app.*P-time-SAT-solver/i)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
shared_examples_for "it invokes engineyard-serverside" do
|
|
238
|
+
context "with arguments" do
|
|
239
|
+
before(:all) do
|
|
240
|
+
login_scenario "one app, one environment"
|
|
241
|
+
run_ey({:environment => 'giblets', :verbose => true})
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
it "passes --verbose to engineyard-serverside" do
|
|
245
|
+
expect(@ssh_commands).to have_command_like(/engineyard-serverside.*--verbose/)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "passes along instance information to engineyard-serverside" do
|
|
249
|
+
instance_args = [
|
|
250
|
+
/--instances app_hostname[^\s]+ localhost util_fluffy/,
|
|
251
|
+
/--instance-roles app_hostname[^\s]+:app localhost:app_master util_fluffy[^\s]+:util/,
|
|
252
|
+
/--instance-names util_fluffy_hostname[^\s]+:fluffy/
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
db_instance = /db_master/
|
|
256
|
+
|
|
257
|
+
# apps + utilities are all mentioned
|
|
258
|
+
instance_args.each do |i|
|
|
259
|
+
expect(@ssh_commands.last).to match(/#{i}/)
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# but not database instances
|
|
263
|
+
expect(@ssh_commands.last).not_to match(/#{db_instance}/)
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
context "when no instances have names" do
|
|
269
|
+
before(:each) do
|
|
270
|
+
login_scenario "two apps"
|
|
271
|
+
run_ey({:env => 'giblets', :app => 'rails232app', :ref => 'master', :migrate => true, :verbose => true})
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
it "omits the --instance-names parameter" do
|
|
275
|
+
expect(@ssh_commands.last).not_to include("--instance-names")
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: crazy-yard
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.2.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Engine Yard Cloud Team
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2019-09-03 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: highline
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 1.6.1
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 1.6.1
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: escape
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 0.0.4
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.0.4
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: engineyard-serverside-adapter
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '2.2'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.2'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: engineyard-cloud-client
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2.1'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '2.1'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: net-ssh
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '2.7'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '2.7'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: launchy
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '2.1'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '2.1'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rspec
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '2.0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '2.0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: rake
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rdoc
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: fakeweb
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: fakeweb-matcher
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: sinatra
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: realweb
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - "~>"
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: 1.0.1
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - "~>"
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: 1.0.1
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: open4
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - "~>"
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: 1.0.1
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - "~>"
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: 1.0.1
|
|
209
|
+
- !ruby/object:Gem::Dependency
|
|
210
|
+
name: multi_json
|
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
|
212
|
+
requirements:
|
|
213
|
+
- - ">="
|
|
214
|
+
- !ruby/object:Gem::Version
|
|
215
|
+
version: '0'
|
|
216
|
+
type: :development
|
|
217
|
+
prerelease: false
|
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
219
|
+
requirements:
|
|
220
|
+
- - ">="
|
|
221
|
+
- !ruby/object:Gem::Version
|
|
222
|
+
version: '0'
|
|
223
|
+
- !ruby/object:Gem::Dependency
|
|
224
|
+
name: oj
|
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
|
226
|
+
requirements:
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0'
|
|
230
|
+
type: :development
|
|
231
|
+
prerelease: false
|
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - ">="
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '0'
|
|
237
|
+
description: This gem allows you to deploy your rails application to the Engine Yard
|
|
238
|
+
cloud directly from the command line.
|
|
239
|
+
email: cloud@engineyard.com
|
|
240
|
+
executables:
|
|
241
|
+
- ey
|
|
242
|
+
extensions: []
|
|
243
|
+
extra_rdoc_files: []
|
|
244
|
+
files:
|
|
245
|
+
- LICENSE
|
|
246
|
+
- README.md
|
|
247
|
+
- bin/ey
|
|
248
|
+
- lib/engineyard.rb
|
|
249
|
+
- lib/engineyard/cli.rb
|
|
250
|
+
- lib/engineyard/cli/api.rb
|
|
251
|
+
- lib/engineyard/cli/recipes.rb
|
|
252
|
+
- lib/engineyard/cli/ui.rb
|
|
253
|
+
- lib/engineyard/cli/web.rb
|
|
254
|
+
- lib/engineyard/config.rb
|
|
255
|
+
- lib/engineyard/deploy_config.rb
|
|
256
|
+
- lib/engineyard/deploy_config/ref.rb
|
|
257
|
+
- lib/engineyard/error.rb
|
|
258
|
+
- lib/engineyard/eyrc.rb
|
|
259
|
+
- lib/engineyard/repo.rb
|
|
260
|
+
- lib/engineyard/serverside_runner.rb
|
|
261
|
+
- lib/engineyard/templates.rb
|
|
262
|
+
- lib/engineyard/templates/ey.yml.erb
|
|
263
|
+
- lib/engineyard/templates/ey_yml.rb
|
|
264
|
+
- lib/engineyard/thor.rb
|
|
265
|
+
- lib/engineyard/version.rb
|
|
266
|
+
- lib/vendor/thor/Gemfile
|
|
267
|
+
- lib/vendor/thor/LICENSE.md
|
|
268
|
+
- lib/vendor/thor/README.md
|
|
269
|
+
- lib/vendor/thor/lib/thor.rb
|
|
270
|
+
- lib/vendor/thor/lib/thor/actions.rb
|
|
271
|
+
- lib/vendor/thor/lib/thor/actions/create_file.rb
|
|
272
|
+
- lib/vendor/thor/lib/thor/actions/create_link.rb
|
|
273
|
+
- lib/vendor/thor/lib/thor/actions/directory.rb
|
|
274
|
+
- lib/vendor/thor/lib/thor/actions/empty_directory.rb
|
|
275
|
+
- lib/vendor/thor/lib/thor/actions/file_manipulation.rb
|
|
276
|
+
- lib/vendor/thor/lib/thor/actions/inject_into_file.rb
|
|
277
|
+
- lib/vendor/thor/lib/thor/base.rb
|
|
278
|
+
- lib/vendor/thor/lib/thor/command.rb
|
|
279
|
+
- lib/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
|
|
280
|
+
- lib/vendor/thor/lib/thor/core_ext/io_binary_read.rb
|
|
281
|
+
- lib/vendor/thor/lib/thor/core_ext/ordered_hash.rb
|
|
282
|
+
- lib/vendor/thor/lib/thor/error.rb
|
|
283
|
+
- lib/vendor/thor/lib/thor/group.rb
|
|
284
|
+
- lib/vendor/thor/lib/thor/invocation.rb
|
|
285
|
+
- lib/vendor/thor/lib/thor/parser.rb
|
|
286
|
+
- lib/vendor/thor/lib/thor/parser/argument.rb
|
|
287
|
+
- lib/vendor/thor/lib/thor/parser/arguments.rb
|
|
288
|
+
- lib/vendor/thor/lib/thor/parser/option.rb
|
|
289
|
+
- lib/vendor/thor/lib/thor/parser/options.rb
|
|
290
|
+
- lib/vendor/thor/lib/thor/rake_compat.rb
|
|
291
|
+
- lib/vendor/thor/lib/thor/runner.rb
|
|
292
|
+
- lib/vendor/thor/lib/thor/shell.rb
|
|
293
|
+
- lib/vendor/thor/lib/thor/shell/basic.rb
|
|
294
|
+
- lib/vendor/thor/lib/thor/shell/color.rb
|
|
295
|
+
- lib/vendor/thor/lib/thor/shell/html.rb
|
|
296
|
+
- lib/vendor/thor/lib/thor/util.rb
|
|
297
|
+
- lib/vendor/thor/lib/thor/version.rb
|
|
298
|
+
- lib/vendor/thor/thor.gemspec
|
|
299
|
+
- spec/engineyard/cli/api_spec.rb
|
|
300
|
+
- spec/engineyard/cli_spec.rb
|
|
301
|
+
- spec/engineyard/config_spec.rb
|
|
302
|
+
- spec/engineyard/deploy_config_spec.rb
|
|
303
|
+
- spec/engineyard/eyrc_spec.rb
|
|
304
|
+
- spec/engineyard/repo_spec.rb
|
|
305
|
+
- spec/engineyard_spec.rb
|
|
306
|
+
- spec/ey/console_spec.rb
|
|
307
|
+
- spec/ey/deploy_spec.rb
|
|
308
|
+
- spec/ey/ey_spec.rb
|
|
309
|
+
- spec/ey/init_spec.rb
|
|
310
|
+
- spec/ey/list_environments_spec.rb
|
|
311
|
+
- spec/ey/login_spec.rb
|
|
312
|
+
- spec/ey/logout_spec.rb
|
|
313
|
+
- spec/ey/logs_spec.rb
|
|
314
|
+
- spec/ey/rebuild_spec.rb
|
|
315
|
+
- spec/ey/recipes/apply_spec.rb
|
|
316
|
+
- spec/ey/recipes/download_spec.rb
|
|
317
|
+
- spec/ey/recipes/upload_spec.rb
|
|
318
|
+
- spec/ey/rollback_spec.rb
|
|
319
|
+
- spec/ey/scp_spec.rb
|
|
320
|
+
- spec/ey/servers_spec.rb
|
|
321
|
+
- spec/ey/ssh_spec.rb
|
|
322
|
+
- spec/ey/status_spec.rb
|
|
323
|
+
- spec/ey/timeout_deploy_spec.rb
|
|
324
|
+
- spec/ey/web/disable_spec.rb
|
|
325
|
+
- spec/ey/web/enable_spec.rb
|
|
326
|
+
- spec/ey/web/restart_spec.rb
|
|
327
|
+
- spec/ey/whoami_spec.rb
|
|
328
|
+
- spec/spec_helper.rb
|
|
329
|
+
- spec/support/bundled_ey
|
|
330
|
+
- spec/support/fixture_recipes.tgz
|
|
331
|
+
- spec/support/git_repos.rb
|
|
332
|
+
- spec/support/helpers.rb
|
|
333
|
+
- spec/support/matchers.rb
|
|
334
|
+
- spec/support/ruby_ext.rb
|
|
335
|
+
- spec/support/shared_behavior.rb
|
|
336
|
+
homepage: http://github.com/engineyard/engineyard
|
|
337
|
+
licenses:
|
|
338
|
+
- MIT
|
|
339
|
+
metadata: {}
|
|
340
|
+
post_install_message: |
|
|
341
|
+
Thanks for installing the engineyard gem!
|
|
342
|
+
|
|
343
|
+
Need help? Problem? https://support.cloud.engineyard.com
|
|
344
|
+
Not working? Uninstall this version to downgrade.
|
|
345
|
+
|
|
346
|
+
IMPORTANT:
|
|
347
|
+
Please verify eydeploy.rb files in staging after upgrading!
|
|
348
|
+
Internals frequently change that could break eydeploy.rb.
|
|
349
|
+
|
|
350
|
+
Getting started:
|
|
351
|
+
1. Run `ey init` to generate an annotated config file.
|
|
352
|
+
2. Review the ey.yml file and commit it to your repository.
|
|
353
|
+
3. Run `ey deploy` when you're ready to deploy.
|
|
354
|
+
The Engine Yard Pandas want to help you!
|
|
355
|
+
Email pandas@engineyard.com with your questions.
|
|
356
|
+
rdoc_options: []
|
|
357
|
+
require_paths:
|
|
358
|
+
- lib
|
|
359
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
360
|
+
requirements:
|
|
361
|
+
- - ">="
|
|
362
|
+
- !ruby/object:Gem::Version
|
|
363
|
+
version: 1.9.3
|
|
364
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
365
|
+
requirements:
|
|
366
|
+
- - ">="
|
|
367
|
+
- !ruby/object:Gem::Version
|
|
368
|
+
version: '0'
|
|
369
|
+
requirements: []
|
|
370
|
+
rubygems_version: 3.0.6
|
|
371
|
+
signing_key:
|
|
372
|
+
specification_version: 4
|
|
373
|
+
summary: Command-line deployment for the Engine Yard cloud
|
|
374
|
+
test_files:
|
|
375
|
+
- spec/engineyard/cli/api_spec.rb
|
|
376
|
+
- spec/engineyard/cli_spec.rb
|
|
377
|
+
- spec/engineyard/config_spec.rb
|
|
378
|
+
- spec/engineyard/deploy_config_spec.rb
|
|
379
|
+
- spec/engineyard/eyrc_spec.rb
|
|
380
|
+
- spec/engineyard/repo_spec.rb
|
|
381
|
+
- spec/engineyard_spec.rb
|
|
382
|
+
- spec/ey/console_spec.rb
|
|
383
|
+
- spec/ey/deploy_spec.rb
|
|
384
|
+
- spec/ey/ey_spec.rb
|
|
385
|
+
- spec/ey/init_spec.rb
|
|
386
|
+
- spec/ey/list_environments_spec.rb
|
|
387
|
+
- spec/ey/login_spec.rb
|
|
388
|
+
- spec/ey/logout_spec.rb
|
|
389
|
+
- spec/ey/logs_spec.rb
|
|
390
|
+
- spec/ey/rebuild_spec.rb
|
|
391
|
+
- spec/ey/recipes/apply_spec.rb
|
|
392
|
+
- spec/ey/recipes/download_spec.rb
|
|
393
|
+
- spec/ey/recipes/upload_spec.rb
|
|
394
|
+
- spec/ey/rollback_spec.rb
|
|
395
|
+
- spec/ey/scp_spec.rb
|
|
396
|
+
- spec/ey/servers_spec.rb
|
|
397
|
+
- spec/ey/ssh_spec.rb
|
|
398
|
+
- spec/ey/status_spec.rb
|
|
399
|
+
- spec/ey/timeout_deploy_spec.rb
|
|
400
|
+
- spec/ey/web/disable_spec.rb
|
|
401
|
+
- spec/ey/web/enable_spec.rb
|
|
402
|
+
- spec/ey/web/restart_spec.rb
|
|
403
|
+
- spec/ey/whoami_spec.rb
|
|
404
|
+
- spec/spec_helper.rb
|
|
405
|
+
- spec/support/bundled_ey
|
|
406
|
+
- spec/support/fixture_recipes.tgz
|
|
407
|
+
- spec/support/git_repos.rb
|
|
408
|
+
- spec/support/helpers.rb
|
|
409
|
+
- spec/support/matchers.rb
|
|
410
|
+
- spec/support/ruby_ext.rb
|
|
411
|
+
- spec/support/shared_behavior.rb
|