simon_says 0.3.0.alpha.1 → 0.3.0.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c6bf629f417e1bd66bf820ee52c333aacfe0e25a
4
- data.tar.gz: 340919dff4421094ec54d4b75e0446b54f522a10
2
+ SHA256:
3
+ metadata.gz: ab60ddcb71d25abd747c76c6ab0758b7cb3e2e4bc7cc3fef23cab0b42abc1d1f
4
+ data.tar.gz: bd0e7a95fcf5669a560028034fcf4f15386b00d73d9170bdaab0cb328ee7099f
5
5
  SHA512:
6
- metadata.gz: c2f679703c9bd5fb566ee181498131d069c6ad5e3de83957cb2e8a8a3777a6c194589a399a58e4272906c1e8e89f309101ad23103f1b5e515e7d747edc0c9055
7
- data.tar.gz: 1aae317daf655c2dcbcf425ef2eeeff492212003a4256501f72c5278239aeb8f57b861051a407d8f35af5467e8f2f10466695e9a5eeaec887c3d050c02129ef4
6
+ metadata.gz: 176d279798d67b2ca54c014397766c79ccb735d35c5ff790eb0a57ae3f27be7c4920a1492a4823d7611d7ad3855dec84012a519d0c9a56ec7be97ff943970ff1
7
+ data.tar.gz: '098fb9a5b568ae853a9b7840910777a932a8aa0796a030281acc890b2bdb9006ba87df04b835c394350d2cac1d5d215faf2f139441d97a18ff7506a18e4b2303'
data/.travis.yml CHANGED
@@ -1,8 +1,12 @@
1
1
  language: ruby
2
2
  cache: bundler
3
+ before_install:
4
+ - gem update --system
5
+ - gem install bundler
3
6
  install: bundle install --jobs=3 --retry=3
4
7
  rvm:
5
- - "2.3.3"
6
- - "2.4.0"
8
+ - "2.6.3"
9
+ - "2.5.4"
10
+ - "2.4.6"
7
11
  script:
8
12
  - bundle exec rake test
@@ -93,34 +93,27 @@ module SimonSays
93
93
  RUBY_EVAL
94
94
  end
95
95
 
96
- # Try to declare ActiveRecord scopes or Sequel subsets for finding
97
- # records with a given set of roles
96
+ Roleable.define_orm_scope self, "with_#{name}" do |*args|
97
+ clause = "#{name}_mask & ?"
98
+ values = Roleable.cast_roles_to_ints(roles, *args)
98
99
 
99
- scope_method = respond_to?(:scope) ? :scope : respond_to?(:subset) ? :subset : nil
100
-
101
- if scope_method
102
- send scope_method, "with_#{name}", ->(*args) {
103
- clause = "#{name}_mask & ?"
104
- values = Roleable.roles2ints(roles, *args)
105
-
106
- query = where(clause, values.shift)
107
- query = query.or(where(clause, values.shift)) until values.empty?
108
- query
109
- }
100
+ query = where(clause, values.shift)
101
+ query = query.or(where(clause, values.shift)) until values.empty?
102
+ query
103
+ end
110
104
 
111
- send scope_method, "with_all_#{name}", ->(*args) {
112
- clause = "#{name}_mask & ?"
113
- values = Roleable.roles2ints(roles, *args)
105
+ Roleable.define_orm_scope self, "with_all_#{name}" do |*args|
106
+ clause = "#{name}_mask & ?"
107
+ values = Roleable.cast_roles_to_ints(roles, *args)
114
108
 
115
- query = where(clause, values.shift)
116
- query = query.where(clause, values.shift) until values.empty?
117
- query
118
- }
109
+ query = where(clause, values.shift)
110
+ query = query.where(clause, values.shift) until values.empty?
111
+ query
119
112
  end
120
113
  end
121
114
  end
122
115
 
123
- def self.roles2ints(defined_roles, *args)
116
+ def self.cast_roles_to_ints(defined_roles, *args)
124
117
  values = args.map do |arg|
125
118
  index = defined_roles.index(arg)
126
119
  index ? 2 ** index : nil
@@ -128,5 +121,13 @@ module SimonSays
128
121
 
129
122
  values.tap(&:flatten!)
130
123
  end
124
+
125
+ def self.define_orm_scope(model, name, &block)
126
+ if defined? ActiveRecord
127
+ model.scope name, block
128
+ elsif defined? Sequel
129
+ model.dataset_module { subset name, &block }
130
+ end
131
+ end
131
132
  end
132
133
  end
@@ -1,3 +1,3 @@
1
1
  module SimonSays
2
- VERSION = '0.3.0.alpha.1'
2
+ VERSION = '0.3.0.alpha.3'
3
3
  end
data/simon_says.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "activesupport", ">= 4.0"
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.9"
23
+ spec.add_development_dependency "bundler", "~> 2.0"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rails", ">= 4.0", "< 5.2"
26
26
  spec.add_development_dependency "responders", "~> 2.0"
data/test/test_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
- require 'mocha/mini_test'
1
+ require 'minitest/unit'
2
+ require 'mocha/minitest'
2
3
 
3
4
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
5
  require 'simon_says' # HELLO SIMON
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simon_says
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.alpha.1
4
+ version: 0.3.0.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Coyne
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-10-26 00:00:00.000000000 Z
13
+ date: 2019-05-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '1.9'
35
+ version: '2.0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '1.9'
42
+ version: '2.0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rake
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -236,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
236
  version: 1.3.1
237
237
  requirements: []
238
238
  rubyforge_project:
239
- rubygems_version: 2.6.13
239
+ rubygems_version: 2.7.9
240
240
  signing_key:
241
241
  specification_version: 4
242
242
  summary: Light-weight, declarative authorization and access control for Rails