ey_resolver 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +14 -0
- data/README.md +32 -0
- data/Rakefile +14 -0
- data/ey_resolver.gemspec +25 -0
- data/lib/ey_resolver.rb +12 -0
- data/lib/ey_resolver/abstract_resolver.rb +61 -0
- data/lib/ey_resolver/account_resolver.rb +47 -0
- data/lib/ey_resolver/app_env_resolver.rb +57 -0
- data/lib/ey_resolver/app_resolver.rb +52 -0
- data/lib/ey_resolver/environment_resolver.rb +67 -0
- data/lib/ey_resolver/examiner.rb +143 -0
- data/lib/ey_resolver/mock.rb +5 -0
- data/lib/ey_resolver/mock/models.rb +13 -0
- data/lib/ey_resolver/mock/models/account.rb +12 -0
- data/lib/ey_resolver/mock/models/app.rb +18 -0
- data/lib/ey_resolver/mock/models/app_environment.rb +16 -0
- data/lib/ey_resolver/mock/models/environment.rb +16 -0
- data/lib/ey_resolver/mock/models/user.rb +10 -0
- data/lib/ey_resolver/query.rb +68 -0
- data/lib/ey_resolver/version.rb +5 -0
- data/spec/account_resolver_spec.rb +120 -0
- data/spec/app_env_resolver_spec.rb +159 -0
- data/spec/app_resolver_spec.rb +128 -0
- data/spec/environment_resolver_spec.rb +166 -0
- data/spec/spec_helper.rb +84 -0
- metadata +139 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EY::Resolver::AppEnvResolver do
|
4
|
+
|
5
|
+
def app_resolver(*args)
|
6
|
+
EY::Resolver.app_resolver(user, to_query(args))
|
7
|
+
end
|
8
|
+
|
9
|
+
def apps(*models)
|
10
|
+
models.map { |model| model[:app] }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#matches" do
|
14
|
+
it "returns none if the conditions are empty" do
|
15
|
+
app_resolver( ).matches.should == []
|
16
|
+
app_resolver(nil, nil, nil, []).matches.should == []
|
17
|
+
app_resolver('', '', '', [''] ).matches.should == []
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns none if the conditions do not include an app or remotes" do
|
21
|
+
app_resolver(nil, nil, 'app_dup' ).matches.should == []
|
22
|
+
app_resolver('ey', nil, nil ).matches.should == []
|
23
|
+
app_resolver('ey', nil, 'app_dup', []).matches.should == []
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns empty when there is no account match" do
|
27
|
+
app_resolver('gibberish', 'app', 'production').matches.should == []
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns empty when there is no app match" do
|
31
|
+
app_resolver(nil, 'gibberish', 'app_dup').matches.should == []
|
32
|
+
end
|
33
|
+
|
34
|
+
it "finds apps that don't have environments" do
|
35
|
+
app_resolver(nil, 'noenv').matches.should == apps(@noenv)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns more matches when there is more than one match" do
|
39
|
+
app_resolver(nil, nil, nil, ["git://github.com/repo/dup.git"]).matches.should == apps(@ey_dup, @me_dup)
|
40
|
+
app_resolver(nil, nil, nil, ["git://github.com/repo/hug.git", "git://github.com/repo/big.git"]).matches.should == apps(@hugeprod, @big)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns one deployment whene there is only one match" do
|
44
|
+
app_resolver(nil, "app" ).matches.should == apps(@production)
|
45
|
+
app_resolver("ey", "app" ).matches.should == apps(@production)
|
46
|
+
app_resolver(nil, 'bigapp').matches.should == apps(@big)
|
47
|
+
app_resolver("ey", "big" ).matches.should == apps(@big)
|
48
|
+
app_resolver(nil, nil, nil, ["git://github.com/repo/app.git"]).matches.should == apps(@production)
|
49
|
+
app_resolver(nil, nil, nil, ["git://github.com/repo/big.git"]).matches.should == apps(@big)
|
50
|
+
app_resolver('me', nil, nil, ["git://github.com/repo/dup.git"]).matches.should == apps(@me_dup)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "doesn't care about case" do
|
54
|
+
app_resolver("EY", "big").matches.should == apps(@big)
|
55
|
+
app_resolver("ey", "BiG").matches.should == apps(@big)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns the match when an app is specified even when there is a repo" do
|
59
|
+
app_resolver("ey", "bigapp", nil, ["git://github.com/repo/app.git"]).matches.should == apps(@big)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "returns the specific match even if there is a partial match" do
|
63
|
+
app_resolver(nil, 'app').matches.should == apps(@production)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "scopes searches under the correct account" do
|
67
|
+
app_resolver("ey", "dup").matches.should == apps(@ey_dup)
|
68
|
+
app_resolver("me", "dup").matches.should == apps(@me_dup)
|
69
|
+
app_resolver("ey", nil, nil, ["git://github.com/repo/dup.git"]).matches.should == apps(@ey_dup)
|
70
|
+
app_resolver("me", nil, nil, ["git://github.com/repo/dup.git"]).matches.should == apps(@me_dup)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#errors" do
|
75
|
+
it "no account" do
|
76
|
+
app_resolver('gibberish', 'app', 'production').errors.should ==
|
77
|
+
[%|No account found matching "gibberish".|]
|
78
|
+
end
|
79
|
+
|
80
|
+
it "no app" do
|
81
|
+
app_resolver(nil, 'gibberish', 'app_dup').errors.should ==
|
82
|
+
[%|No application found matching "gibberish".|]
|
83
|
+
end
|
84
|
+
|
85
|
+
it "app found, but not on account" do
|
86
|
+
app_resolver('no', 'bigapp', 'app_dup').errors.should == [
|
87
|
+
%|Application "bigapp" found, but does not exist in account "no".|,
|
88
|
+
%|Environment "app_dup" found, but does not exist in account "no".|,
|
89
|
+
]
|
90
|
+
end
|
91
|
+
|
92
|
+
it "no env" do
|
93
|
+
app_resolver('ey', 'app', 'gibberish').errors.should ==
|
94
|
+
[%|No environment found matching "gibberish".|]
|
95
|
+
end
|
96
|
+
|
97
|
+
it "no env on account" do
|
98
|
+
app_resolver('me', 'other', 'production').errors.should ==
|
99
|
+
[%|Environment "production" found, but does not exist in account "me".|]
|
100
|
+
end
|
101
|
+
|
102
|
+
it "no account or app" do
|
103
|
+
app_resolver('gibberish', 'gibberish', nil).errors.should == [
|
104
|
+
%|No account found matching "gibberish".|,
|
105
|
+
%|No application found matching "gibberish".|,
|
106
|
+
]
|
107
|
+
end
|
108
|
+
|
109
|
+
it "no account or app or env" do
|
110
|
+
app_resolver('gibberish', 'gibberish', 'gibberish').errors.should == [
|
111
|
+
%|No account found matching "gibberish".|,
|
112
|
+
%|No application found matching "gibberish".|,
|
113
|
+
%|No environment found matching "gibberish".|,
|
114
|
+
]
|
115
|
+
end
|
116
|
+
|
117
|
+
it "repo not found" do
|
118
|
+
app_resolver(nil, nil, nil, ["git://fake.com/fake/fake.git"]).errors.should ==
|
119
|
+
[%|No application found matching remotes:\n\tgit://fake.com/fake/fake.git|]
|
120
|
+
end
|
121
|
+
|
122
|
+
it "repo not found in account" do
|
123
|
+
app_resolver('ey', nil, nil, ["git://github.com/repo/oth.git"]).errors.should ==
|
124
|
+
[%|Application "other" found, but does not exist in account "ey".|]
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe EY::Resolver::EnvironmentResolver do
|
4
|
+
|
5
|
+
def env_resolver(*args)
|
6
|
+
EY::Resolver.environment_resolver(user, to_query(args))
|
7
|
+
end
|
8
|
+
|
9
|
+
def envs(*models)
|
10
|
+
models.map { |model| model[:env] }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#matches" do
|
14
|
+
it "raises if the conditions are empty" do
|
15
|
+
env_resolver( ).matches.should == []
|
16
|
+
env_resolver(nil, nil, nil, [] ).matches.should == []
|
17
|
+
env_resolver('', '', '', ['']).matches.should == []
|
18
|
+
end
|
19
|
+
|
20
|
+
it "finds matches that would raise for app_env_resolver" do
|
21
|
+
env_resolver(nil, nil, 'app_dup').matches.should == envs(@ey_dup, @me_dup)
|
22
|
+
env_resolver('ey', nil, 'app_dup').matches.should == envs(@ey_dup)
|
23
|
+
env_resolver('ey', nil, 'noapp' ).matches.should == envs(@noapp)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns empty when there is no account match" do
|
27
|
+
env_resolver('gibberish', 'app', 'production').matches.should == []
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns empty when there is no app match" do
|
31
|
+
env_resolver(nil, 'gibberish', 'app_dup').matches.should == []
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns empty when there is no remote match and env name is not specified" do
|
35
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/noe.git"]).matches.should == []
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns empty when there is no environment match" do
|
39
|
+
env_resolver(nil, nil, 'gibberish').matches.should == []
|
40
|
+
env_resolver(nil, 'app', 'gibberish').matches.should == []
|
41
|
+
end
|
42
|
+
|
43
|
+
it "returns empty because app doesn't match even when the environment exists" do
|
44
|
+
env_resolver(nil, 'bigapp', 'app_dup').matches.should == []
|
45
|
+
end
|
46
|
+
|
47
|
+
it "returns more matches when there is more than one match" do
|
48
|
+
env_resolver(nil, "app", nil, nil ).matches.should == envs(@production, @staging)
|
49
|
+
env_resolver("ey", "app", nil, nil ).matches.should == envs(@production, @staging)
|
50
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/app.git"]).matches.should == envs(@production, @staging)
|
51
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/hug.git", "git://github.com/repo/big.git"]).matches.should == envs(@hugeprod, @big)
|
52
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/dup.git"]).matches.should == envs(@ey_dup, @sumo, @me_dup)
|
53
|
+
env_resolver(nil, nil, 'app_dup', ["git://github.com/repo/app.git"]).matches.should == envs(@ey_dup, @me_dup)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "finds matches that don't match the remotes" do
|
57
|
+
env_resolver(nil, nil, 'production', ["git://github.com/repo/app.git"]).matches.should == envs(@production, @hugeprod)
|
58
|
+
env_resolver(nil, nil, 'staging', ["git://github.com/repo/noe.git"]).matches.should == envs(@staging, @big)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "scopes by app name when specified" do
|
62
|
+
env_resolver("ey", "big", nil, nil ).matches.should == envs(@big)
|
63
|
+
env_resolver(nil, 'app', "production", nil ).matches.should == envs(@production)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns one deployment whene there is only one match" do
|
67
|
+
env_resolver(nil, nil, 'staging', ["git://github.com/repo/app.git"]).matches.should == envs(@staging)
|
68
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/big.git"]).matches.should == envs(@big)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "doesn't care about case" do
|
72
|
+
env_resolver("EY", "big").matches.should == envs(@big)
|
73
|
+
env_resolver("ey", "BiG").matches.should == envs(@big)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "returns the match when an app is specified even when there is a repo" do
|
77
|
+
env_resolver("ey", "bigapp", nil, ["git://github.com/repo/app.git"]).matches.should == envs(@big)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "returns the specific match even if there is a partial match" do
|
81
|
+
env_resolver(nil, 'app', 'app_staging').matches.should == envs(@staging)
|
82
|
+
env_resolver(nil, "app", "staging" ).matches.should == envs(@staging)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "scopes searches under the correct account" do
|
86
|
+
env_resolver("ey", "dup", "dup", nil ).matches.should == envs(@ey_dup)
|
87
|
+
env_resolver("me", nil, "dup", ["git://github.com/repo/dup.git"]).matches.should == envs(@me_dup)
|
88
|
+
env_resolver("me", nil, nil, ["git://github.com/repo/dup.git"]).matches.should == envs(@me_dup)
|
89
|
+
env_resolver("me", "dup", nil, nil ).matches.should == envs(@me_dup)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#errors" do
|
94
|
+
it "no account" do
|
95
|
+
env_resolver('gibberish', 'app', 'production').errors.should ==
|
96
|
+
[%|No account found matching "gibberish".|]
|
97
|
+
end
|
98
|
+
|
99
|
+
it "no app" do
|
100
|
+
env_resolver(nil, 'gibberish', 'app_dup').errors.should ==
|
101
|
+
[%|No application found matching "gibberish".|]
|
102
|
+
end
|
103
|
+
|
104
|
+
it "app found, but not on account" do
|
105
|
+
env_resolver('no', 'bigapp', 'app_dup').errors.should == [
|
106
|
+
%|Application "bigapp" found, but does not exist in account "no".|,
|
107
|
+
%|Environment "app_dup" found, but does not exist in account "no".|,
|
108
|
+
]
|
109
|
+
end
|
110
|
+
|
111
|
+
it "no env" do
|
112
|
+
env_resolver('ey', nil, 'gibberish').errors.should ==
|
113
|
+
[%|No environment found matching "gibberish".|]
|
114
|
+
end
|
115
|
+
|
116
|
+
it "no env on account" do
|
117
|
+
env_resolver('no', nil, 'app_dup').errors.should ==
|
118
|
+
[%|Environment "app_dup" found, but does not exist in account "no".|]
|
119
|
+
end
|
120
|
+
|
121
|
+
it "no account or app" do
|
122
|
+
env_resolver('gibberish', 'gibberish', nil).errors.should == [
|
123
|
+
%|No account found matching "gibberish".|,
|
124
|
+
%|No application found matching "gibberish".|,
|
125
|
+
]
|
126
|
+
end
|
127
|
+
|
128
|
+
it "no account or app or env" do
|
129
|
+
env_resolver('gibberish', 'gibberish', 'gibberish').errors.should == [
|
130
|
+
%|No account found matching "gibberish".|,
|
131
|
+
%|No application found matching "gibberish".|,
|
132
|
+
%|No environment found matching "gibberish".|,
|
133
|
+
]
|
134
|
+
end
|
135
|
+
|
136
|
+
it "repo not found" do
|
137
|
+
env_resolver(nil, nil, nil, ["git://fake.com/fake/fake.git"]).errors.should ==
|
138
|
+
[%|No application found matching remotes:\n\tgit://fake.com/fake/fake.git|]
|
139
|
+
end
|
140
|
+
|
141
|
+
it "repo found but env doesn't exist on it" do
|
142
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/noe.git"]).errors.should ==
|
143
|
+
[%|No environment found for applications matching remotes:\n\tgit://github.com/repo/noe.git|]
|
144
|
+
end
|
145
|
+
|
146
|
+
it "repo not found in account" do
|
147
|
+
env_resolver('ey', nil, nil, ["git://github.com/repo/oth.git"]).errors.should ==
|
148
|
+
[%|Application "other" found, but does not exist in account "ey".|]
|
149
|
+
end
|
150
|
+
|
151
|
+
it "app and environment not associated" do
|
152
|
+
env_resolver('ey', 'bigapp', 'app_dup').errors.should ==
|
153
|
+
[%|Application "bigapp" and environment "app_dup" are not associated.|]
|
154
|
+
end
|
155
|
+
|
156
|
+
it "app (by repo) and environment not associated" do
|
157
|
+
env_resolver(nil, nil, 'app_dup', ["git://github.com/repo/app.git"]).errors.should ==
|
158
|
+
[%|Application "app" and environment "app_dup" are not associated.|]
|
159
|
+
end
|
160
|
+
|
161
|
+
it "app (by repo) does not have an environment" do
|
162
|
+
env_resolver(nil, nil, nil, ["git://github.com/repo/noe.git"]).errors.should ==
|
163
|
+
[%|No environment found for applications matching remotes:\n\tgit://github.com/repo/noe.git|]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
if ENV['COVERAGE']
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
|
+
end
|
5
|
+
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
|
+
require 'ey_resolver'
|
10
|
+
require 'ey_resolver/mock'
|
11
|
+
|
12
|
+
# Spec stuff
|
13
|
+
require 'rspec'
|
14
|
+
require 'pp'
|
15
|
+
|
16
|
+
# Hack to allow datamapper style :name.like without including datamapper.
|
17
|
+
# Pretty nasty :(
|
18
|
+
|
19
|
+
module Helpers
|
20
|
+
|
21
|
+
def user
|
22
|
+
@user ||= User.create(:name => 'user')
|
23
|
+
end
|
24
|
+
|
25
|
+
def mock_models(acc_name, app_name = nil, env_name = nil, repo = nil)
|
26
|
+
unless acc_name
|
27
|
+
raise "Must have an account"
|
28
|
+
end
|
29
|
+
|
30
|
+
if !!app_name != !!repo # both or neither (XNOR)
|
31
|
+
raise "app_name and repo must be supplied together"
|
32
|
+
end
|
33
|
+
|
34
|
+
account = Account.first(:user => user, :name => acc_name)
|
35
|
+
account ||= Account.create(:user => user, :name => acc_name)
|
36
|
+
|
37
|
+
app = nil
|
38
|
+
if app_name
|
39
|
+
app = App.first( :account_id => account.id, :name => app_name, :repository_uri => repo)
|
40
|
+
app ||= App.create(:account_id => account.id, :name => app_name, :repository_uri => repo)
|
41
|
+
end
|
42
|
+
|
43
|
+
env = nil
|
44
|
+
if env_name
|
45
|
+
env = Environment.first( :account_id => account.id, :name => env_name)
|
46
|
+
env ||= Environment.create(:account_id => account.id, :name => env_name)
|
47
|
+
end
|
48
|
+
|
49
|
+
app_env = nil
|
50
|
+
if app_name && env_name
|
51
|
+
app_env = AppEnvironment.first( :app => app, :environment => env)
|
52
|
+
app_env ||= AppEnvironment.create(:app => app, :environment => env)
|
53
|
+
end
|
54
|
+
|
55
|
+
{
|
56
|
+
:account => account,
|
57
|
+
:app => app,
|
58
|
+
:env => env,
|
59
|
+
:app_env => app_env,
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
def to_query(args)
|
64
|
+
Hash[%w[account_name app_name environment_name remotes].zip(args)]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
RSpec.configure do |config|
|
69
|
+
config.include Helpers
|
70
|
+
|
71
|
+
config.before(:all) do
|
72
|
+
@production = mock_models('ey', "app", "app_production", "git://github.com/repo/app.git")
|
73
|
+
@staging = mock_models('ey', "app", "app_staging", "git://github.com/repo/app.git")
|
74
|
+
@hugeprod = mock_models('ey', "huge", "production", "git://github.com/repo/hug.git")
|
75
|
+
@big = mock_models('ey', "bigapp", "bigapp_staging", "git://github.com/repo/big.git")
|
76
|
+
@ey_dup = mock_models('ey', "app_dup", "app_dup", "git://github.com/repo/dup.git")
|
77
|
+
@sumo = mock_models('ey', "app_dup", "sumo_wrestler", "git://github.com/repo/dup.git")
|
78
|
+
@me_dup = mock_models('me', "app_dup", "app_dup", "git://github.com/repo/dup.git")
|
79
|
+
@me_other = mock_models('me', "other", "app_dup", "git://github.com/repo/oth.git")
|
80
|
+
@noapp = mock_models('ey', nil, "noapp", nil)
|
81
|
+
@noenv = mock_models('ey', "noenv", nil, "git://github.com/repo/noe.git")
|
82
|
+
@account = mock_models('no', nil, nil, nil)
|
83
|
+
end
|
84
|
+
end
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ey_resolver
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Martin Emde
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-02-13 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
prerelease: false
|
22
|
+
type: :runtime
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 17
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 2
|
32
|
+
- 3
|
33
|
+
version: 0.2.3
|
34
|
+
name: gitable
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
prerelease: false
|
38
|
+
type: :development
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
name: rake
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
prerelease: false
|
52
|
+
type: :development
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 2
|
61
|
+
- 0
|
62
|
+
version: "2.0"
|
63
|
+
name: rspec
|
64
|
+
version_requirements: *id003
|
65
|
+
description: Resolves apps, environments, app_environments and accounts using a set of constraints
|
66
|
+
email:
|
67
|
+
- martin.emde@gmail.com
|
68
|
+
executables: []
|
69
|
+
|
70
|
+
extensions: []
|
71
|
+
|
72
|
+
extra_rdoc_files: []
|
73
|
+
|
74
|
+
files:
|
75
|
+
- .gitignore
|
76
|
+
- Gemfile
|
77
|
+
- README.md
|
78
|
+
- Rakefile
|
79
|
+
- ey_resolver.gemspec
|
80
|
+
- lib/ey_resolver.rb
|
81
|
+
- lib/ey_resolver/abstract_resolver.rb
|
82
|
+
- lib/ey_resolver/account_resolver.rb
|
83
|
+
- lib/ey_resolver/app_env_resolver.rb
|
84
|
+
- lib/ey_resolver/app_resolver.rb
|
85
|
+
- lib/ey_resolver/environment_resolver.rb
|
86
|
+
- lib/ey_resolver/examiner.rb
|
87
|
+
- lib/ey_resolver/mock.rb
|
88
|
+
- lib/ey_resolver/mock/models.rb
|
89
|
+
- lib/ey_resolver/mock/models/account.rb
|
90
|
+
- lib/ey_resolver/mock/models/app.rb
|
91
|
+
- lib/ey_resolver/mock/models/app_environment.rb
|
92
|
+
- lib/ey_resolver/mock/models/environment.rb
|
93
|
+
- lib/ey_resolver/mock/models/user.rb
|
94
|
+
- lib/ey_resolver/query.rb
|
95
|
+
- lib/ey_resolver/version.rb
|
96
|
+
- spec/account_resolver_spec.rb
|
97
|
+
- spec/app_env_resolver_spec.rb
|
98
|
+
- spec/app_resolver_spec.rb
|
99
|
+
- spec/environment_resolver_spec.rb
|
100
|
+
- spec/spec_helper.rb
|
101
|
+
homepage: ""
|
102
|
+
licenses: []
|
103
|
+
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 3
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
version: "0"
|
127
|
+
requirements: []
|
128
|
+
|
129
|
+
rubyforge_project: ey_resolver
|
130
|
+
rubygems_version: 1.8.15
|
131
|
+
signing_key:
|
132
|
+
specification_version: 3
|
133
|
+
summary: Resolves awsm models given constraints
|
134
|
+
test_files:
|
135
|
+
- spec/account_resolver_spec.rb
|
136
|
+
- spec/app_env_resolver_spec.rb
|
137
|
+
- spec/app_resolver_spec.rb
|
138
|
+
- spec/environment_resolver_spec.rb
|
139
|
+
- spec/spec_helper.rb
|