consul 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of consul might be problematic. Click here for more details.

Files changed (53) hide show
  1. data/README.md +49 -2
  2. data/Rakefile +26 -6
  3. data/consul.gemspec +8 -7
  4. data/lib/consul.rb +1 -0
  5. data/lib/consul/active_record.rb +5 -1
  6. data/lib/consul/controller.rb +18 -11
  7. data/lib/consul/errors.rb +1 -0
  8. data/lib/consul/power.rb +29 -4
  9. data/lib/consul/version.rb +1 -1
  10. data/spec/rails-2.3/Gemfile +12 -0
  11. data/spec/rails-2.3/Rakefile +11 -0
  12. data/spec/{app_root → rails-2.3/app_root}/app/controllers/application_controller.rb +0 -0
  13. data/spec/{app_root → rails-2.3/app_root}/app/controllers/cakes_controller.rb +0 -0
  14. data/spec/{app_root → rails-2.3/app_root}/app/controllers/dashboards_controller.rb +0 -0
  15. data/spec/{app_root → rails-2.3/app_root}/app/controllers/risks_controller.rb +0 -0
  16. data/spec/{app_root → rails-2.3/app_root}/app/controllers/songs_controller.rb +0 -0
  17. data/spec/{app_root → rails-2.3/app_root}/app/controllers/users_controller.rb +0 -0
  18. data/spec/{app_root → rails-2.3/app_root}/app/models/client.rb +0 -0
  19. data/spec/{app_root → rails-2.3/app_root}/app/models/note.rb +0 -0
  20. data/spec/{app_root → rails-2.3/app_root}/app/models/power.rb +25 -1
  21. data/spec/{app_root → rails-2.3/app_root}/app/models/user.rb +0 -0
  22. data/spec/{app_root → rails-2.3/app_root}/config/boot.rb +14 -0
  23. data/spec/{app_root → rails-2.3/app_root}/config/database.yml +0 -0
  24. data/spec/{app_root → rails-2.3/app_root}/config/environment.rb +0 -0
  25. data/spec/{app_root → rails-2.3/app_root}/config/environments/in_memory.rb +0 -0
  26. data/spec/{app_root → rails-2.3/app_root}/config/environments/mysql.rb +0 -0
  27. data/spec/{app_root → rails-2.3/app_root}/config/environments/postgresql.rb +0 -0
  28. data/spec/{app_root → rails-2.3/app_root}/config/environments/sqlite.rb +0 -0
  29. data/spec/{app_root → rails-2.3/app_root}/config/environments/sqlite3.rb +0 -0
  30. data/spec/rails-2.3/app_root/config/preinitializer.rb +20 -0
  31. data/spec/{app_root → rails-2.3/app_root}/config/routes.rb +0 -0
  32. data/spec/{app_root → rails-2.3/app_root}/db/migrate/001_create_users.rb +0 -0
  33. data/spec/{app_root → rails-2.3/app_root}/db/migrate/002_create_clients.rb +0 -0
  34. data/spec/{app_root → rails-2.3/app_root}/db/migrate/003_create_notes.rb +0 -0
  35. data/spec/{app_root → rails-2.3/app_root}/lib/console_with_fixtures.rb +0 -0
  36. data/spec/rails-2.3/app_root/log/.gitignore +1 -0
  37. data/spec/{app_root → rails-2.3/app_root}/script/console +0 -0
  38. data/spec/{rcov.opts → rails-2.3/rcov.opts} +0 -0
  39. data/spec/{spec.opts → rails-2.3/spec.opts} +0 -0
  40. data/spec/{spec_helper.rb → rails-2.3/spec_helper.rb} +9 -6
  41. data/spec/{consul → shared/consul}/active_record_spec.rb +0 -0
  42. data/spec/shared/consul/power_spec.rb +361 -0
  43. data/spec/{controllers → shared/controllers}/cakes_controller_spec.rb +1 -1
  44. data/spec/{controllers → shared/controllers}/dashboards_controller_spec.rb +1 -1
  45. data/spec/{controllers → shared/controllers}/risks_controller_spec.rb +1 -1
  46. data/spec/{controllers → shared/controllers}/songs_controller_spec.rb +1 -1
  47. data/spec/shared/controllers/users_controller_spec.rb +25 -0
  48. metadata +46 -119
  49. data/Gemfile +0 -3
  50. data/spec/consul/power_spec.rb +0 -127
  51. data/spec/controllers/users_controller_spec.rb +0 -13
  52. data/spec/support/spec.opts +0 -4
  53. data/spec/support/spec_candy.rb +0 -179
@@ -0,0 +1,361 @@
1
+ require 'spec_helper'
2
+
3
+ describe Consul::Power do
4
+
5
+ before :each do
6
+ @user = User.create!
7
+ @deleted_client = Client.create!(:deleted => true)
8
+ @client1 = Client.create!
9
+ @client1_note1 = @client1.notes.create!
10
+ @client1_note2 = @client1.notes.create!
11
+ @client2 = Client.create!
12
+ @client2_note1 = @client2.notes.create!
13
+ @client2_note2 = @client2.notes.create!
14
+ end
15
+
16
+ describe 'integration scenario' do
17
+
18
+ it 'should work with real records' do
19
+ Client.active.should == [@client1, @client2]
20
+ @client1.notes.should == [@client1_note1, @client1_note2]
21
+ end
22
+
23
+ end
24
+
25
+ context 'scope powers' do
26
+
27
+ it 'should return the registered scope' do
28
+ @user.power.clients.all.should == [@client1, @client2]
29
+ end
30
+
31
+ it 'should allow to register scopes with arguments' do
32
+ @user.power.client_notes(@client1).should == [@client1_note1, @client1_note2]
33
+ end
34
+
35
+ describe '#include?' do
36
+
37
+ context 'when no record is given' do
38
+
39
+ it 'should return true if the power returns a scope (which might or might not match records)' do
40
+ @user.power.clients?.should be_true
41
+ end
42
+
43
+ it 'should return false if the power returns nil' do
44
+ @user.role = 'guest'
45
+ @user.power.clients.should be_nil
46
+ @user.power.clients?.should be_false
47
+ end
48
+
49
+ end
50
+
51
+ context 'with a given record' do
52
+
53
+ it 'should return true if the record belongs to the scope' do
54
+ @user.power.client?(@client1).should be_true
55
+ end
56
+
57
+ it 'should return false if the record does not belong to the scope' do
58
+ @user.power.client?(@deleted_client).should be_false
59
+ end
60
+
61
+ it 'should only trigger a single query for multiple checks on the same scope' do
62
+ ActiveRecord::Base.connection.should_receive(:select_values).once.and_return([]) #.and_return(double('connection').as_null_object)
63
+ @user.power.client?(@client1)
64
+ @user.power.client?(@deleted_client)
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
71
+ describe '#include!' do
72
+
73
+ context 'when no record is given' do
74
+
75
+ it 'should raise Consul::Powerless when the power returns nil' do
76
+ @user.role = 'guest'
77
+ @user.power.clients.should be_nil
78
+ expect { @user.power.clients! }.to raise_error(Consul::Powerless)
79
+ end
80
+
81
+ it 'should not raise Consul::Powerless when the power returns a scope (which might or might not match records)' do
82
+ expect { @user.power.clients! }.to_not raise_error
83
+ end
84
+
85
+ end
86
+
87
+ context 'with a given record' do
88
+
89
+ it 'should raise Consul::Powerless when record belongs is inside the scope' do
90
+ expect { @user.power.client!(@deleted_client) }.to raise_error(Consul::Powerless)
91
+ end
92
+
93
+ it 'should not raise Consul::Powerless when the record is outside a scope' do
94
+ expect { @user.power.client!(@client1) }.to_not raise_error
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+
101
+ describe 'retrieving scope_ids' do
102
+
103
+ it 'should return record ids that match the registered scope' do
104
+ @user.power.client_ids.should == [@client1.id, @client2.id]
105
+ end
106
+
107
+ it 'should cache scope ids' do
108
+ @user.power.should_receive(:clients).once.and_return(double('scope', :construct_finder_sql => 'SELECT 1').as_null_object)
109
+ 2.times { @user.power.client_ids }
110
+ end
111
+
112
+ it 'should return ids when the scope joins another table (bugfix)' do
113
+ expect { @user.power.note_ids }.to_not raise_error
114
+ end
115
+
116
+ end
117
+
118
+ end
119
+
120
+ context 'collection powers' do
121
+
122
+ it 'should return the registered collection' do
123
+ @user.power.key_figures.should == %w[amount working_costs]
124
+ end
125
+
126
+ describe '#include?' do
127
+
128
+ context 'when no record is given' do
129
+
130
+ it 'should return true if the returns an enumerable (which might or might not be empty)' do
131
+ @user.power.key_figures?.should be_true
132
+ end
133
+
134
+ it 'should return false if the power returns nil' do
135
+ @user.role = 'guest'
136
+ @user.power.key_figures.should be_nil
137
+ @user.power.key_figures?.should be_false
138
+ end
139
+
140
+ end
141
+
142
+ context 'with a given record' do
143
+
144
+ it 'should return true if the power contains the given record' do
145
+ @user.power.key_figure?('amount').should be_true
146
+ end
147
+
148
+ it 'should return false if the power does not contain the given record' do
149
+ @user.power.key_figure?('xyz').should be_false
150
+ end
151
+
152
+ end
153
+
154
+ end
155
+
156
+ describe '#include!' do
157
+
158
+ context 'when no record is given' do
159
+
160
+ it 'should not raise Consul::Powerless if the power returns an enumerable (which might or might not be empty)' do
161
+ expect { @user.power.key_figures! }.to_not raise_error
162
+ end
163
+
164
+ it 'should raise Consul::Powerless if the power returns nil' do
165
+ @user.role = 'guest'
166
+ @user.power.key_figures.should be_nil
167
+ expect { @user.power.key_figures! }.to raise_error(Consul::Powerless)
168
+ end
169
+
170
+ end
171
+
172
+ context 'with a given record' do
173
+
174
+ it 'should not raise Consul::Powerless if the power contains the given record' do
175
+ expect { @user.power.key_figure?('amount') }.to_not raise_error
176
+ end
177
+
178
+ it 'should raise Consul::Powerless if the power does not contain the given record' do
179
+ expect { @user.power.key_figure!('xyz') }.to raise_error(Consul::Powerless)
180
+ end
181
+ end
182
+
183
+ end
184
+
185
+ end
186
+
187
+ context 'boolean powers' do
188
+
189
+ it 'should return the registered value' do
190
+ @user.power.always_true.should == true
191
+ @user.power.always_false.should == false
192
+ end
193
+
194
+ describe '#include?' do
195
+
196
+ context 'when no record is given' do
197
+
198
+ it 'should return true when the queried power returns true' do
199
+ @user.power.always_true?.should be_true
200
+ end
201
+
202
+ it 'should return false when the queried power returns false' do
203
+ @user.power.always_false?.should be_false
204
+ end
205
+
206
+ it 'should return false when the queried power returns nil' do
207
+ @user.power.always_nil?.should be_false
208
+ end
209
+
210
+ end
211
+
212
+ context 'with a given record' do
213
+
214
+ it 'should raise Consul::NoCollection' do
215
+ expect { @user.power.always_true?('foo') }.to raise_error(Consul::NoCollection)
216
+ end
217
+
218
+ end
219
+
220
+ end
221
+
222
+ describe '#include!' do
223
+
224
+ context 'when no record is given' do
225
+
226
+ it 'should not raise Consul::Powerless when the power returns true' do
227
+ expect { @user.power.always_true! }.to_not raise_error
228
+ end
229
+
230
+ it 'should raise Consul::Powerless when the power returns false' do
231
+ expect { @user.power.always_false! }.to raise_error(Consul::Powerless)
232
+ end
233
+
234
+ it 'should raise Consul::Powerless when the power returns nil' do
235
+ expect { @user.power.always_nil! }.to raise_error(Consul::Powerless)
236
+ end
237
+
238
+ end
239
+
240
+ context 'with a given record' do
241
+
242
+ it 'should raise Consul::NoCollection' do
243
+ expect { @user.power.always_true!('foo') }.to raise_error(Consul::NoCollection)
244
+ end
245
+ end
246
+
247
+ end
248
+
249
+
250
+ end
251
+
252
+ context 'powers of other types' do
253
+
254
+ it 'should return the registered value' do
255
+ @user.power.api_key.should == 'secret-api-key'
256
+ end
257
+
258
+ describe '#include?' do
259
+
260
+ context 'when no record is given' do
261
+
262
+ it 'should return true if the power is not nil' do
263
+ @user.power.api_key?.should be_true
264
+ end
265
+
266
+ it 'should return false if the power is nil' do
267
+ @user.role = 'guest'
268
+ @user.power.api_key.should be_nil
269
+ @user.power.api_key?.should be_false
270
+ end
271
+
272
+ end
273
+
274
+ context 'with a given record' do
275
+
276
+ it 'should raise Consul::NoCollection' do
277
+ expect { @user.power.api_key?('foo') }.to raise_error(Consul::NoCollection)
278
+ end
279
+
280
+ end
281
+
282
+ end
283
+
284
+ describe '#include!' do
285
+
286
+ context 'when no record is given' do
287
+
288
+ it 'should not raise Consul::Powerless if the power is not nil' do
289
+ expect { @user.power.api_key! }.to_not raise_error
290
+ end
291
+
292
+ it 'should raise Consul::powerless if the power is nil' do
293
+ @user.role = 'guest'
294
+ @user.power.api_key.should be_nil
295
+ expect { @user.power.api_key! }.to raise_error(Consul::Powerless)
296
+ end
297
+
298
+ end
299
+
300
+ context 'with a given record' do
301
+
302
+ it 'should raise Consul::NoCollection' do
303
+ expect { @user.power.api_key!('foo') }.to raise_error(Consul::NoCollection)
304
+ end
305
+
306
+ end
307
+
308
+ end
309
+
310
+ end
311
+
312
+ describe '.current' do
313
+
314
+ it 'should provide a class method to set and get the current Power' do
315
+ Power.current = 'current power'
316
+ Power.current.should == 'current power'
317
+ Power.current = nil
318
+ Power.current.should be_nil
319
+ end
320
+
321
+ end
322
+
323
+ describe '.with_power' do
324
+
325
+ it 'should provide the given power as current power for the duration of the block' do
326
+ spy = double
327
+ inner_power = Power.new('inner')
328
+ Power.current = 'outer power'
329
+ spy.should_receive(:observe).with(inner_power)
330
+ Power.with_power(inner_power) do
331
+ spy.observe(Power.current)
332
+ end
333
+ Power.current.should == 'outer power'
334
+ Power.current = nil # clean up for subsequent specs -- to bad we can't use .with_power :)
335
+ end
336
+
337
+ it 'should restore an existing power even if the block raises an error' do
338
+ begin
339
+ inner_power = Power.new('inner')
340
+ Power.current = 'outer power'
341
+ Power.with_power(inner_power) do
342
+ raise ZeroDivisionError
343
+ end
344
+ rescue ZeroDivisionError
345
+ # do nothing
346
+ end
347
+ Power.current.should == 'outer power'
348
+ end
349
+
350
+ it 'should call instantiate a new Power if the given argument is not already a power' do
351
+ spy = double
352
+ Power.should_receive(:new).with('argument').and_return('instantiated power')
353
+ spy.should_receive(:observe).with('instantiated power')
354
+ Power.with_power('argument') do
355
+ spy.observe(Power.current)
356
+ end
357
+ end
358
+
359
+ end
360
+
361
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe CakesController do
3
+ describe CakesController, :type => :controller do
4
4
 
5
5
  describe '#show' do
6
6
  it 'should get the power :cakes' do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe DashboardsController do
3
+ describe DashboardsController, :type => :controller do
4
4
 
5
5
  it "should not raise an error if the checked power is given" do
6
6
  expect { get :show }.to_not raise_error
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RisksController do
3
+ describe RisksController, :type => :controller do
4
4
 
5
5
  it "should raise an error it includes Consul::Controller but forgets to define current_power do ... end" do
6
6
  expect { put :show, :id => '1' }.to raise_error(Consul::UnreachablePower)
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe SongsController do
3
+ describe SongsController, :type => :controller do
4
4
 
5
5
  it 'should allow to skip a required power check' do
6
6
  expect { get :show, :id => '1' }.to_not raise_error
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe UsersController, :type => :controller do
4
+
5
+ it "should raise an error if the checked power is not given" do
6
+ expect { get :update, :id => '1' }.to raise_error(Consul::Powerless)
7
+ end
8
+
9
+ it 'should allow to map actions to another power using the :map option' do
10
+ expect { get :show, :id => '1' }.to_not raise_error
11
+ end
12
+
13
+
14
+ describe '.power_name_for_action' do
15
+
16
+ it 'should return the name of the power for the given action (feature request from devolute)' do
17
+ UsersController.power_name_for_action(:show).should == :always_true
18
+ UsersController.power_name_for_action('show').should == :always_true
19
+ UsersController.power_name_for_action(:update).should == :always_false
20
+ UsersController.power_name_for_action('update').should == :always_false
21
+ end
22
+
23
+ end
24
+
25
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consul
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Henning Koch
@@ -15,11 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-07-04 00:00:00 +02:00
18
+ date: 2012-08-01 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :runtime
22
+ name: memoizer
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
@@ -30,10 +30,10 @@ dependencies:
30
30
  segments:
31
31
  - 0
32
32
  version: "0"
33
- name: rails
33
+ type: :runtime
34
34
  version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- type: :runtime
36
+ name: rails
37
37
  prerelease: false
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
@@ -44,81 +44,8 @@ dependencies:
44
44
  segments:
45
45
  - 0
46
46
  version: "0"
47
- name: assignable_values
47
+ type: :runtime
48
48
  version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- type: :development
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 5
58
- segments:
59
- - 2
60
- - 3
61
- version: "2.3"
62
- name: rails
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- type: :development
66
- prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 9
73
- segments:
74
- - 1
75
- - 3
76
- version: "1.3"
77
- name: rspec
78
- version_requirements: *id004
79
- - !ruby/object:Gem::Dependency
80
- type: :development
81
- prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ~>
86
- - !ruby/object:Gem::Version
87
- hash: 9
88
- segments:
89
- - 1
90
- - 3
91
- version: "1.3"
92
- name: rspec-rails
93
- version_requirements: *id005
94
- - !ruby/object:Gem::Dependency
95
- type: :development
96
- prerelease: false
97
- requirement: &id006 !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
- version: "0"
106
- name: shoulda-matchers
107
- version_requirements: *id006
108
- - !ruby/object:Gem::Dependency
109
- type: :development
110
- prerelease: false
111
- requirement: &id007 !ruby/object:Gem::Requirement
112
- none: false
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- hash: 3
117
- segments:
118
- - 0
119
- version: "0"
120
- name: sqlite3
121
- version_requirements: *id007
122
49
  description: A scope-based authorization solution for Ruby on Rails.
123
50
  email: henning.koch@makandra.de
124
51
  executables: []
@@ -129,7 +56,6 @@ extra_rdoc_files: []
129
56
 
130
57
  files:
131
58
  - .gitignore
132
- - Gemfile
133
59
  - README.md
134
60
  - Rakefile
135
61
  - consul.gemspec
@@ -140,43 +66,44 @@ files:
140
66
  - lib/consul/power.rb
141
67
  - lib/consul/spec/matchers.rb
142
68
  - lib/consul/version.rb
143
- - spec/app_root/app/controllers/application_controller.rb
144
- - spec/app_root/app/controllers/cakes_controller.rb
145
- - spec/app_root/app/controllers/dashboards_controller.rb
146
- - spec/app_root/app/controllers/risks_controller.rb
147
- - spec/app_root/app/controllers/songs_controller.rb
148
- - spec/app_root/app/controllers/users_controller.rb
149
- - spec/app_root/app/models/client.rb
150
- - spec/app_root/app/models/note.rb
151
- - spec/app_root/app/models/power.rb
152
- - spec/app_root/app/models/user.rb
153
- - spec/app_root/config/boot.rb
154
- - spec/app_root/config/database.yml
155
- - spec/app_root/config/environment.rb
156
- - spec/app_root/config/environments/in_memory.rb
157
- - spec/app_root/config/environments/mysql.rb
158
- - spec/app_root/config/environments/postgresql.rb
159
- - spec/app_root/config/environments/sqlite.rb
160
- - spec/app_root/config/environments/sqlite3.rb
161
- - spec/app_root/config/routes.rb
162
- - spec/app_root/db/migrate/001_create_users.rb
163
- - spec/app_root/db/migrate/002_create_clients.rb
164
- - spec/app_root/db/migrate/003_create_notes.rb
165
- - spec/app_root/lib/console_with_fixtures.rb
166
- - spec/app_root/log/.gitignore
167
- - spec/app_root/script/console
168
- - spec/consul/active_record_spec.rb
169
- - spec/consul/power_spec.rb
170
- - spec/controllers/cakes_controller_spec.rb
171
- - spec/controllers/dashboards_controller_spec.rb
172
- - spec/controllers/risks_controller_spec.rb
173
- - spec/controllers/songs_controller_spec.rb
174
- - spec/controllers/users_controller_spec.rb
175
- - spec/rcov.opts
176
- - spec/spec.opts
177
- - spec/spec_helper.rb
178
- - spec/support/spec.opts
179
- - spec/support/spec_candy.rb
69
+ - spec/rails-2.3/Gemfile
70
+ - spec/rails-2.3/Rakefile
71
+ - spec/rails-2.3/app_root/app/controllers/application_controller.rb
72
+ - spec/rails-2.3/app_root/app/controllers/cakes_controller.rb
73
+ - spec/rails-2.3/app_root/app/controllers/dashboards_controller.rb
74
+ - spec/rails-2.3/app_root/app/controllers/risks_controller.rb
75
+ - spec/rails-2.3/app_root/app/controllers/songs_controller.rb
76
+ - spec/rails-2.3/app_root/app/controllers/users_controller.rb
77
+ - spec/rails-2.3/app_root/app/models/client.rb
78
+ - spec/rails-2.3/app_root/app/models/note.rb
79
+ - spec/rails-2.3/app_root/app/models/power.rb
80
+ - spec/rails-2.3/app_root/app/models/user.rb
81
+ - spec/rails-2.3/app_root/config/boot.rb
82
+ - spec/rails-2.3/app_root/config/database.yml
83
+ - spec/rails-2.3/app_root/config/environment.rb
84
+ - spec/rails-2.3/app_root/config/environments/in_memory.rb
85
+ - spec/rails-2.3/app_root/config/environments/mysql.rb
86
+ - spec/rails-2.3/app_root/config/environments/postgresql.rb
87
+ - spec/rails-2.3/app_root/config/environments/sqlite.rb
88
+ - spec/rails-2.3/app_root/config/environments/sqlite3.rb
89
+ - spec/rails-2.3/app_root/config/preinitializer.rb
90
+ - spec/rails-2.3/app_root/config/routes.rb
91
+ - spec/rails-2.3/app_root/db/migrate/001_create_users.rb
92
+ - spec/rails-2.3/app_root/db/migrate/002_create_clients.rb
93
+ - spec/rails-2.3/app_root/db/migrate/003_create_notes.rb
94
+ - spec/rails-2.3/app_root/lib/console_with_fixtures.rb
95
+ - spec/rails-2.3/app_root/log/.gitignore
96
+ - spec/rails-2.3/app_root/script/console
97
+ - spec/rails-2.3/rcov.opts
98
+ - spec/rails-2.3/spec.opts
99
+ - spec/rails-2.3/spec_helper.rb
100
+ - spec/shared/consul/active_record_spec.rb
101
+ - spec/shared/consul/power_spec.rb
102
+ - spec/shared/controllers/cakes_controller_spec.rb
103
+ - spec/shared/controllers/dashboards_controller_spec.rb
104
+ - spec/shared/controllers/risks_controller_spec.rb
105
+ - spec/shared/controllers/songs_controller_spec.rb
106
+ - spec/shared/controllers/users_controller_spec.rb
180
107
  has_rdoc: true
181
108
  homepage: https://github.com/makandra/consul
182
109
  licenses: []