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

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 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