acts_permissive 0.2.5 → 0.3.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.markdown +3 -7
- data/lib/acts_permissive/permissive_object.rb +3 -1
- data/lib/acts_permissive/permissive_user.rb +32 -11
- data/lib/acts_permissive/version.rb +1 -1
- data/spec/active_resource_spec.rb +13 -10
- data/spec/acts_permissive_spec.rb +6 -6
- data/spec/dummy/log/test.log +0 -0
- data/spec/permission_spec.rb +5 -5
- data/spec/permissive_circle_spec.rb +11 -11
- data/spec/permissive_grouping_spec.rb +4 -4
- data/spec/permissive_object_spec.rb +10 -8
- data/spec/permissive_user_spec.rb +34 -5
- data/spec/sub_class_spec.rb +11 -11
- metadata +42 -31
data/README.markdown
CHANGED
@@ -77,6 +77,9 @@ It's all a bit complicated to talk about, because we're not used to being able t
|
|
77
77
|
|
78
78
|
friend.can?(:read, :in => private_circle) -> true
|
79
79
|
friend.can?(:write, :in => private_circle) -> false
|
80
|
+
friend.can?(:read, journal) -> true
|
81
|
+
friend.can?(:write, journal) -> false
|
82
|
+
friend.can?(:read, photo) -> true
|
80
83
|
|
81
84
|
foe.can?(:read, :in => public_circle) -> false
|
82
85
|
foe.can?(:read, :in => private_circle) -> false
|
@@ -150,13 +153,6 @@ Object also has a some query methods:
|
|
150
153
|
|
151
154
|
toothbrush.all_who_can(:use).include? wife -> true
|
152
155
|
|
153
|
-
Note: It might be useful to have a can? method that can act on the individual object, such as
|
154
|
-
|
155
|
-
boss.can(:use, stapler) -> false
|
156
|
-
|
157
|
-
But I've opted to leave that in the application's solution space, since this gem focuses on
|
158
|
-
the circle of objects, not the individual object as much.
|
159
|
-
|
160
156
|
You can also get all users in a circle, regardless of type
|
161
157
|
|
162
158
|
private.users -> [john, wife]
|
@@ -30,11 +30,13 @@ module ActsPermissive
|
|
30
30
|
end
|
31
31
|
|
32
32
|
#TODO: Refactor this shit!
|
33
|
+
# One way to do this. Figure out a list of permission masks that would pass,
|
34
|
+
# then use that to do a straight SQL query using "perm.mask IN [list]"
|
33
35
|
def all_who_can *args
|
34
36
|
# Get a list of users who can do whatever symbol based permissions are
|
35
37
|
# listed. For instance
|
36
38
|
# authors = @thing.all_who_can(:read, :write)
|
37
|
-
|
39
|
+
warn "\nPermissiveObject::all_who_can works, yeah, but it's a time suck. Use Carefully!"
|
38
40
|
if args.include?(:see)
|
39
41
|
raise PermissiveError, "Can only use :see as an option by itself" if args.count > 1
|
40
42
|
return ActsPermissive::Grouping.who_can_see(self)
|
@@ -64,7 +64,7 @@ module ActsPermissive
|
|
64
64
|
def reset_permissions! *args
|
65
65
|
options = args.extract_options!
|
66
66
|
options.assert_valid_keys(:in)
|
67
|
-
|
67
|
+
|
68
68
|
raise PermissiveError, "Must be called with a circle as an argument" if options[:in].nil?
|
69
69
|
|
70
70
|
#get the permission, or build it if it doesn't exist
|
@@ -99,26 +99,47 @@ module ActsPermissive
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def can? *args
|
102
|
+
#TODO this is freakin long. Refactor this shit
|
102
103
|
options = args.extract_options!
|
103
104
|
options.assert_valid_keys(:in, :see)
|
104
105
|
|
106
|
+
# Get the bitmap for the selected permissions
|
107
|
+
bits = args.select{|o| o.class == Symbol}.map{|s| Permission.bit_for s}.inject(0){|sum, p| sum + p }
|
108
|
+
|
105
109
|
#if we're checking for :see, return right away
|
106
110
|
if options[:see]
|
107
111
|
return permissions_in(options[:see]).present?
|
108
112
|
end
|
109
113
|
|
110
|
-
#
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
if
|
116
|
-
|
114
|
+
# Get a list of objects that we might be searching on
|
115
|
+
objects = args.select{|o| o.respond_to? :is_used_permissively?}
|
116
|
+
|
117
|
+
raise "Cannot search in both circles and objects at the same time" if options[:in].present? and objects.count > 0
|
118
|
+
|
119
|
+
if options[:in].nil? and objects.count > 0
|
120
|
+
warn "You are testing permissions on multiple objects. This is an OR query, which will return true if ANY have the requested permission" if objects.count > 1
|
121
|
+
objects.each do |object|
|
122
|
+
object.circles.each do |circle|
|
123
|
+
# return true immediately if we find a circle where our permissions cover the bitmask
|
124
|
+
perm = permissions_in circle
|
125
|
+
if perm.present?
|
126
|
+
return true if perm.mask & bits == bits
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
elsif options[:in].present?
|
131
|
+
#Get the permissions and return
|
132
|
+
perm = permissions_in options[:in]
|
133
|
+
if perm.nil?
|
134
|
+
return false
|
135
|
+
else
|
136
|
+
return perm.mask & bits == bits
|
137
|
+
end
|
117
138
|
else
|
118
|
-
|
119
|
-
bits = args.select{|o| o.class == Symbol}.map{|s| Permission.bit_for s}.inject(0){|sum, p| sum + p }
|
120
|
-
perm.mask & bits == bits
|
139
|
+
warn "You haven't given an object or circle to search on. Failing silently. Argument list: #{args.inspect}"
|
121
140
|
end
|
141
|
+
# Failsafe to false
|
142
|
+
false
|
122
143
|
end
|
123
144
|
|
124
145
|
def revoke! *args
|
@@ -19,8 +19,8 @@ describe ActsPermissive::PermissiveObject do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
before :each do
|
22
|
-
@user =
|
23
|
-
@admin =
|
22
|
+
@user = FactoryGirl.create :user
|
23
|
+
@admin = FactoryGirl.create :admin
|
24
24
|
@rest_object = RestObject.find(321)
|
25
25
|
@circle = @user.build_circle :objects => [@rest_object]
|
26
26
|
end
|
@@ -66,8 +66,8 @@ describe ActsPermissive::PermissiveObject do
|
|
66
66
|
|
67
67
|
before :each do
|
68
68
|
@admin.can!(:admin, :in => @circle)
|
69
|
-
@anne =
|
70
|
-
@debbie =
|
69
|
+
@anne = FactoryGirl.create :user
|
70
|
+
@debbie = FactoryGirl.create :user
|
71
71
|
@anne.can!(:read, :in => @circle)
|
72
72
|
@widget = RestObject.find(123)
|
73
73
|
@widget.add_to @circle
|
@@ -81,26 +81,29 @@ describe ActsPermissive::PermissiveObject do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should return a list of users who can perform the given functions" do
|
84
|
+
lst = @rest_object.all_who_can(:read)
|
84
85
|
[@user, @anne].each do |u|
|
85
|
-
|
86
|
+
lst.include?(u).should be_true
|
86
87
|
end
|
87
|
-
|
88
|
+
lst = @rest_object.all_who_can(:admin)
|
88
89
|
[@user, @admin].each do |u|
|
89
|
-
|
90
|
+
lst.include?(u).should be_true
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
93
94
|
it "should not include users who can't perform the function" do
|
95
|
+
lst = @rest_object.all_who_can(:write)
|
94
96
|
[@admin, @debbie, @anne].each do |u|
|
95
|
-
|
97
|
+
lst.include?(u).should be_false
|
96
98
|
end
|
97
99
|
end
|
98
100
|
|
99
101
|
it "Should correctly show all users who can :see an object" do
|
102
|
+
lst = @rest_object.all_who_can(:see)
|
100
103
|
[@admin, @anne, @user].each do |u|
|
101
|
-
|
104
|
+
lst.include?(u).should be_true
|
102
105
|
end
|
103
|
-
|
106
|
+
lst.include?(@debbie).should be_false
|
104
107
|
end
|
105
108
|
|
106
109
|
it "should throw an error when using :see with other permissions" do
|
@@ -2,15 +2,15 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
2
2
|
|
3
3
|
describe ActsPermissive do
|
4
4
|
before :each do
|
5
|
-
@user =
|
6
|
-
@admin =
|
7
|
-
@widget =
|
8
|
-
@widget2 =
|
9
|
-
@thing =
|
5
|
+
@user = FactoryGirl.create :user
|
6
|
+
@admin = FactoryGirl.create :admin
|
7
|
+
@widget = FactoryGirl.create :widget
|
8
|
+
@widget2 = FactoryGirl.create :widget
|
9
|
+
@thing = FactoryGirl.create :thing
|
10
10
|
@admin_circle = @admin.build_circle :name => "blah", :objects => [@widget, @widget2]
|
11
11
|
@user_circle = @user.build_circle :name => "yada", :objects => [@thing], :mask => 31
|
12
12
|
|
13
|
-
@new_user =
|
13
|
+
@new_user = FactoryGirl.create :user, :name => "@@@@@@@@@@@@@@@"
|
14
14
|
@new_user.can!(:read, :in => @admin_circle)
|
15
15
|
@new_user.can?(:read, :in => @admin_circle).should be_true
|
16
16
|
end
|
data/spec/dummy/log/test.log
CHANGED
Binary file
|
data/spec/permission_spec.rb
CHANGED
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe ActsPermissive::Permission do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@widget =
|
9
|
-
@thing =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@widget = FactoryGirl.create :widget
|
9
|
+
@thing = FactoryGirl.create :thing
|
10
10
|
|
11
11
|
@admin_circle = @admin.build_circle :name => "blah", :objects => [@widget]
|
12
12
|
@user_circle = @user.build_circle :name => "yada", :objects => [@thing], :mask => 31
|
@@ -14,7 +14,7 @@ describe ActsPermissive::Permission do
|
|
14
14
|
@user.can!(:read, :write, :in => @admin_circle)
|
15
15
|
@admin.can!(:read, :write, :admin, :in => @user_circle)
|
16
16
|
|
17
|
-
@new_user =
|
17
|
+
@new_user = FactoryGirl.create :user
|
18
18
|
@new_user.can!(:read, :in => @user_circle)
|
19
19
|
@new_user.can!(:write, :in => @admin_circle)
|
20
20
|
end
|
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe ActsPermissive::Circle do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@thing =
|
9
|
-
@widget =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@thing = FactoryGirl.create :thing
|
9
|
+
@widget = FactoryGirl.create :widget
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "class" do
|
@@ -38,8 +38,8 @@ describe ActsPermissive::Circle do
|
|
38
38
|
describe "query methods" do
|
39
39
|
|
40
40
|
before :each do
|
41
|
-
@another_thing =
|
42
|
-
@another_widget =
|
41
|
+
@another_thing = FactoryGirl.create :thing
|
42
|
+
@another_widget = FactoryGirl.create :widget
|
43
43
|
@uc = @user.build_circle :name => "blah", :objects => [@thing, @another_thing]
|
44
44
|
@ac = @admin.build_circle :name => "yada", :objects => [@widget, @another_widget, @thing]
|
45
45
|
end
|
@@ -50,9 +50,9 @@ describe ActsPermissive::Circle do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should return the list of users in a circle" do
|
53
|
-
anne =
|
54
|
-
debbie =
|
55
|
-
frank =
|
53
|
+
anne = FactoryGirl.create :user
|
54
|
+
debbie = FactoryGirl.create :user
|
55
|
+
frank = FactoryGirl.create :user
|
56
56
|
anne.can!(:read, :in => @uc)
|
57
57
|
debbie.can!(:read, :write, :in => @uc)
|
58
58
|
frank.can!(:read, :in => @ac)
|
@@ -75,7 +75,7 @@ describe ActsPermissive::Circle do
|
|
75
75
|
|
76
76
|
describe "scopes" do
|
77
77
|
before :each do
|
78
|
-
@user =
|
78
|
+
@user = FactoryGirl.create :user
|
79
79
|
@circles = []
|
80
80
|
%w{one two three four five blah yada}.each do |w|
|
81
81
|
@circles << @user.build_circle( :name => w)
|
@@ -84,7 +84,7 @@ describe ActsPermissive::Circle do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it "should return a list of users" do
|
87
|
-
another_user =
|
87
|
+
another_user = FactoryGirl.create :user
|
88
88
|
another_user.can!(:read, :in => @circles.first)
|
89
89
|
@circles.first.users.include?(@user).should be_true
|
90
90
|
@circles.first.users.include?(another_user).should be_true
|
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe ActsPermissive::Grouping do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@widget =
|
9
|
-
@thing =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@widget = FactoryGirl.create :widget
|
9
|
+
@thing = FactoryGirl.create :thing
|
10
10
|
@admin_circle = @admin.build_circle :name => "blah", :objects => [@widget]
|
11
11
|
@user_circle = @user.build_circle :name => "yada", :objects => [@thing], :mask => 31
|
12
12
|
end
|
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe ActsPermissive::PermissiveObject do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@thing =
|
9
|
-
@widget =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@thing = FactoryGirl.create :thing
|
9
|
+
@widget = FactoryGirl.create :widget
|
10
10
|
@circle = @user.build_circle :objects => [@thing]
|
11
11
|
end
|
12
12
|
|
@@ -40,8 +40,8 @@ describe ActsPermissive::PermissiveObject do
|
|
40
40
|
|
41
41
|
before :each do
|
42
42
|
@admin.can!(:admin, :in => @circle)
|
43
|
-
@anne =
|
44
|
-
@debbie =
|
43
|
+
@anne = FactoryGirl.create :user
|
44
|
+
@debbie = FactoryGirl.create :user
|
45
45
|
@anne.can!(:read, :in => @circle)
|
46
46
|
@widget.add_to @circle
|
47
47
|
end
|
@@ -76,10 +76,12 @@ describe ActsPermissive::PermissiveObject do
|
|
76
76
|
@thing.all_who_can(:see).include?(@debbie).should be_false
|
77
77
|
end
|
78
78
|
|
79
|
-
it "should throw an error when using :see with other permissions"
|
79
|
+
it "should throw an error when using :see with other permissions"
|
80
80
|
|
81
|
+
it "should throw a warning when using all_who_can" do
|
82
|
+
@thing.should_receive :warn
|
83
|
+
@thing.all_who_can(:write)
|
81
84
|
end
|
82
|
-
|
83
85
|
end
|
84
86
|
|
85
87
|
end
|
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe ActsPermissive::PermissiveUser do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@widget =
|
9
|
-
@thing =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@widget = FactoryGirl.create :widget
|
9
|
+
@thing = FactoryGirl.create :thing
|
10
10
|
@admin_circle = @admin.build_circle :name => "blah", :objects => [@widget]
|
11
11
|
@user_circle = @user.build_circle :name => "yada", :objects => [@thing], :mask => 31
|
12
12
|
end
|
@@ -77,10 +77,39 @@ describe ActsPermissive::PermissiveUser do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should return false for a user without permissions" do
|
80
|
-
new_user =
|
80
|
+
new_user = FactoryGirl.create :user
|
81
81
|
new_user.can?(:see => @user_circle).should be_false
|
82
82
|
new_user.can?(:read, :in => @user_circle).should be_false
|
83
83
|
end
|
84
|
+
|
85
|
+
describe "can methods on objects instead of circles" do
|
86
|
+
|
87
|
+
before :each do
|
88
|
+
@new_user = FactoryGirl.create :user
|
89
|
+
@new_user.can!(:read, :in => @admin_circle)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should allow using the can? method on a model" do
|
93
|
+
@new_user.can?(:read, @admin_circle.items.first).should be_true
|
94
|
+
@admin_circle.items.each{|i| @new_user.can?(:read, i).should be_true}
|
95
|
+
@admin_circle.items.each{|i| @new_user.can?(:write, i).should be_false}
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should work with work with more than one object, but throw a warning" do
|
99
|
+
@new_user.should_receive(:warn)
|
100
|
+
@new_user.can?(:read, @admin_circle.items.first, @admin_circle.items.last)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should warn when returning false when no objects or circles are given" do
|
104
|
+
@new_user.should_receive(:warn)
|
105
|
+
@new_user.can?(:read)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should raise an exception if both circles and objects are given" do
|
109
|
+
lambda { @new_user.can?(:read, @admin_circle.items.first, :in => @admin_circle)}.should raise_error
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
84
113
|
end
|
85
114
|
|
86
115
|
describe "permissions methods" do
|
data/spec/sub_class_spec.rb
CHANGED
@@ -3,10 +3,10 @@ require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
3
3
|
describe SubClass do
|
4
4
|
|
5
5
|
before :each do
|
6
|
-
@user =
|
7
|
-
@admin =
|
8
|
-
@thing =
|
9
|
-
@widget =
|
6
|
+
@user = FactoryGirl.create :user
|
7
|
+
@admin = FactoryGirl.create :admin
|
8
|
+
@thing = FactoryGirl.create :thing
|
9
|
+
@widget = FactoryGirl.create :widget
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "class" do
|
@@ -38,8 +38,8 @@ describe SubClass do
|
|
38
38
|
|
39
39
|
describe "query methods" do
|
40
40
|
before :each do
|
41
|
-
@another_thing =
|
42
|
-
@another_widget =
|
41
|
+
@another_thing = FactoryGirl.create :thing
|
42
|
+
@another_widget = FactoryGirl.create :widget
|
43
43
|
@uc = @user.build_circle :class => SubClass, :name => "blah", :objects => [@thing, @another_thing]
|
44
44
|
@ac = @admin.build_circle :class => SubClass, :name => "yada", :objects => [@widget, @another_widget, @thing]
|
45
45
|
end
|
@@ -50,9 +50,9 @@ describe SubClass do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should return the list of users in a circle" do
|
53
|
-
anne =
|
54
|
-
debbie =
|
55
|
-
frank =
|
53
|
+
anne = FactoryGirl.create :user
|
54
|
+
debbie = FactoryGirl.create :user
|
55
|
+
frank = FactoryGirl.create :user
|
56
56
|
anne.can!(:read, :in => @uc)
|
57
57
|
debbie.can!(:read, :write, :in => @uc)
|
58
58
|
frank.can!(:read, :in => @ac)
|
@@ -75,7 +75,7 @@ describe SubClass do
|
|
75
75
|
|
76
76
|
describe "scopes" do
|
77
77
|
before :each do
|
78
|
-
@user =
|
78
|
+
@user = FactoryGirl.create :user
|
79
79
|
@circles = []
|
80
80
|
%w{one two three four five blah yada}.each do |w|
|
81
81
|
@circles << @user.build_circle(:class => SubClass, :name => w)
|
@@ -84,7 +84,7 @@ describe SubClass do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it "should return a list of users" do
|
87
|
-
another_user =
|
87
|
+
another_user = FactoryGirl.create :user
|
88
88
|
another_user.can!(:read, :in => @circles.first)
|
89
89
|
@circles.first.users.include?(@user).should be_true
|
90
90
|
@circles.first.users.include?(another_user).should be_true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_permissive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70238536645680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70238536645680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: uuidtools
|
27
|
-
requirement: &
|
27
|
+
requirement: &70238536644760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70238536644760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &70238536643540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70238536643540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
|
-
requirement: &
|
49
|
+
requirement: &70238536642380 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70238536642380
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: pg
|
60
|
-
requirement: &
|
60
|
+
requirement: &70238536640340 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70238536640340
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: capybara
|
71
|
-
requirement: &
|
71
|
+
requirement: &70238536655020 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70238536655020
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70238536652880 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,21 +87,21 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70238536652880
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: spork
|
93
|
-
requirement: &
|
93
|
+
requirement: &70238536651460 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.9.0
|
98
|
+
version: 0.9.0
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70238536651460
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: guard-rspec
|
104
|
-
requirement: &
|
104
|
+
requirement: &70238536650340 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70238536650340
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: guard-spork
|
115
|
-
requirement: &
|
115
|
+
requirement: &70238536649120 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70238536649120
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: factory_girl_rails
|
126
|
-
requirement: &
|
126
|
+
requirement: &70238536661520 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70238536661520
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: simplecov
|
137
|
-
requirement: &
|
137
|
+
requirement: &70238536655920 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70238536655920
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: growl
|
148
|
-
requirement: &
|
148
|
+
requirement: &70238536671300 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70238536671300
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: fakeweb
|
159
|
-
requirement: &
|
159
|
+
requirement: &70238536669560 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,18 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70238536669560
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: rb-fsevent
|
170
|
+
requirement: &70238536668660 !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: *70238536668660
|
168
179
|
description: Allows for arbitrary permissions on arbitrary collections of objects,
|
169
180
|
rather than system-wide role based management
|
170
181
|
email:
|