simon_says 0.0.4 → 0.0.27b6
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -3
- data/.travis.yml +1 -7
- data/Gemfile +1 -3
- data/README.md +145 -3
- data/lib/simon_says/authorizer.rb +2 -3
- data/lib/simon_says/version.rb +1 -1
- data/simon_says.gemspec +1 -2
- data/test/rails_app/Gemfile +40 -0
- data/test/rails_app/Gemfile.lock +120 -0
- data/test/rails_app/config/application.rb +0 -1
- data/test/rails_app/config/environments/test.rb +1 -7
- data/test/rails_app/db/schema.rb +2 -2
- data/test/test_helper.rb +0 -5
- metadata +13 -24
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19de05c0bda5120ccdd27df9f861c3d436982c25
|
4
|
+
data.tar.gz: 21ff0c7d067c9edbfeabf8bfb83a6b9be301e183
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fdb85e2380e4505ddcc07e0106f83260d41224021a96411b58bdd162a21c94c2cc2c5a2d97dfb144364ddb342c0e0873f5e7b9c1006d4a9cca16889cf22e558
|
7
|
+
data.tar.gz: 7ae83204bb804a8e9a0fbbe75582c57644a2e60c9a5fab752014c1ffdf011f292bd738f842152a2c65bdb5ae7c5e6baa214b1c7634397e6eb584d49407e644b6
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,10 +4,152 @@
|
|
4
4
|
Logo](https://raw.githubusercontent.com/SimplyBuilt/SimonSays/master/SimonSays.png)
|
5
5
|
|
6
6
|
This gem is a simple, declarative, role-based access control system for Rails that
|
7
|
-
works great with devise! Take a look at the
|
8
|
-
[docs](http://
|
7
|
+
works great with devise! Take a look at the
|
8
|
+
[docs](http://simplybuilt.github.io/SimonSays) for more details!
|
9
9
|
|
10
|
-
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'simon_says'
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
$ bundle
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
|
24
|
+
$ gem install simon_says
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
SimonSays consists of two parts. One is a model concern called
|
29
|
+
`Roleable`. The other is a controller concern called `Authorizer`. The
|
30
|
+
idea is that you give users some set of roles and find and authorize
|
31
|
+
against those roles on a controller (and action) basis.
|
32
|
+
|
33
|
+
### Roleable
|
34
|
+
|
35
|
+
First, we need to define roles. Generally speaking roles will exist on
|
36
|
+
either User models or on relationship models (like a through model linking a
|
37
|
+
User to another resource).
|
38
|
+
|
39
|
+
Here's a quick example:
|
40
|
+
|
41
|
+
class User < ActiveRecord::Base
|
42
|
+
include SimonSays::Roleable
|
43
|
+
|
44
|
+
has_roles :add, :edit, :delete
|
45
|
+
end
|
46
|
+
|
47
|
+
User can now have none or one more roles:
|
48
|
+
|
49
|
+
User.new.roles
|
50
|
+
=> []
|
51
|
+
|
52
|
+
User.new.tap { |u| u.roles = :add, :edit }.roles
|
53
|
+
=> [:add, :edit]
|
54
|
+
|
55
|
+
The roles are stored as an integer. When using `Roleable` you need add a
|
56
|
+
`roles_mask` column. Note that we do not have any generators for this yet.
|
57
|
+
Feel free to fork add them!
|
58
|
+
|
59
|
+
You can customize this attribute using the `:as` option. For example:
|
60
|
+
|
61
|
+
class Admin < ActiveRecord::Base
|
62
|
+
include SimonSays::Roleable
|
63
|
+
|
64
|
+
has_roles :design, :support, :moderator, as: :access
|
65
|
+
end
|
66
|
+
|
67
|
+
Admin.new.access
|
68
|
+
=> []
|
69
|
+
|
70
|
+
Admin.new(access: :support).access
|
71
|
+
=> [:support]
|
72
|
+
|
73
|
+
You can also use `Roleable` on through models. For example:
|
74
|
+
|
75
|
+
class Membership < ActiveRecord::Base
|
76
|
+
include SimonSays::Roleable
|
77
|
+
|
78
|
+
belongs_to :user
|
79
|
+
belongs_to :document
|
80
|
+
|
81
|
+
has_roles :download, :edit, :delete,
|
82
|
+
end
|
83
|
+
|
84
|
+
There will be several methods as well as a scope generated by
|
85
|
+
calling `has_roles`. See below for more details on the methods
|
86
|
+
generated by `Roleable`. Be sure to also checkout the
|
87
|
+
[docs](http://simplybuilt.github.io/SimonSays/SimonSays/Roleable/ClassMethods.html)
|
88
|
+
for more details!
|
89
|
+
|
90
|
+
### Authorizer
|
91
|
+
|
92
|
+
Next up is the `Authorizer`. This concern provides several methods that
|
93
|
+
can be used within your controllers to declaratively find resources and
|
94
|
+
ensuring certain role-based conditions are met.
|
95
|
+
|
96
|
+
*Please note*, certain assumptions are made with `Authorizer`. Building
|
97
|
+
upon the above `User` and `Admin` models, `Authorizer` would assume
|
98
|
+
there is a `current_user` and `current_admin`. If these models
|
99
|
+
correspond to devise scopes this would be the case by default.
|
100
|
+
Additionally there would need to a be an `authenticate_user!` and
|
101
|
+
`authenticate_admin!` method, which devise provides as well.
|
102
|
+
|
103
|
+
Eventually, we would like to see better customization around the
|
104
|
+
authentication aspects. This library is intended to solve the problem of
|
105
|
+
authorization and access control. It is not an authentication library.
|
106
|
+
|
107
|
+
The first step is to include the concern within the
|
108
|
+
`ApplicationController` and to configure the default authorization
|
109
|
+
method:
|
110
|
+
|
111
|
+
class ApplicationController < ActionController::Base
|
112
|
+
include SimonSays::Authorizer
|
113
|
+
end
|
114
|
+
|
115
|
+
Let's start with an example; here we'll create a reports resource that
|
116
|
+
only Admin's with support access to use. The roles are supplied within
|
117
|
+
the `authorize_resource` method. Note that, multiple roles can be
|
118
|
+
supplied; access is granted if one or more are met.
|
119
|
+
|
120
|
+
# routes.rb
|
121
|
+
# Reports resource for Admins
|
122
|
+
resources :reports
|
123
|
+
|
124
|
+
# app/controllers/reports_controller.rb
|
125
|
+
class ReportsController < ApplicationController
|
126
|
+
authorize_resource :admin, :support
|
127
|
+
find_resource :report, except: [:index, :new, :create]
|
128
|
+
end
|
129
|
+
|
130
|
+
Here's another example using the `Membership` through model.
|
131
|
+
|
132
|
+
# routes.rb
|
133
|
+
resources :documents
|
134
|
+
|
135
|
+
# app/controllers/documents_controller.rb
|
136
|
+
class DocumentsController < ApplicationController
|
137
|
+
authenticate :user
|
138
|
+
|
139
|
+
find_and_authorize :documents, :edit, through: :memberships, only: [:edit, :update]
|
140
|
+
find_and_authorize :documents, :delete, through: :memberships, only: :destroy
|
141
|
+
end
|
142
|
+
|
143
|
+
The document model will not be found if the membership relationship does
|
144
|
+
not exist and an `ActiveRecord::NotFound` exception will be raised.
|
145
|
+
|
146
|
+
If the membership record exists, but the role conditions are not met,
|
147
|
+
`Authorizer` will raise a `Denied` exception.
|
148
|
+
|
149
|
+
If the document is found and the user has the access to it. It will be
|
150
|
+
set as the `@document` instance variable. Make sure to checkout the
|
151
|
+
[docs](http://simplybuilt.github.io/SimonSays/SimonSays/Authorizer/ClassMethods.html)
|
152
|
+
for more details!
|
11
153
|
|
12
154
|
## Contributing
|
13
155
|
|
@@ -2,7 +2,7 @@ module SimonSays
|
|
2
2
|
module Authorizer
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
class Denied <
|
5
|
+
class Denied < Exception
|
6
6
|
def initialize(as, required, actual)
|
7
7
|
# TODO i18n for err message (as should be singluarized with 1 flag)
|
8
8
|
super "Access denied; #{required * ', '} role is required. Current access is #{actual * ', '}"
|
@@ -138,8 +138,7 @@ module SimonSays
|
|
138
138
|
scope = send(self.class.default_authorization_scope)
|
139
139
|
|
140
140
|
elsif options[:from]
|
141
|
-
scope = instance_variable_get("@#{options[:from]}")
|
142
|
-
|
141
|
+
scope = instance_variable_get("@#{options[:from]}")
|
143
142
|
else
|
144
143
|
klass = (options[:class_name] || resource).to_s
|
145
144
|
# TODO support array of namespaces?
|
data/lib/simon_says/version.rb
CHANGED
data/simon_says.gemspec
CHANGED
@@ -20,9 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "activesupport", "~> 4.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler", "1.7
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
25
|
spec.add_development_dependency "rails", "~> 4.1"
|
26
|
-
spec.add_development_dependency "responders", "~> 1.0"
|
27
26
|
spec.add_development_dependency "mocha", "~> 1.1"
|
28
27
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
|
4
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
|
+
gem 'rails', '4.1.6'
|
6
|
+
# Use sqlite3 as the database for Active Record
|
7
|
+
gem 'sqlite3'
|
8
|
+
# Use SCSS for stylesheets
|
9
|
+
gem 'sass-rails', '~> 4.0.3'
|
10
|
+
# Use Uglifier as compressor for JavaScript assets
|
11
|
+
gem 'uglifier', '>= 1.3.0'
|
12
|
+
# Use CoffeeScript for .js.coffee assets and views
|
13
|
+
gem 'coffee-rails', '~> 4.0.0'
|
14
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
15
|
+
# gem 'therubyracer', platforms: :ruby
|
16
|
+
|
17
|
+
# Use jquery as the JavaScript library
|
18
|
+
gem 'jquery-rails'
|
19
|
+
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
20
|
+
gem 'turbolinks'
|
21
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
22
|
+
gem 'jbuilder', '~> 2.0'
|
23
|
+
# bundle exec rake doc:rails generates the API under doc/api.
|
24
|
+
gem 'sdoc', '~> 0.4.0', group: :doc
|
25
|
+
|
26
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
27
|
+
gem 'spring', group: :development
|
28
|
+
|
29
|
+
# Use ActiveModel has_secure_password
|
30
|
+
# gem 'bcrypt', '~> 3.1.7'
|
31
|
+
|
32
|
+
# Use unicorn as the app server
|
33
|
+
# gem 'unicorn'
|
34
|
+
|
35
|
+
# Use Capistrano for deployment
|
36
|
+
# gem 'capistrano-rails', group: :development
|
37
|
+
|
38
|
+
# Use debugger
|
39
|
+
# gem 'debugger', group: [:development, :test]
|
40
|
+
|
@@ -0,0 +1,120 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actionmailer (4.1.6)
|
5
|
+
actionpack (= 4.1.6)
|
6
|
+
actionview (= 4.1.6)
|
7
|
+
mail (~> 2.5, >= 2.5.4)
|
8
|
+
actionpack (4.1.6)
|
9
|
+
actionview (= 4.1.6)
|
10
|
+
activesupport (= 4.1.6)
|
11
|
+
rack (~> 1.5.2)
|
12
|
+
rack-test (~> 0.6.2)
|
13
|
+
actionview (4.1.6)
|
14
|
+
activesupport (= 4.1.6)
|
15
|
+
builder (~> 3.1)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
activemodel (4.1.6)
|
18
|
+
activesupport (= 4.1.6)
|
19
|
+
builder (~> 3.1)
|
20
|
+
activerecord (4.1.6)
|
21
|
+
activemodel (= 4.1.6)
|
22
|
+
activesupport (= 4.1.6)
|
23
|
+
arel (~> 5.0.0)
|
24
|
+
activesupport (4.1.6)
|
25
|
+
i18n (~> 0.6, >= 0.6.9)
|
26
|
+
json (~> 1.7, >= 1.7.7)
|
27
|
+
minitest (~> 5.1)
|
28
|
+
thread_safe (~> 0.1)
|
29
|
+
tzinfo (~> 1.1)
|
30
|
+
arel (5.0.1.20140414130214)
|
31
|
+
builder (3.2.2)
|
32
|
+
coffee-rails (4.0.1)
|
33
|
+
coffee-script (>= 2.2.0)
|
34
|
+
railties (>= 4.0.0, < 5.0)
|
35
|
+
coffee-script (2.3.0)
|
36
|
+
coffee-script-source
|
37
|
+
execjs
|
38
|
+
coffee-script-source (1.8.0)
|
39
|
+
erubis (2.7.0)
|
40
|
+
execjs (2.2.2)
|
41
|
+
hike (1.2.3)
|
42
|
+
i18n (0.6.11)
|
43
|
+
jbuilder (2.2.2)
|
44
|
+
activesupport (>= 3.0.0, < 5)
|
45
|
+
multi_json (~> 1.2)
|
46
|
+
jquery-rails (3.1.2)
|
47
|
+
railties (>= 3.0, < 5.0)
|
48
|
+
thor (>= 0.14, < 2.0)
|
49
|
+
json (1.8.1)
|
50
|
+
mail (2.6.1)
|
51
|
+
mime-types (>= 1.16, < 3)
|
52
|
+
mime-types (2.4.2)
|
53
|
+
minitest (5.4.2)
|
54
|
+
multi_json (1.10.1)
|
55
|
+
rack (1.5.2)
|
56
|
+
rack-test (0.6.2)
|
57
|
+
rack (>= 1.0)
|
58
|
+
rails (4.1.6)
|
59
|
+
actionmailer (= 4.1.6)
|
60
|
+
actionpack (= 4.1.6)
|
61
|
+
actionview (= 4.1.6)
|
62
|
+
activemodel (= 4.1.6)
|
63
|
+
activerecord (= 4.1.6)
|
64
|
+
activesupport (= 4.1.6)
|
65
|
+
bundler (>= 1.3.0, < 2.0)
|
66
|
+
railties (= 4.1.6)
|
67
|
+
sprockets-rails (~> 2.0)
|
68
|
+
railties (4.1.6)
|
69
|
+
actionpack (= 4.1.6)
|
70
|
+
activesupport (= 4.1.6)
|
71
|
+
rake (>= 0.8.7)
|
72
|
+
thor (>= 0.18.1, < 2.0)
|
73
|
+
rake (10.3.2)
|
74
|
+
rdoc (4.1.2)
|
75
|
+
json (~> 1.4)
|
76
|
+
sass (3.2.19)
|
77
|
+
sass-rails (4.0.3)
|
78
|
+
railties (>= 4.0.0, < 5.0)
|
79
|
+
sass (~> 3.2.0)
|
80
|
+
sprockets (~> 2.8, <= 2.11.0)
|
81
|
+
sprockets-rails (~> 2.0)
|
82
|
+
sdoc (0.4.1)
|
83
|
+
json (~> 1.7, >= 1.7.7)
|
84
|
+
rdoc (~> 4.0)
|
85
|
+
spring (1.1.3)
|
86
|
+
sprockets (2.11.0)
|
87
|
+
hike (~> 1.2)
|
88
|
+
multi_json (~> 1.0)
|
89
|
+
rack (~> 1.0)
|
90
|
+
tilt (~> 1.1, != 1.3.0)
|
91
|
+
sprockets-rails (2.2.0)
|
92
|
+
actionpack (>= 3.0)
|
93
|
+
activesupport (>= 3.0)
|
94
|
+
sprockets (>= 2.8, < 4.0)
|
95
|
+
sqlite3 (1.3.9)
|
96
|
+
thor (0.19.1)
|
97
|
+
thread_safe (0.3.4)
|
98
|
+
tilt (1.4.1)
|
99
|
+
turbolinks (2.4.0)
|
100
|
+
coffee-rails
|
101
|
+
tzinfo (1.2.2)
|
102
|
+
thread_safe (~> 0.1)
|
103
|
+
uglifier (2.5.3)
|
104
|
+
execjs (>= 0.3.0)
|
105
|
+
json (>= 1.8.0)
|
106
|
+
|
107
|
+
PLATFORMS
|
108
|
+
ruby
|
109
|
+
|
110
|
+
DEPENDENCIES
|
111
|
+
coffee-rails (~> 4.0.0)
|
112
|
+
jbuilder (~> 2.0)
|
113
|
+
jquery-rails
|
114
|
+
rails (= 4.1.6)
|
115
|
+
sass-rails (~> 4.0.3)
|
116
|
+
sdoc (~> 0.4.0)
|
117
|
+
spring
|
118
|
+
sqlite3
|
119
|
+
turbolinks
|
120
|
+
uglifier (>= 1.3.0)
|
@@ -13,11 +13,9 @@ Rails.application.configure do
|
|
13
13
|
config.eager_load = true
|
14
14
|
|
15
15
|
# Configure static asset server for tests with Cache-Control for performance.
|
16
|
-
config.
|
16
|
+
config.serve_static_assets = true
|
17
17
|
config.static_cache_control = 'public, max-age=3600'
|
18
18
|
|
19
|
-
config.active_support.test_order = :random
|
20
|
-
|
21
19
|
# Show full error reports and disable caching.
|
22
20
|
config.consider_all_requests_local = true
|
23
21
|
config.action_controller.perform_caching = false
|
@@ -38,8 +36,4 @@ Rails.application.configure do
|
|
38
36
|
|
39
37
|
# Raises error for missing translations
|
40
38
|
# config.action_view.raise_on_missing_translations = true
|
41
|
-
|
42
|
-
# Use transactional fixtures
|
43
|
-
config.use_transactional_fixtures = true
|
44
|
-
|
45
39
|
end
|
data/test/rails_app/db/schema.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
ActiveRecord::Schema.define(version: 20141017140833) do
|
15
15
|
|
16
16
|
create_table "admin_reports", force: true do |t|
|
17
|
-
t.string "title"
|
17
|
+
t.string "title"
|
18
18
|
t.datetime "created_at"
|
19
19
|
t.datetime "updated_at"
|
20
20
|
end
|
@@ -26,7 +26,7 @@ ActiveRecord::Schema.define(version: 20141017140833) do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
create_table "documents", force: true do |t|
|
29
|
-
t.string "title"
|
29
|
+
t.string "title"
|
30
30
|
t.datetime "created_at"
|
31
31
|
t.datetime "updated_at"
|
32
32
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simon_says
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.27b6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.7
|
33
|
+
version: '1.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.7
|
40
|
+
version: '1.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '4.1'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: responders
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: mocha
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,7 +90,6 @@ extra_rdoc_files: []
|
|
104
90
|
files:
|
105
91
|
- ".gitignore"
|
106
92
|
- ".gitpublish"
|
107
|
-
- ".ruby-version"
|
108
93
|
- ".travis.yml"
|
109
94
|
- Gemfile
|
110
95
|
- Guardfile
|
@@ -123,6 +108,8 @@ files:
|
|
123
108
|
- test/models/admin_test.rb
|
124
109
|
- test/models/membership_test.rb
|
125
110
|
- test/rails_app/.gitignore
|
111
|
+
- test/rails_app/Gemfile
|
112
|
+
- test/rails_app/Gemfile.lock
|
126
113
|
- test/rails_app/README.rdoc
|
127
114
|
- test/rails_app/Rakefile
|
128
115
|
- test/rails_app/app/assets/images/.keep
|
@@ -217,12 +204,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
217
204
|
version: '0'
|
218
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
219
206
|
requirements:
|
220
|
-
- - "
|
207
|
+
- - ">"
|
221
208
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
209
|
+
version: 1.3.1
|
223
210
|
requirements: []
|
224
211
|
rubyforge_project:
|
225
|
-
rubygems_version: 2.4.
|
212
|
+
rubygems_version: 2.4.2
|
226
213
|
signing_key:
|
227
214
|
specification_version: 4
|
228
215
|
summary: Light-weight, declarative authorization and access control for Rails
|
@@ -232,6 +219,8 @@ test_files:
|
|
232
219
|
- test/models/admin_test.rb
|
233
220
|
- test/models/membership_test.rb
|
234
221
|
- test/rails_app/.gitignore
|
222
|
+
- test/rails_app/Gemfile
|
223
|
+
- test/rails_app/Gemfile.lock
|
235
224
|
- test/rails_app/README.rdoc
|
236
225
|
- test/rails_app/Rakefile
|
237
226
|
- test/rails_app/app/assets/images/.keep
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.1.4
|