ixtlan-guard 0.8.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ixtlan guard #
2
2
 
3
+ * [![Build Status](https://secure.travis-ci.org/mkristian/ixtlan-guard.png)](http://travis-ci.org/mkristian/ixtlan-guard)
4
+ * [![Dependency Status](https://gemnasium.com/mkristian/ixtlan-guard.png)](https://gemnasium.com/mkristian/ixtlan-guard)
5
+ * [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/mkristian/ixtlan-guard)
6
+
3
7
  it is an simple authorization framework for restful rails especially using rails as API server.
4
8
 
5
9
  the idea is simple:
@@ -1,5 +1,5 @@
1
1
  require 'ixtlan/guard/guard_config'
2
-
2
+ require 'ixtlan/guard/models'
3
3
  module Ixtlan
4
4
  module Guard
5
5
  class Guard
@@ -103,9 +103,9 @@ module Ixtlan
103
103
  m = @config.map_of_all
104
104
  m.each do |resource, actions|
105
105
  nodes = []
106
- perm = Node.new(:permission)
107
- perm[:resource] = resource
108
- perm[:actions] = nodes
106
+ perm = Permission.new #Node.new(:permission)
107
+ perm.resource = resource
108
+ perm.actions = []#nodes
109
109
 
110
110
  # setup default_groups
111
111
  default_groups = actions.delete('defaults') || []
@@ -122,11 +122,11 @@ module Ixtlan
122
122
  # deny = true : default_groups.member?('*')
123
123
  default_groups.size != 0 || default_groups.member?('*')
124
124
  end
125
- perm[:deny] = deny
125
+ perm.deny = deny
126
126
 
127
127
  actions.each do |action, groups|
128
128
  group_names = groups.collect { |g| g.is_a?(Hash) ? g.keys : g }.flatten if groups
129
- node = Node.new(:action)
129
+ node = Action.new #Node.new(:action)
130
130
  allowed_groups =
131
131
  if groups && group_names.member?('*')
132
132
  group_map.values
@@ -134,53 +134,33 @@ module Ixtlan
134
134
  names = group_map.keys & ((group_names || []) + @superuser)
135
135
  names.collect { |name| group_map[name] }
136
136
  end
137
-
138
137
  if (deny && allowed_groups.size == 0) || (!deny && allowed_groups.size > 0)
139
- node[:name] = action
138
+ node.name = action
140
139
  if block
141
140
  if allowed_groups.size > 0
142
141
  assos = block.call(resource, allowed_groups)
143
- node[:associations] = assos if assos && assos.size > 0
142
+ node.associations = assos if assos && assos.size > 0
144
143
  else
145
144
  assos = block.call(resource, group_map.values)
146
- perm[:associations] = assos if assos && assos.size > 0
145
+ perm.associations = assos if assos && assos.size > 0
147
146
  end
148
147
  end
149
- nodes << node
148
+ perm.actions << node
150
149
  elsif deny && allowed_groups.size > 0 && block
151
150
  assos = block.call(resource, group_map.values)
152
- perm[:associations] = assos if assos && assos.size > 0
151
+ perm.associations = assos if assos && assos.size > 0
153
152
  end
154
153
  end
155
154
  # TODO is that right like this ?
156
155
  # only default_groups, i.e. no actions !!!
157
156
  if block && actions.size == 0 && deny
158
157
  assos = block.call(resource, group_map.values)
159
- perm[:associations] = assos if assos && assos.size > 0
158
+ perm.associations = assos if assos && assos.size > 0
160
159
  end
161
160
  perms << perm
162
161
  end
163
162
  perms
164
163
  end
165
164
  end
166
- class Node < Hash
167
-
168
- attr_reader :content
169
-
170
- def initialize(name)
171
- map = super
172
- @content = {}
173
- merge!({ name => @content })
174
- end
175
-
176
- def []=(k,v)
177
- @content[k] = v
178
- end
179
- def [](k)
180
- @content[k]
181
- end
182
- end
183
- class GuardException < Exception; end
184
- class PermissionDenied < GuardException; end
185
165
  end
186
166
  end
@@ -116,7 +116,7 @@ module Ixtlan
116
116
  end
117
117
 
118
118
  def self.guard
119
- Rails.application.config.guard
119
+ ::Rails.application.config.guard
120
120
  end
121
121
 
122
122
  def self.allowed?(action, current_groups, reference = nil)
@@ -0,0 +1,22 @@
1
+ require 'virtus'
2
+ module Ixtlan
3
+ module Guard
4
+ class Action
5
+ include Virtus
6
+
7
+ attribute :name, String
8
+ attribute :associations, Array[String]
9
+ end
10
+ class Permission
11
+ include Virtus
12
+
13
+ attribute :resource, String
14
+ attribute :actions, Array[Action], :default => []
15
+ attribute :deny, Boolean, :default => false
16
+ attribute :associations, Array[String]
17
+ end
18
+ #TODO
19
+ class GuardException < Exception; end
20
+ class PermissionDenied < GuardException; end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'virtus'
2
+ module Ixtlan
3
+ module Guard
4
+ class Action
5
+ include Virtus
6
+
7
+ attribute :name, String
8
+ attribute :associations, Array[String]
9
+ end
10
+ class Permission
11
+ include Virtus
12
+
13
+ attribute :resource, String
14
+ attribute :actions, Array[Action], :default => []
15
+ attribute :deny, Boolean, :deafult => false
16
+ attribute :associations, Array[String]
17
+ end
18
+ #TODO
19
+ class GuardException < Exception; end
20
+ class PermissionDenied < GuardException; end
21
+ end
22
+ end
@@ -1,4 +1,4 @@
1
- require 'rails'
1
+ require 'rails/railtie'
2
2
  require 'ixtlan/guard/guard'
3
3
  require 'ixtlan/guard/guard_rails'
4
4
  require 'logger'
@@ -7,16 +7,21 @@ describe Ixtlan::Guard::Guard do
7
7
  def assert(expected, perms)
8
8
  map = {}
9
9
  expected.each do |e|
10
- map[e[:permission][:resource]] = e
11
- if e[:permission][:actions]
12
- e[:permission][:actions].sort!{ |n,m| n[:action][:name] <=> m[:action][:name] }
10
+ map[(e[:permission] || e)[:resource]] = e
11
+ if (e[:permission] || e)[:actions]
12
+ (e[:permission] || e)[:actions].sort!{ |n,m| n[:action][:name] <=> m[:action][:name] }
13
13
  end
14
14
  end
15
15
  perms.each do |perm|
16
- if perm[:actions]
17
- perm[:actions].sort!{ |n,m| n.content[:name] <=> m.content[:name] }
16
+ attr = perm.attributes
17
+ attr[ :actions ] = perm.actions.collect do |a|
18
+ aa = a.attributes
19
+ aa.delete( :associations ) if aa[ :associations ].nil? || aa[ :associations ].empty?
20
+ {:action => aa}
18
21
  end
19
- map[perm[:resource].to_s].should == perm
22
+ attr[:actions].sort!{ |n,m| n[:action][:name] <=> m[:action][:name] }
23
+ attr.delete( :associations ) if attr[ :associations ].nil? || attr[ :associations ].empty?
24
+ map[perm[:resource]][:permission].should == attr
20
25
  end
21
26
  end
22
27
 
@@ -184,7 +189,7 @@ describe Ixtlan::Guard::Guard do
184
189
  end
185
190
  perm = subject.permissions([group])do |resource, groups|
186
191
  if resource == 'regions'
187
- [:europe, :asia]
192
+ ["europe", "asia"]
188
193
  end
189
194
  end
190
195
  expected = [
@@ -219,8 +224,8 @@ describe Ixtlan::Guard::Guard do
219
224
  {:permission=>
220
225
  {:resource=>"regions",
221
226
  :actions=>
222
- [{:action=>{:name=>"show", :associations=>[:europe, :asia]}},
223
- {:action=>{:name=>"create", :associations=>[:europe, :asia]}}],
227
+ [{:action=>{:name=>"show", :associations=>["europe", "asia"]}},
228
+ {:action=>{:name=>"create", :associations=>["europe", "asia"]}}],
224
229
  :deny=>false}},
225
230
  #allow nothing
226
231
  {:permission=>{:resource=>"users", :actions=>[], :deny=>false}}]
@@ -47,7 +47,7 @@ describe Ixtlan::Guard::Guard do
47
47
  end
48
48
 
49
49
  it 'should add associations to node' do
50
- perms = subject.permissions([Group.new('admin', [:german, :french])]) do |resource, groups|
50
+ perms = subject.permissions([Group.new('admin', ["german", "french"])]) do |resource, groups|
51
51
  if groups && groups.first && groups.first.name == 'admin'
52
52
  groups.first.domains
53
53
  else
@@ -61,7 +61,7 @@ describe Ixtlan::Guard::Guard do
61
61
  :resource=>"accounts",
62
62
  :actions=>[{:action=>{
63
63
  :name=>"destroy",
64
- :associations=>[:german, :french]}}],
64
+ :associations=>["german", "french"]}}],
65
65
  :deny=>false}
66
66
  }
67
67
  expected[:allow_all_defaults] = {
@@ -69,14 +69,14 @@ describe Ixtlan::Guard::Guard do
69
69
  :resource=>"allow_all_defaults",
70
70
  :actions=>[{:action=>{:name=>"index"}}],
71
71
  :deny=>true,
72
- :associations=>[:german, :french]}
72
+ :associations=>["german", "french"]}
73
73
  }
74
74
  expected[:defaults] = {
75
75
  :permission=>{
76
76
  :resource=>"defaults",
77
77
  :actions=>[{:action=>{
78
78
  :name=>"index",
79
- :associations=>[:german, :french]}}],
79
+ :associations=>["german", "french"]}}],
80
80
  :deny=>false}
81
81
  }
82
82
  expected[:no_defaults] = {
@@ -84,14 +84,14 @@ describe Ixtlan::Guard::Guard do
84
84
  :resource=>"no_defaults",
85
85
  :actions=>[{:action=>{
86
86
  :name=>"index",
87
- :associations=>[:german, :french]}}],
87
+ :associations=>["german", "french"]}}],
88
88
  :deny=>false}
89
89
  }
90
90
  expected[:only_defaults] = {
91
91
  :permission=>{
92
92
  :resource=>"only_defaults",
93
93
  :actions=>[],
94
- :associations=>[:german, :french],
94
+ :associations=>["german", "french"],
95
95
  :deny=>true}
96
96
  }
97
97
  expected[:person]= {
@@ -99,18 +99,18 @@ describe Ixtlan::Guard::Guard do
99
99
  :resource=>"person",
100
100
  :actions=> [{:action=>{
101
101
  :name=>"destroy",
102
- :associations=>[:german, :french]}},
102
+ :associations=>["german", "french"]}},
103
103
  {:action=>{
104
104
  :name=>"index",
105
- :associations=>[:german, :french]}}],
105
+ :associations=>["german", "french"]}}],
106
106
  :deny=>false}
107
107
  }
108
108
  expected[:regions] = {
109
109
  :permission=>{
110
110
  :resource=>"regions",
111
111
  :actions=>[
112
- {:action=>{:name=>"create", :associations=>[:german, :french]}},
113
- {:action=>{:name=>"show", :associations=>[:german, :french]}}
112
+ {:action=>{:name=>"create", :associations=>["german", "french"]}},
113
+ {:action=>{:name=>"show", :associations=>["german", "french"]}}
114
114
  ],
115
115
  :deny=>false}
116
116
  }
@@ -119,12 +119,17 @@ describe Ixtlan::Guard::Guard do
119
119
  :resource=>"users",
120
120
  :actions=>[],
121
121
  :deny=>false}
122
- }
122
+ }
123
123
  perms.each do |perm|
124
- if perm[:actions]
125
- perm[:actions].sort!{ |n,m| n.content[:name] <=> m.content[:name] }
124
+ attr = perm.attributes
125
+ attr[ :actions ] = perm.actions.collect do |a|
126
+ aa = a.attributes
127
+ aa.delete( :associations ) if aa[ :associations ].nil? || aa[ :associations ].empty?
128
+ {:action => aa}
126
129
  end
127
- expected[perm[:resource].to_sym].should == perm
130
+ attr[:actions].sort!{ |n,m| n[:action][:name] <=> m[:action][:name] }
131
+ attr.delete( :associations ) if attr[ :associations ].nil? || attr[ :associations ].empty?
132
+ expected[perm[:resource].to_sym][:permission].should == attr
128
133
  end
129
134
  end
130
135
  end
metadata CHANGED
@@ -1,86 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ixtlan-guard
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 59
4
5
  prerelease:
5
- version: 0.8.3
6
+ segments:
7
+ - 0
8
+ - 9
9
+ - 0
10
+ version: 0.9.0
6
11
  platform: ruby
7
12
  authors:
8
- - mkristian
13
+ - mkristian
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2012-07-04 00:00:00 Z
18
+ date: 2012-12-29 00:00:00 Z
14
19
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: ixtlan-core
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ~>
22
- - !ruby/object:Gem::Version
23
- version: 0.7.0
24
- type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rails
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - "="
33
- - !ruby/object:Gem::Version
34
- version: 3.0.9
35
- type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- version: 2.6.0
46
- type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: cucumber
50
- prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - "="
55
- - !ruby/object:Gem::Version
56
- version: 0.9.4
57
- type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rake
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - "="
66
- - !ruby/object:Gem::Version
67
- version: 0.8.7
68
- type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: ruby-maven
72
- prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - "="
77
- - !ruby/object:Gem::Version
78
- version: 3.0.4.0.29.0
79
- type: :development
80
- version_requirements: *id006
20
+ - !ruby/object:Gem::Dependency
21
+ name: virtus
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 1
29
+ segments:
30
+ - 0
31
+ - 5
32
+ version: "0.5"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: railties
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 29
44
+ segments:
45
+ - 3
46
+ - 2
47
+ - 9
48
+ version: 3.2.9
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rspec
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 13
60
+ segments:
61
+ - 2
62
+ - 7
63
+ version: "2.7"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: rake
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 73
75
+ segments:
76
+ - 10
77
+ - 0
78
+ - 3
79
+ version: 10.0.3
80
+ type: :development
81
+ version_requirements: *id004
81
82
  description: simple authorization framework for rails controllers
82
83
  email:
83
- - m.kristian@web.de
84
+ - m.kristian@web.de
84
85
  executables: []
85
86
 
86
87
  extensions: []
@@ -88,97 +89,105 @@ extensions: []
88
89
  extra_rdoc_files: []
89
90
 
90
91
  files:
91
- - MIT-LICENSE
92
- - README.md
93
- - lib/ixtlan-guard.rb
94
- - lib/generators/guard/controller/USAGE
95
- - lib/generators/guard/controller/controller_generator.rb
96
- - lib/generators/guard/controller/controller_generator.rb~
97
- - lib/generators/guard/scaffold/USAGE
98
- - lib/generators/guard/scaffold/scaffold_generator.rb
99
- - lib/generators/guard/templates/guard.yml
100
- - lib/generators/guard/templates/guard.yml~
101
- - lib/ixtlan/guard.rb
102
- - lib/ixtlan/guard/abstract_session.rb
103
- - lib/ixtlan/guard/abstract_session.rb~
104
- - lib/ixtlan/guard/guard_rails.rb~
105
- - lib/ixtlan/guard/guard.rb
106
- - lib/ixtlan/guard/permission_builder.rb~
107
- - lib/ixtlan/guard/guard_ng.rb~
108
- - lib/ixtlan/guard/guard_config.rb
109
- - lib/ixtlan/guard/guard_rails.rb
110
- - lib/ixtlan/guard/guard_config.rb~
111
- - lib/ixtlan/guard/guard.rb~
112
- - lib/ixtlan/guard/railtie.rb
113
- - spec/guard_export_spec.rb~
114
- - spec/guard_with_associations_spec.rb
115
- - spec/guard_with_associations_spec.rb~
116
- - spec/guard_export_spec.rb
117
- - spec/spec_helper.rb
118
- - spec/guard_cache_spec.rb
119
- - spec/guard_rails_spec.rb~
120
- - spec/guard_cache_spec.rb~
121
- - spec/guard_spec.rb
122
- - spec/railtie_spec.rb
123
- - spec/guard_rails_spec.rb
124
- - spec/guards/accounts1_guard.yml~
125
- - spec/guards/users_guard.yml
126
- - spec/guards/users2_guard.yml
127
- - spec/guards/only_defaults_guard.yml
128
- - spec/guards/allow_alldefaults.yml~
129
- - spec/guards/accounts2_guard.yml~
130
- - spec/guards/users2_guard.yml~
131
- - spec/guards/only_defaults_guard.yml~
132
- - spec/guards/users_guard.yml~
133
- - spec/guards/users1_guard.yml~
134
- - spec/guards/tools_guard.yml~
135
- - spec/guards/re_users_guard.yaml~
136
- - spec/guards/no_defaults_guard.yml
137
- - spec/guards/regions_guard.yml~
138
- - spec/guards/defaults_guard.yml
139
- - spec/guards/users1_guard.yml
140
- - spec/guards/person_guard.yml
141
- - spec/guards/accounts_guard.yml
142
- - spec/guards/no_defaults_guard.yml~
143
- - spec/guards/regions_guard.yml
144
- - spec/guards/allow_all_defaults_guard.yml
145
- - spec/guards/allow_all_defaults_guard.yml~
146
- - spec/guards/defaults_guard.yml~
147
- - features/step_definitions/simple_steps.rb
148
- - features/generators.feature
92
+ - MIT-LICENSE
93
+ - README.md
94
+ - lib/ixtlan-guard.rb
95
+ - lib/generators/guard/controller/USAGE
96
+ - lib/generators/guard/controller/controller_generator.rb
97
+ - lib/generators/guard/controller/controller_generator.rb~
98
+ - lib/generators/guard/scaffold/USAGE
99
+ - lib/generators/guard/scaffold/scaffold_generator.rb
100
+ - lib/generators/guard/templates/guard.yml
101
+ - lib/generators/guard/templates/guard.yml~
102
+ - lib/ixtlan/guard.rb
103
+ - lib/ixtlan/guard/abstract_session.rb
104
+ - lib/ixtlan/guard/abstract_session.rb~
105
+ - lib/ixtlan/guard/guard_rails.rb~
106
+ - lib/ixtlan/guard/guard.rb
107
+ - lib/ixtlan/guard/models.rb~
108
+ - lib/ixtlan/guard/permission_builder.rb~
109
+ - lib/ixtlan/guard/guard_ng.rb~
110
+ - lib/ixtlan/guard/guard_config.rb
111
+ - lib/ixtlan/guard/guard_rails.rb
112
+ - lib/ixtlan/guard/guard_config.rb~
113
+ - lib/ixtlan/guard/guard.rb~
114
+ - lib/ixtlan/guard/models.rb
115
+ - lib/ixtlan/guard/railtie.rb
116
+ - spec/guards/accounts1_guard.yml~
117
+ - spec/guards/users_guard.yml
118
+ - spec/guards/users2_guard.yml
119
+ - spec/guards/only_defaults_guard.yml
120
+ - spec/guards/allow_alldefaults.yml~
121
+ - spec/guards/accounts2_guard.yml~
122
+ - spec/guards/users2_guard.yml~
123
+ - spec/guards/only_defaults_guard.yml~
124
+ - spec/guards/users_guard.yml~
125
+ - spec/guards/users1_guard.yml~
126
+ - spec/guards/tools_guard.yml~
127
+ - spec/guards/re_users_guard.yaml~
128
+ - spec/guards/no_defaults_guard.yml
129
+ - spec/guards/regions_guard.yml~
130
+ - spec/guards/defaults_guard.yml
131
+ - spec/guards/users1_guard.yml
132
+ - spec/guards/person_guard.yml
133
+ - spec/guards/accounts_guard.yml
134
+ - spec/guards/no_defaults_guard.yml~
135
+ - spec/guards/regions_guard.yml
136
+ - spec/guards/allow_all_defaults_guard.yml
137
+ - spec/guards/allow_all_defaults_guard.yml~
138
+ - spec/guards/defaults_guard.yml~
139
+ - spec/guard_export_spec.rb~
140
+ - spec/guard_with_associations_spec.rb
141
+ - spec/guard_with_associations_spec.rb~
142
+ - spec/guard_export_spec.rb
143
+ - spec/spec_helper.rb
144
+ - spec/guard_cache_spec.rb
145
+ - spec/guard_rails_spec.rb~
146
+ - spec/guard_cache_spec.rb~
147
+ - spec/guard_spec.rb
148
+ - spec/railtie_spec.rb
149
+ - spec/guard_rails_spec.rb
150
+ - features/step_definitions/simple_steps.rb
151
+ - features/generators.feature
149
152
  homepage: http://github.com/mkristian/ixtlan-guard
150
153
  licenses:
151
- - MIT-LICENSE
154
+ - MIT-LICENSE
152
155
  post_install_message:
153
156
  rdoc_options: []
154
157
 
155
158
  require_paths:
156
- - lib
159
+ - lib
157
160
  required_ruby_version: !ruby/object:Gem::Requirement
158
161
  none: false
159
162
  requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- version: "0"
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ hash: 3
166
+ segments:
167
+ - 0
168
+ version: "0"
163
169
  required_rubygems_version: !ruby/object:Gem::Requirement
164
170
  none: false
165
171
  requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- version: "0"
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ hash: 3
175
+ segments:
176
+ - 0
177
+ version: "0"
169
178
  requirements: []
170
179
 
171
180
  rubyforge_project:
172
- rubygems_version: 1.8.24
181
+ rubygems_version: 1.8.15
173
182
  signing_key:
174
183
  specification_version: 3
175
184
  summary: guard your controller actions
176
185
  test_files:
177
- - spec/guard_with_associations_spec.rb
178
- - spec/guard_export_spec.rb
179
- - spec/guard_cache_spec.rb
180
- - spec/guard_spec.rb
181
- - spec/railtie_spec.rb
182
- - spec/guard_rails_spec.rb
183
- - features/generators.feature
184
- - features/step_definitions/simple_steps.rb
186
+ - spec/guard_with_associations_spec.rb
187
+ - spec/guard_export_spec.rb
188
+ - spec/guard_cache_spec.rb
189
+ - spec/guard_spec.rb
190
+ - spec/railtie_spec.rb
191
+ - spec/guard_rails_spec.rb
192
+ - features/generators.feature
193
+ - features/step_definitions/simple_steps.rb