engineyard 1.4.7 → 1.4.8
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.
- data/lib/engineyard.rb +10 -11
- data/lib/engineyard/api.rb +8 -32
- data/lib/engineyard/cli.rb +4 -4
- data/lib/engineyard/cli/api.rb +4 -1
- data/lib/engineyard/collection.rb +3 -3
- data/lib/engineyard/config.rb +2 -9
- data/lib/engineyard/eyrc.rb +52 -0
- data/lib/engineyard/model.rb +8 -8
- data/lib/engineyard/version.rb +1 -1
- data/spec/engineyard/api_spec.rb +2 -26
- data/spec/engineyard/cli/api_spec.rb +5 -8
- data/spec/engineyard/config_spec.rb +22 -25
- data/spec/engineyard/eyrc_spec.rb +64 -0
- data/spec/engineyard/repo_spec.rb +0 -2
- data/spec/ey/deploy_spec.rb +7 -13
- data/spec/ey/list_environments_spec.rb +2 -2
- data/spec/ey/rollback_spec.rb +1 -1
- data/spec/ey/whoami_spec.rb +0 -1
- data/spec/spec_helper.rb +11 -27
- data/spec/support/helpers.rb +22 -11
- metadata +146 -244
data/lib/engineyard.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module EY
|
2
2
|
require 'engineyard/ruby_ext'
|
3
3
|
require 'engineyard/version'
|
4
|
+
require 'engineyard/error'
|
5
|
+
require 'engineyard/config'
|
4
6
|
|
5
7
|
autoload :API, 'engineyard/api'
|
6
8
|
autoload :Collection, 'engineyard/collection'
|
7
|
-
autoload :Config, 'engineyard/config'
|
8
|
-
autoload :Error, 'engineyard/error'
|
9
9
|
autoload :Model, 'engineyard/model'
|
10
10
|
autoload :Repo, 'engineyard/repo'
|
11
11
|
autoload :Resolver, 'engineyard/resolver'
|
@@ -15,16 +15,15 @@ module EY
|
|
15
15
|
def debug(*); end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
def ui
|
22
|
-
@ui ||= UI.new
|
23
|
-
end
|
18
|
+
def self.ui
|
19
|
+
@ui ||= UI.new
|
20
|
+
end
|
24
21
|
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
def self.ui=(ui)
|
23
|
+
@ui = ui
|
24
|
+
end
|
28
25
|
|
26
|
+
def self.config
|
27
|
+
@config ||= EY::Config.new
|
29
28
|
end
|
30
29
|
end
|
data/lib/engineyard/api.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
require 'engineyard/model'
|
2
|
+
require 'yaml'
|
3
|
+
require 'rest_client'
|
4
|
+
require 'engineyard/rest_client_ext'
|
5
|
+
require 'json'
|
6
|
+
require 'engineyard/eyrc'
|
2
7
|
|
3
8
|
module EY
|
4
9
|
class API
|
@@ -7,8 +12,8 @@ module EY
|
|
7
12
|
USER_AGENT_STRING = "EngineYardCLI/#{VERSION}"
|
8
13
|
|
9
14
|
def initialize(token = nil)
|
10
|
-
@token
|
11
|
-
@token ||=
|
15
|
+
@token = token
|
16
|
+
@token ||= EY::EYRC.load.api_token
|
12
17
|
raise ArgumentError, "EY Cloud API token required" unless @token
|
13
18
|
end
|
14
19
|
|
@@ -103,38 +108,9 @@ module EY
|
|
103
108
|
def self.fetch_token(email, password)
|
104
109
|
api_token = request("/authenticate", :method => "post",
|
105
110
|
:params => { :email => email, :password => password })["api_token"]
|
106
|
-
|
111
|
+
EY::EYRC.load.api_token = api_token
|
107
112
|
api_token
|
108
113
|
end
|
109
114
|
|
110
|
-
def self.read_token(file = nil)
|
111
|
-
file ||= ENV['EYRC'] || File.expand_path("~/.eyrc")
|
112
|
-
return false unless File.exists?(file)
|
113
|
-
|
114
|
-
require 'yaml'
|
115
|
-
|
116
|
-
data = YAML.load_file(file)
|
117
|
-
if EY.config.default_endpoint?
|
118
|
-
data["api_token"]
|
119
|
-
else
|
120
|
-
(data[EY.config.endpoint.to_s] || {})["api_token"]
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def self.save_token(token, file = nil)
|
125
|
-
file ||= ENV['EYRC'] || File.expand_path("~/.eyrc")
|
126
|
-
require 'yaml'
|
127
|
-
|
128
|
-
data = File.exists?(file) ? YAML.load_file(file) : {}
|
129
|
-
if EY.config.default_endpoint?
|
130
|
-
data.merge!("api_token" => token)
|
131
|
-
else
|
132
|
-
data.merge!(EY.config.endpoint.to_s => {"api_token" => token})
|
133
|
-
end
|
134
|
-
|
135
|
-
File.open(file, "w"){|f| YAML.dump(data, f) }
|
136
|
-
true
|
137
|
-
end
|
138
|
-
|
139
115
|
end # API
|
140
116
|
end # EY
|
data/lib/engineyard/cli.rb
CHANGED
@@ -4,10 +4,10 @@ require 'engineyard/thor'
|
|
4
4
|
|
5
5
|
module EY
|
6
6
|
class CLI < EY::Thor
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
require 'engineyard/cli/recipes'
|
8
|
+
require 'engineyard/cli/web'
|
9
|
+
require 'engineyard/cli/api'
|
10
|
+
require 'engineyard/cli/ui'
|
11
11
|
|
12
12
|
include Thor::Actions
|
13
13
|
|
data/lib/engineyard/cli/api.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
+
require 'highline'
|
2
|
+
require 'engineyard/api'
|
3
|
+
|
1
4
|
module EY
|
2
5
|
class CLI
|
3
6
|
class API < EY::API
|
4
7
|
|
5
8
|
def initialize(token = nil)
|
6
9
|
@token = token
|
7
|
-
@token ||=
|
10
|
+
@token ||= EY::EYRC.load.api_token
|
8
11
|
@token ||= self.class.fetch_token
|
9
12
|
raise EY::Error, "Sorry, we couldn't get your API token." unless @token
|
10
13
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module EY
|
2
2
|
module Collection
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require 'engineyard/collection/abstract'
|
4
|
+
require 'engineyard/collection/environments'
|
5
|
+
require 'engineyard/collection/apps'
|
6
6
|
end
|
7
7
|
end
|
data/lib/engineyard/config.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'uri'
|
2
|
+
require 'engineyard/error'
|
2
3
|
|
3
4
|
module EY
|
4
5
|
class Config
|
@@ -26,15 +27,7 @@ module EY
|
|
26
27
|
end
|
27
28
|
|
28
29
|
def endpoint
|
29
|
-
@endpoint ||= env_var_endpoint ||
|
30
|
-
config_file_endpoint ||
|
31
|
-
default_endpoint
|
32
|
-
end
|
33
|
-
|
34
|
-
def config_file_endpoint
|
35
|
-
if endpoint = @config["endpoint"]
|
36
|
-
assert_valid_endpoint endpoint, @file
|
37
|
-
end
|
30
|
+
@endpoint ||= env_var_endpoint || default_endpoint
|
38
31
|
end
|
39
32
|
|
40
33
|
def env_var_endpoint
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module EY
|
2
|
+
class EYRC
|
3
|
+
attr_reader :path
|
4
|
+
|
5
|
+
DEFAULT_PATH = "~/.eyrc"
|
6
|
+
|
7
|
+
def self.load
|
8
|
+
new(ENV['EYRC'] || DEFAULT_PATH)
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(path)
|
12
|
+
self.path = path
|
13
|
+
end
|
14
|
+
|
15
|
+
def exist?
|
16
|
+
path.exist?
|
17
|
+
end
|
18
|
+
|
19
|
+
def api_token
|
20
|
+
self['api_token']
|
21
|
+
end
|
22
|
+
|
23
|
+
def api_token=(token)
|
24
|
+
self['api_token'] = token
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def path=(p)
|
30
|
+
@path = Pathname.new(p).expand_path
|
31
|
+
end
|
32
|
+
|
33
|
+
def [](key)
|
34
|
+
read_data[key.to_s]
|
35
|
+
end
|
36
|
+
|
37
|
+
def []=(key,val)
|
38
|
+
merge_and_write(key.to_s => val)
|
39
|
+
val
|
40
|
+
end
|
41
|
+
|
42
|
+
def read_data
|
43
|
+
exist? && YAML.load(path.read) || {}
|
44
|
+
end
|
45
|
+
|
46
|
+
def merge_and_write(new_data)
|
47
|
+
to_write = read_data.merge(new_data)
|
48
|
+
path.open("w") {|f| YAML.dump(to_write, f) }
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
data/lib/engineyard/model.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module EY
|
2
2
|
module Model
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
require 'engineyard/model/api_struct'
|
4
|
+
require 'engineyard/model/account'
|
5
|
+
require 'engineyard/model/app'
|
6
|
+
require 'engineyard/model/deployment'
|
7
|
+
require 'engineyard/model/environment'
|
8
|
+
require 'engineyard/model/log'
|
9
|
+
require 'engineyard/model/instance'
|
10
|
+
require 'engineyard/model/user'
|
11
11
|
end
|
12
12
|
end
|
data/lib/engineyard/version.rb
CHANGED
data/spec/engineyard/api_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe EY::API do
|
4
4
|
it "gets the api token from ~/.eyrc if possible" do
|
5
|
-
|
5
|
+
write_eyrc({"api_token" => "asdf"})
|
6
6
|
EY::API.new.should == EY::API.new("asdf")
|
7
7
|
end
|
8
8
|
|
@@ -17,31 +17,7 @@ describe EY::API do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "puts the api token into .eyrc" do
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "saving the token" do
|
25
|
-
context "without a custom endpoint" do
|
26
|
-
it "saves the api token at the root of the data" do
|
27
|
-
EY::API.save_token("asdf")
|
28
|
-
read_yaml('~/.eyrc')["api_token"].should == "asdf"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context "with a custom endpoint" do
|
33
|
-
before(:each) do
|
34
|
-
write_yaml({"endpoint" => "http://localhost/"}, 'ey.yml')
|
35
|
-
EY::API.save_token("asdf")
|
36
|
-
end
|
37
|
-
|
38
|
-
it "saves the api token" do
|
39
|
-
read_yaml('~/.eyrc').should == {"http://localhost/" => {"api_token" => "asdf"}}
|
40
|
-
end
|
41
|
-
|
42
|
-
it "reads the api token" do
|
43
|
-
EY::API.read_token.should == "asdf"
|
44
|
-
end
|
20
|
+
read_eyrc["api_token"].should == "asdf"
|
45
21
|
end
|
46
22
|
end
|
47
23
|
|
@@ -11,10 +11,7 @@ describe EY::CLI::API do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "gets the api token from ~/.eyrc if possible" do
|
14
|
-
|
15
|
-
YAML.dump({"api_token" => "asdf"}, fp)
|
16
|
-
end
|
17
|
-
|
14
|
+
write_eyrc({"api_token" => "asdf"})
|
18
15
|
EY::CLI::API.new.should == EY::CLI::API.new("asdf")
|
19
16
|
end
|
20
17
|
|
@@ -26,7 +23,7 @@ describe EY::CLI::API do
|
|
26
23
|
EY::CLI::UI::Prompter.backend.next_answer = "my@email.example.com"
|
27
24
|
EY::CLI::UI::Prompter.backend.next_answer = "secret"
|
28
25
|
|
29
|
-
@
|
26
|
+
@api = EY::CLI::API.new
|
30
27
|
end
|
31
28
|
|
32
29
|
it "asks you for your credentials" do
|
@@ -34,12 +31,12 @@ describe EY::CLI::API do
|
|
34
31
|
end
|
35
32
|
|
36
33
|
it "gets the api token" do
|
37
|
-
@
|
34
|
+
@api.should == EY::CLI::API.new("asdf")
|
38
35
|
end
|
39
36
|
|
40
37
|
it "saves the api token to ~/.eyrc" do
|
41
|
-
|
38
|
+
read_eyrc.should == {"api_token" => "asdf"}
|
42
39
|
end
|
43
40
|
end
|
44
41
|
|
45
|
-
end
|
42
|
+
end
|
@@ -3,13 +3,15 @@ require 'uri'
|
|
3
3
|
|
4
4
|
describe EY::Config do
|
5
5
|
describe "environments" do
|
6
|
+
after { File.unlink('ey.yml') if File.exist?('ey.yml') }
|
7
|
+
|
6
8
|
it "get loaded from the config file" do
|
7
|
-
write_yaml("environments" => {"production" => {"default" => true}})
|
9
|
+
write_yaml({"environments" => {"production" => {"default" => true}}}, 'ey.yml')
|
8
10
|
EY::Config.new.environments["production"]["default"].should be_true
|
9
11
|
end
|
10
12
|
|
11
13
|
it "are present when the config file has no environments key" do
|
12
|
-
write_yaml(
|
14
|
+
write_yaml({}, 'ey.yml')
|
13
15
|
EY::Config.new.environments.should == {}
|
14
16
|
end
|
15
17
|
end
|
@@ -19,43 +21,38 @@ describe EY::Config do
|
|
19
21
|
EY::Config.new.endpoint.should == EY::Config.new.default_endpoint
|
20
22
|
end
|
21
23
|
|
22
|
-
it "
|
23
|
-
|
24
|
-
EY::Config.new.endpoint.should == URI.parse(
|
24
|
+
it "loads the endpoint from $CLOUD_URL" do
|
25
|
+
ENV['CLOUD_URL'] = "http://fake.local/"
|
26
|
+
EY::Config.new.endpoint.should == URI.parse('http://fake.local')
|
27
|
+
ENV.delete('CLOUD_URL')
|
25
28
|
end
|
26
29
|
|
27
30
|
it "raises on an invalid endpoint" do
|
28
|
-
|
31
|
+
ENV['CLOUD_URL'] = "non/absolute"
|
29
32
|
lambda { EY::Config.new.endpoint }.
|
30
33
|
should raise_error(EY::Config::ConfigurationError)
|
34
|
+
ENV.delete('CLOUD_URL')
|
31
35
|
end
|
32
36
|
end
|
33
37
|
|
34
|
-
it "provides default_endpoint?" do
|
35
|
-
write_yaml("endpoint" => "http://localhost/")
|
36
|
-
EY::Config.new.default_endpoint?.should_not be_true
|
37
|
-
end
|
38
|
-
|
39
38
|
describe "files" do
|
40
|
-
before do
|
41
|
-
FakeFS::FileSystem.add('config')
|
42
|
-
end
|
43
|
-
|
44
39
|
it "looks for config/ey.yml" do
|
45
|
-
|
46
|
-
|
47
|
-
|
40
|
+
FileUtils.mkdir_p('config')
|
41
|
+
|
42
|
+
write_yaml({"environments" => {"staging" => {"default" => true}}}, "ey.yml")
|
43
|
+
write_yaml({"environments" => {"production" => {"default" => true}}}, "config/ey.yml")
|
44
|
+
EY::Config.new.default_environment.should == "production"
|
45
|
+
|
46
|
+
File.unlink('config/ey.yml') if File.exist?('config/ey.yml')
|
47
|
+
File.unlink('ey.yml') if File.exist?('ey.yml')
|
48
48
|
end
|
49
49
|
|
50
50
|
it "looks for ey.yml" do
|
51
|
-
write_yaml({"
|
52
|
-
EY::Config.new.endpoint.should == URI.parse("http://foo/")
|
53
|
-
end
|
51
|
+
write_yaml({"environments" => {"staging" => {"default" => true}}}, "ey.yml")
|
54
52
|
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
EY::Config.new.default_environment.should == "staging"
|
54
|
+
|
55
|
+
File.unlink('ey.yml') if File.exist?('ey.yml')
|
58
56
|
end
|
59
57
|
end
|
60
|
-
|
61
58
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'engineyard/eyrc'
|
3
|
+
|
4
|
+
describe EY::EYRC do
|
5
|
+
describe ".load" do
|
6
|
+
it "looks for .eyrc in $EYRC if set" do
|
7
|
+
EY::EYRC.load.path.should == Pathname.new(ENV['EYRC'])
|
8
|
+
end
|
9
|
+
|
10
|
+
it "looks for .eyrc in $HOME/.eyrc by default" do
|
11
|
+
ENV.delete('EYRC')
|
12
|
+
EY::EYRC.load.path.should == Pathname.new("~/.eyrc").expand_path
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".new" do
|
17
|
+
it "looks for eyrc in any passed file location" do
|
18
|
+
EY::EYRC.new('/tmp/neweyrc').path.should == Pathname.new('/tmp/neweyrc')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "with a non-existing .eyrc file" do
|
23
|
+
it "has nil api_token" do
|
24
|
+
File.exists?("/tmp/nonexistant").should be_false
|
25
|
+
eyrc = EY::EYRC.new('/tmp/nonexistant')
|
26
|
+
eyrc.exist?.should be_false
|
27
|
+
eyrc.api_token.should be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "saving api token" do
|
32
|
+
before do
|
33
|
+
EY::EYRC.load.api_token = 'abcd'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "exists" do
|
37
|
+
EY::EYRC.load.exist?.should be_true
|
38
|
+
end
|
39
|
+
|
40
|
+
it "recalls the api_token" do
|
41
|
+
EY::EYRC.load.api_token.should == 'abcd'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "writes the api_token to api_token: .eyrc" do
|
45
|
+
read_yaml(ENV['EYRC']).should == {"api_token" => "abcd"}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "file contains other random info" do
|
50
|
+
before do
|
51
|
+
# contains legacy endpoint behavior, no longer supported, but we won't be destructive.
|
52
|
+
write_yaml({"api_token" => "1234", "http://localhost/" => {"api_token" => "5678"}}, ENV['EYRC'])
|
53
|
+
EY::EYRC.load.api_token = 'abcd' # overwrites 1234
|
54
|
+
end
|
55
|
+
|
56
|
+
it "recalls the api_token" do
|
57
|
+
EY::EYRC.load.api_token.should == 'abcd'
|
58
|
+
end
|
59
|
+
|
60
|
+
it "maintains other random info in the file" do
|
61
|
+
read_yaml(ENV['EYRC']).should == {"api_token" => "abcd", "http://localhost/" => {"api_token" => "5678"}}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -2,7 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe EY::Repo do
|
4
4
|
before(:each) do
|
5
|
-
FakeFS.deactivate!
|
6
5
|
@path = Pathname.new("/tmp/ey-test/.git/")
|
7
6
|
@path.mkpath
|
8
7
|
@r = EY::Repo.new("/tmp/ey-test")
|
@@ -10,7 +9,6 @@ describe EY::Repo do
|
|
10
9
|
|
11
10
|
after(:each) do
|
12
11
|
clear_urls
|
13
|
-
FakeFS.activate!
|
14
12
|
end
|
15
13
|
|
16
14
|
def set_head(head)
|
data/spec/ey/deploy_spec.rb
CHANGED
@@ -5,7 +5,6 @@ describe "ey deploy without an eyrc file" do
|
|
5
5
|
given "integration without an eyrc file"
|
6
6
|
|
7
7
|
before(:each) do
|
8
|
-
FileUtils.rm_rf(ENV['EYRC'])
|
9
8
|
api_scenario "one app, one environment"
|
10
9
|
end
|
11
10
|
|
@@ -122,9 +121,7 @@ describe "ey deploy" do
|
|
122
121
|
end
|
123
122
|
|
124
123
|
context "customized in ey.yml" do
|
125
|
-
before { write_yaml({"environments" => {"giblets" => {
|
126
|
-
"migration_command" => 'thor fancy:migrate',
|
127
|
-
}}}) }
|
124
|
+
before { write_yaml({"environments" => {"giblets" => { "migration_command" => 'thor fancy:migrate' }}}, 'ey.yml') }
|
128
125
|
after { File.unlink 'ey.yml' }
|
129
126
|
|
130
127
|
it "migrates with the custom command by default" do
|
@@ -134,7 +131,7 @@ describe "ey deploy" do
|
|
134
131
|
end
|
135
132
|
|
136
133
|
context "disabled in ey.yml" do
|
137
|
-
before { write_yaml({"environments" => {"giblets" => {"migrate" => false}}}) }
|
134
|
+
before { write_yaml({"environments" => {"giblets" => {"migrate" => false}}}, 'ey.yml') }
|
138
135
|
after { File.unlink 'ey.yml' }
|
139
136
|
|
140
137
|
it "does not migrate by default" do
|
@@ -155,7 +152,7 @@ describe "ey deploy" do
|
|
155
152
|
end
|
156
153
|
|
157
154
|
context "explicitly enabled in ey.yml (the default)" do
|
158
|
-
before { write_yaml({"environments" => {"giblets" => {"migrate" => true}}}) }
|
155
|
+
before { write_yaml({"environments" => {"giblets" => {"migrate" => true}}}, 'ey.yml') }
|
159
156
|
after { File.unlink 'ey.yml' }
|
160
157
|
|
161
158
|
it "migrates with the default" do
|
@@ -165,10 +162,7 @@ describe "ey deploy" do
|
|
165
162
|
end
|
166
163
|
|
167
164
|
context "customized and disabled in ey.yml" do
|
168
|
-
before { write_yaml({"environments" => {"giblets" => {
|
169
|
-
"migrate" => false,
|
170
|
-
"migration_command" => "thor fancy:migrate",
|
171
|
-
}}}) }
|
165
|
+
before { write_yaml({"environments" => {"giblets" => { "migrate" => false, "migration_command" => "thor fancy:migrate" }}}, 'ey.yml') }
|
172
166
|
after { File.unlink 'ey.yml' }
|
173
167
|
|
174
168
|
it "does not migrate by default" do
|
@@ -243,7 +237,7 @@ describe "ey deploy" do
|
|
243
237
|
|
244
238
|
context "when there is extra configuration" do
|
245
239
|
before(:each) do
|
246
|
-
write_yaml({"environments" => {"giblets" => {"bert" => "ernie"}}})
|
240
|
+
write_yaml({"environments" => {"giblets" => {"bert" => "ernie"}}}, 'ey.yml')
|
247
241
|
end
|
248
242
|
|
249
243
|
after(:each) do
|
@@ -258,7 +252,7 @@ describe "ey deploy" do
|
|
258
252
|
|
259
253
|
context "with a configured default branch" do
|
260
254
|
before(:each) do
|
261
|
-
write_yaml({"environments" => {"giblets" => {"branch" => "master"}}})
|
255
|
+
write_yaml({"environments" => {"giblets" => {"branch" => "master"}}}, 'ey.yml')
|
262
256
|
end
|
263
257
|
|
264
258
|
after(:each) do
|
@@ -315,7 +309,7 @@ describe "ey deploy" do
|
|
315
309
|
|
316
310
|
context "when ey.yml is present" do
|
317
311
|
before do
|
318
|
-
write_yaml({"environments" => {"giblets" => {"beer" => "stout"}}})
|
312
|
+
write_yaml({"environments" => {"giblets" => {"beer" => "stout"}}}, 'ey.yml')
|
319
313
|
end
|
320
314
|
|
321
315
|
after { File.unlink("ey.yml") }
|
@@ -28,9 +28,9 @@ describe "ey environments" do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "reports failure to find a git repo when not in one" do
|
31
|
-
Dir.chdir(
|
31
|
+
Dir.chdir(Dir.tmpdir) do
|
32
32
|
ey %w[environments], :expect_failure => true
|
33
|
-
@err.should =~ /fatal: No git remotes found in
|
33
|
+
@err.should =~ /fatal: No git remotes found in .*#{Regexp.escape(Dir.tmpdir)}/
|
34
34
|
@out.should_not =~ /no application configured/
|
35
35
|
end
|
36
36
|
end
|
data/spec/ey/rollback_spec.rb
CHANGED
@@ -49,7 +49,7 @@ describe "ey rollback" do
|
|
49
49
|
|
50
50
|
context "when ey.yml is present" do
|
51
51
|
before do
|
52
|
-
write_yaml({"environments" => {"giblets" => {"beer" => "stout"}}})
|
52
|
+
write_yaml({"environments" => {"giblets" => {"beer" => "stout"}}}, 'ey.yml')
|
53
53
|
end
|
54
54
|
|
55
55
|
after { File.unlink("ey.yml") }
|
data/spec/ey/whoami_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -11,19 +11,6 @@ require 'net/ssh'
|
|
11
11
|
# Bundled gems
|
12
12
|
require 'fakeweb'
|
13
13
|
require 'fakeweb_matcher'
|
14
|
-
require 'fakefs/safe'
|
15
|
-
module FakeFS
|
16
|
-
def self.activated?
|
17
|
-
Object.const_get(:Dir) == FakeFS::Dir
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.without
|
21
|
-
was_on = activated?
|
22
|
-
deactivate!
|
23
|
-
yield
|
24
|
-
activate! if was_on
|
25
|
-
end
|
26
|
-
end
|
27
14
|
|
28
15
|
require 'json'
|
29
16
|
|
@@ -31,9 +18,6 @@ require 'json'
|
|
31
18
|
$LOAD_PATH.unshift(File.join(EY_ROOT, "lib"))
|
32
19
|
require 'engineyard'
|
33
20
|
|
34
|
-
#autoload hax
|
35
|
-
EY::Error
|
36
|
-
|
37
21
|
# Spec stuff
|
38
22
|
require 'rspec'
|
39
23
|
require 'tmpdir'
|
@@ -50,16 +34,22 @@ RSpec.configure do |config|
|
|
50
34
|
config.extend SpecHelpers::Given
|
51
35
|
config.extend SpecHelpers::Fixtures
|
52
36
|
|
37
|
+
def clean_eyrc
|
38
|
+
ENV['EYRC'] = File.join('/tmp','eyrc')
|
39
|
+
if ENV['EYRC'] && File.exist?(ENV['EYRC'])
|
40
|
+
File.unlink(ENV['EYRC'])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
53
44
|
config.before(:all) do
|
45
|
+
clean_eyrc
|
54
46
|
FakeWeb.allow_net_connect = false
|
55
|
-
FakeFS.activate!
|
56
47
|
ENV["CLOUD_URL"] = nil
|
57
48
|
ENV["NO_SSH"] = "true"
|
58
49
|
end
|
59
50
|
|
60
51
|
config.before(:each) do
|
61
|
-
|
62
|
-
FakeFS::FileSystem.add(ENV['HOME'])
|
52
|
+
clean_eyrc
|
63
53
|
EY.instance_eval{ @config = nil }
|
64
54
|
end
|
65
55
|
end
|
@@ -74,16 +64,12 @@ shared_examples_for "integration without an eyrc file" do
|
|
74
64
|
use_git_repo('default')
|
75
65
|
|
76
66
|
before(:all) do
|
77
|
-
FakeFS.deactivate!
|
78
|
-
ENV['EYRC'] = "/tmp/eyrc"
|
79
67
|
FakeWeb.allow_net_connect = true
|
80
68
|
ENV['CLOUD_URL'] = EY.fake_awsm
|
81
69
|
end
|
82
70
|
|
83
71
|
after(:all) do
|
84
72
|
ENV.delete('CLOUD_URL')
|
85
|
-
ENV.delete('EYRC')
|
86
|
-
FakeFS.activate!
|
87
73
|
FakeWeb.allow_net_connect = false
|
88
74
|
end
|
89
75
|
end
|
@@ -92,9 +78,7 @@ end
|
|
92
78
|
shared_examples_for "integration" do
|
93
79
|
given "integration without an eyrc file"
|
94
80
|
|
95
|
-
before(:
|
96
|
-
|
97
|
-
"api_token" => "f81a1706ddaeb148cfb6235ddecfc1cf"} }
|
98
|
-
File.open(ENV['EYRC'], "w"){|f| YAML.dump(token, f) }
|
81
|
+
before(:each) do
|
82
|
+
write_eyrc({"api_token" => "f81a1706ddaeb148cfb6235ddecfc1cf"})
|
99
83
|
end
|
100
84
|
end
|
data/spec/support/helpers.rb
CHANGED
@@ -44,20 +44,18 @@ module SpecHelpers
|
|
44
44
|
def define_git_repo(name, &setup)
|
45
45
|
# EY's ivars don't get cleared between examples, so we can keep
|
46
46
|
# a git repo around longer (and thus make our tests faster)
|
47
|
-
|
47
|
+
EY.define_git_repo(name, &setup)
|
48
48
|
end
|
49
49
|
|
50
50
|
def use_git_repo(repo_name)
|
51
51
|
before(:all) do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
Dir.chdir(EY.git_repo_dir(repo_name))
|
56
|
-
end
|
52
|
+
@_original_wd ||= []
|
53
|
+
@_original_wd << Dir.getwd
|
54
|
+
Dir.chdir(EY.git_repo_dir(repo_name))
|
57
55
|
end
|
58
56
|
|
59
57
|
after(:all) do
|
60
|
-
|
58
|
+
Dir.chdir(@_original_wd.pop)
|
61
59
|
end
|
62
60
|
end
|
63
61
|
end
|
@@ -128,7 +126,12 @@ module SpecHelpers
|
|
128
126
|
hide_err = options.has_key?(:hide_err) ? options[:hide_err] : options[:expect_failure]
|
129
127
|
path_prepends = options[:prepend_to_path]
|
130
128
|
|
131
|
-
ey_env = {
|
129
|
+
ey_env = {
|
130
|
+
'DEBUG' => 'true',
|
131
|
+
'EYRC' => ENV['EYRC'],
|
132
|
+
'CLOUD_URL' => ENV['CLOUD_URL'],
|
133
|
+
}
|
134
|
+
|
132
135
|
if options.has_key?(:debug)
|
133
136
|
ey_env['DEBUG'] = options[:debug] ? "true" : nil
|
134
137
|
end
|
@@ -200,14 +203,22 @@ module SpecHelpers
|
|
200
203
|
raise "Setting scenario failed: #{response.inspect}" unless response.code == 200
|
201
204
|
end
|
202
205
|
|
203
|
-
def read_yaml(file
|
204
|
-
YAML.
|
206
|
+
def read_yaml(file)
|
207
|
+
YAML.load(File.read(File.expand_path(file)))
|
205
208
|
end
|
206
209
|
|
207
|
-
def write_yaml(data, file
|
210
|
+
def write_yaml(data, file)
|
208
211
|
File.open(file, "w"){|f| YAML.dump(data, f) }
|
209
212
|
end
|
210
213
|
|
214
|
+
def read_eyrc
|
215
|
+
read_yaml(ENV['EYRC'])
|
216
|
+
end
|
217
|
+
|
218
|
+
def write_eyrc(data)
|
219
|
+
write_yaml(data, ENV['EYRC'])
|
220
|
+
end
|
221
|
+
|
211
222
|
def with_env(new_env_vars)
|
212
223
|
raise ArgumentError, "with_env takes a block" unless block_given?
|
213
224
|
old_env_vars = {}
|
metadata
CHANGED
@@ -1,289 +1,200 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.8
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 7
|
10
|
-
version: 1.4.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- EY Cloud Team
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2011-11-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &70093946150160 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 43
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 14
|
32
|
-
- 6
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 0.14.6
|
34
|
-
name: thor
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *70093946150160
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rest-client
|
27
|
+
requirement: &70093946148940 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
29
|
+
requirements:
|
42
30
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 15
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 6
|
48
|
-
- 0
|
31
|
+
- !ruby/object:Gem::Version
|
49
32
|
version: 1.6.0
|
50
|
-
name: rest-client
|
51
33
|
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
34
|
prerelease: false
|
55
|
-
|
35
|
+
version_requirements: *70093946148940
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: highline
|
38
|
+
requirement: &70093946148060 !ruby/object:Gem::Requirement
|
56
39
|
none: false
|
57
|
-
requirements:
|
40
|
+
requirements:
|
58
41
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
hash: 13
|
61
|
-
segments:
|
62
|
-
- 1
|
63
|
-
- 6
|
64
|
-
- 1
|
42
|
+
- !ruby/object:Gem::Version
|
65
43
|
version: 1.6.1
|
66
|
-
name: highline
|
67
44
|
type: :runtime
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
45
|
prerelease: false
|
71
|
-
|
72
|
-
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
hash: 3
|
77
|
-
segments:
|
78
|
-
- 0
|
79
|
-
version: "0"
|
46
|
+
version_requirements: *70093946148060
|
47
|
+
- !ruby/object:Gem::Dependency
|
80
48
|
name: json_pure
|
49
|
+
requirement: &70093946147400 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
81
55
|
type: :runtime
|
82
|
-
version_requirements: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
56
|
prerelease: false
|
85
|
-
|
57
|
+
version_requirements: *70093946147400
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: escape
|
60
|
+
requirement: &70093946146440 !ruby/object:Gem::Requirement
|
86
61
|
none: false
|
87
|
-
requirements:
|
62
|
+
requirements:
|
88
63
|
- - ~>
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
hash: 23
|
91
|
-
segments:
|
92
|
-
- 0
|
93
|
-
- 0
|
94
|
-
- 4
|
64
|
+
- !ruby/object:Gem::Version
|
95
65
|
version: 0.0.4
|
96
|
-
name: escape
|
97
66
|
type: :runtime
|
98
|
-
version_requirements: *id005
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
67
|
prerelease: false
|
101
|
-
|
68
|
+
version_requirements: *70093946146440
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: engineyard-serverside-adapter
|
71
|
+
requirement: &70093946145560 !ruby/object:Gem::Requirement
|
102
72
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
hash: 33
|
107
|
-
segments:
|
108
|
-
- 1
|
109
|
-
- 5
|
110
|
-
- 17
|
73
|
+
requirements:
|
74
|
+
- - =
|
75
|
+
- !ruby/object:Gem::Version
|
111
76
|
version: 1.5.17
|
112
|
-
name: engineyard-serverside-adapter
|
113
77
|
type: :runtime
|
114
|
-
version_requirements: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
78
|
prerelease: false
|
117
|
-
|
79
|
+
version_requirements: *70093946145560
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: net-ssh
|
82
|
+
requirement: &70093946144940 !ruby/object:Gem::Requirement
|
118
83
|
none: false
|
119
|
-
requirements:
|
84
|
+
requirements:
|
120
85
|
- - ~>
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
hash: 11
|
123
|
-
segments:
|
124
|
-
- 2
|
125
|
-
- 1
|
126
|
-
- 0
|
86
|
+
- !ruby/object:Gem::Version
|
127
87
|
version: 2.1.0
|
128
|
-
name: net-ssh
|
129
88
|
type: :runtime
|
130
|
-
version_requirements: *id007
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
89
|
prerelease: false
|
133
|
-
|
90
|
+
version_requirements: *70093946144940
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: launchy
|
93
|
+
requirement: &70093946144240 !ruby/object:Gem::Requirement
|
134
94
|
none: false
|
135
|
-
requirements:
|
136
|
-
- -
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
hash: 5
|
139
|
-
segments:
|
140
|
-
- 2
|
141
|
-
- 0
|
142
|
-
- 5
|
95
|
+
requirements:
|
96
|
+
- - =
|
97
|
+
- !ruby/object:Gem::Version
|
143
98
|
version: 2.0.5
|
144
|
-
name: launchy
|
145
99
|
type: :runtime
|
146
|
-
version_requirements: *id008
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
100
|
prerelease: false
|
149
|
-
|
101
|
+
version_requirements: *70093946144240
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rspec
|
104
|
+
requirement: &70093946159740 !ruby/object:Gem::Requirement
|
150
105
|
none: false
|
151
|
-
requirements:
|
106
|
+
requirements:
|
152
107
|
- - ~>
|
153
|
-
- !ruby/object:Gem::Version
|
154
|
-
|
155
|
-
segments:
|
156
|
-
- 2
|
157
|
-
- 0
|
158
|
-
version: "2.0"
|
159
|
-
name: rspec
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '2.0'
|
160
110
|
type: :development
|
161
|
-
version_requirements: *id009
|
162
|
-
- !ruby/object:Gem::Dependency
|
163
111
|
prerelease: false
|
164
|
-
|
165
|
-
|
166
|
-
requirements:
|
167
|
-
- - ">="
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
hash: 3
|
170
|
-
segments:
|
171
|
-
- 0
|
172
|
-
version: "0"
|
112
|
+
version_requirements: *70093946159740
|
113
|
+
- !ruby/object:Gem::Dependency
|
173
114
|
name: rake
|
174
|
-
|
175
|
-
version_requirements: *id010
|
176
|
-
- !ruby/object:Gem::Dependency
|
177
|
-
prerelease: false
|
178
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
115
|
+
requirement: &70093946159020 !ruby/object:Gem::Requirement
|
179
116
|
none: false
|
180
|
-
requirements:
|
181
|
-
- -
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
|
184
|
-
segments:
|
185
|
-
- 0
|
186
|
-
version: "0"
|
187
|
-
name: rdoc
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
188
121
|
type: :development
|
189
|
-
version_requirements: *id011
|
190
|
-
- !ruby/object:Gem::Dependency
|
191
122
|
prerelease: false
|
192
|
-
|
123
|
+
version_requirements: *70093946159020
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rdoc
|
126
|
+
requirement: &70093946158180 !ruby/object:Gem::Requirement
|
193
127
|
none: false
|
194
|
-
requirements:
|
195
|
-
- -
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
|
198
|
-
segments:
|
199
|
-
- 0
|
200
|
-
version: "0"
|
201
|
-
name: fakeweb
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
202
132
|
type: :development
|
203
|
-
version_requirements: *id012
|
204
|
-
- !ruby/object:Gem::Dependency
|
205
133
|
prerelease: false
|
206
|
-
|
134
|
+
version_requirements: *70093946158180
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: fakeweb
|
137
|
+
requirement: &70093946157240 !ruby/object:Gem::Requirement
|
207
138
|
none: false
|
208
|
-
requirements:
|
209
|
-
- -
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
|
212
|
-
segments:
|
213
|
-
- 0
|
214
|
-
version: "0"
|
215
|
-
name: fakeweb-matcher
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
216
143
|
type: :development
|
217
|
-
version_requirements: *id013
|
218
|
-
- !ruby/object:Gem::Dependency
|
219
144
|
prerelease: false
|
220
|
-
|
145
|
+
version_requirements: *70093946157240
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: fakeweb-matcher
|
148
|
+
requirement: &70093946156400 !ruby/object:Gem::Requirement
|
221
149
|
none: false
|
222
|
-
requirements:
|
223
|
-
- -
|
224
|
-
- !ruby/object:Gem::Version
|
225
|
-
|
226
|
-
segments:
|
227
|
-
- 0
|
228
|
-
version: "0"
|
229
|
-
name: fakefs
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
230
154
|
type: :development
|
231
|
-
version_requirements: *id014
|
232
|
-
- !ruby/object:Gem::Dependency
|
233
155
|
prerelease: false
|
234
|
-
|
235
|
-
|
236
|
-
requirements:
|
237
|
-
- - ">="
|
238
|
-
- !ruby/object:Gem::Version
|
239
|
-
hash: 3
|
240
|
-
segments:
|
241
|
-
- 0
|
242
|
-
version: "0"
|
156
|
+
version_requirements: *70093946156400
|
157
|
+
- !ruby/object:Gem::Dependency
|
243
158
|
name: sinatra
|
159
|
+
requirement: &70093946155720 !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
161
|
+
requirements:
|
162
|
+
- - ! '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
244
165
|
type: :development
|
245
|
-
version_requirements: *id015
|
246
|
-
- !ruby/object:Gem::Dependency
|
247
166
|
prerelease: false
|
248
|
-
|
167
|
+
version_requirements: *70093946155720
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: realweb
|
170
|
+
requirement: &70093946154700 !ruby/object:Gem::Requirement
|
249
171
|
none: false
|
250
|
-
requirements:
|
172
|
+
requirements:
|
251
173
|
- - ~>
|
252
|
-
- !ruby/object:Gem::Version
|
253
|
-
hash: 19
|
254
|
-
segments:
|
255
|
-
- 0
|
256
|
-
- 2
|
257
|
-
- 2
|
174
|
+
- !ruby/object:Gem::Version
|
258
175
|
version: 0.2.2
|
259
|
-
name: realweb
|
260
176
|
type: :development
|
261
|
-
version_requirements: *id016
|
262
|
-
- !ruby/object:Gem::Dependency
|
263
177
|
prerelease: false
|
264
|
-
|
178
|
+
version_requirements: *70093946154700
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: open4
|
181
|
+
requirement: &70093946153320 !ruby/object:Gem::Requirement
|
265
182
|
none: false
|
266
|
-
requirements:
|
183
|
+
requirements:
|
267
184
|
- - ~>
|
268
|
-
- !ruby/object:Gem::Version
|
269
|
-
hash: 21
|
270
|
-
segments:
|
271
|
-
- 1
|
272
|
-
- 0
|
273
|
-
- 1
|
185
|
+
- !ruby/object:Gem::Version
|
274
186
|
version: 1.0.1
|
275
|
-
name: open4
|
276
187
|
type: :development
|
277
|
-
|
278
|
-
|
188
|
+
prerelease: false
|
189
|
+
version_requirements: *70093946153320
|
190
|
+
description: This gem allows you to deploy your rails application to the Engine Yard
|
191
|
+
cloud directly from the command line.
|
279
192
|
email: cloud@engineyard.com
|
280
|
-
executables:
|
193
|
+
executables:
|
281
194
|
- ey
|
282
195
|
extensions: []
|
283
|
-
|
284
196
|
extra_rdoc_files: []
|
285
|
-
|
286
|
-
files:
|
197
|
+
files:
|
287
198
|
- bin/ey
|
288
199
|
- lib/engineyard/api.rb
|
289
200
|
- lib/engineyard/cli/api.rb
|
@@ -297,6 +208,7 @@ files:
|
|
297
208
|
- lib/engineyard/collection.rb
|
298
209
|
- lib/engineyard/config.rb
|
299
210
|
- lib/engineyard/error.rb
|
211
|
+
- lib/engineyard/eyrc.rb
|
300
212
|
- lib/engineyard/model/account.rb
|
301
213
|
- lib/engineyard/model/api_struct.rb
|
302
214
|
- lib/engineyard/model/app.rb
|
@@ -321,6 +233,7 @@ files:
|
|
321
233
|
- spec/engineyard/collection/apps_spec.rb
|
322
234
|
- spec/engineyard/collection/environments_spec.rb
|
323
235
|
- spec/engineyard/config_spec.rb
|
236
|
+
- spec/engineyard/eyrc_spec.rb
|
324
237
|
- spec/engineyard/model/api_struct_spec.rb
|
325
238
|
- spec/engineyard/model/environment_spec.rb
|
326
239
|
- spec/engineyard/model/instance_spec.rb
|
@@ -351,59 +264,48 @@ files:
|
|
351
264
|
- spec/support/ruby_ext.rb
|
352
265
|
- spec/support/scenarios.rb
|
353
266
|
- spec/support/shared_behavior.rb
|
354
|
-
has_rdoc: true
|
355
267
|
homepage: http://github.com/engineyard/engineyard
|
356
268
|
licenses: []
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
Deploying for the first time? The Engine Yard Pandas want to help you!
|
363
|
-
|
364
|
-
Email pandas@engineyard.com with your questions or queries.
|
365
|
-
(Panda = 1. Polite Agent of Non-Destructive Assimilation; 2. Cute fluffy animal.)
|
366
|
-
|
367
|
-
We wish you every success with your business!
|
368
|
-
|
369
|
-
- The Pandas
|
370
|
-
|
269
|
+
post_install_message: ! "\nWelcome to Engine Yard!\n \nDeploying for the first time?
|
270
|
+
The Engine Yard Pandas want to help you! \n\nEmail pandas@engineyard.com with your
|
271
|
+
questions or queries. \n(Panda = 1. Polite Agent of Non-Destructive Assimilation;
|
272
|
+
2. Cute fluffy animal.)\n \nWe wish you every success with your business!\n \n -
|
273
|
+
The Pandas\n\n"
|
371
274
|
rdoc_options: []
|
372
|
-
|
373
|
-
require_paths:
|
275
|
+
require_paths:
|
374
276
|
- lib
|
375
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
277
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
376
278
|
none: false
|
377
|
-
requirements:
|
378
|
-
- -
|
379
|
-
- !ruby/object:Gem::Version
|
380
|
-
|
381
|
-
segments:
|
279
|
+
requirements:
|
280
|
+
- - ! '>='
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '0'
|
283
|
+
segments:
|
382
284
|
- 0
|
383
|
-
|
384
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
285
|
+
hash: -2199701072849870205
|
286
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
385
287
|
none: false
|
386
|
-
requirements:
|
387
|
-
- -
|
388
|
-
- !ruby/object:Gem::Version
|
389
|
-
|
390
|
-
segments:
|
288
|
+
requirements:
|
289
|
+
- - ! '>='
|
290
|
+
- !ruby/object:Gem::Version
|
291
|
+
version: '0'
|
292
|
+
segments:
|
391
293
|
- 0
|
392
|
-
|
294
|
+
hash: -2199701072849870205
|
393
295
|
requirements: []
|
394
|
-
|
395
296
|
rubyforge_project:
|
396
|
-
rubygems_version: 1.
|
297
|
+
rubygems_version: 1.8.10
|
397
298
|
signing_key:
|
398
299
|
specification_version: 3
|
399
300
|
summary: Command-line deployment for the Engine Yard cloud
|
400
|
-
test_files:
|
301
|
+
test_files:
|
401
302
|
- spec/engineyard/api_spec.rb
|
402
303
|
- spec/engineyard/cli/api_spec.rb
|
403
304
|
- spec/engineyard/cli_spec.rb
|
404
305
|
- spec/engineyard/collection/apps_spec.rb
|
405
306
|
- spec/engineyard/collection/environments_spec.rb
|
406
307
|
- spec/engineyard/config_spec.rb
|
308
|
+
- spec/engineyard/eyrc_spec.rb
|
407
309
|
- spec/engineyard/model/api_struct_spec.rb
|
408
310
|
- spec/engineyard/model/environment_spec.rb
|
409
311
|
- spec/engineyard/model/instance_spec.rb
|