active_record_bitmask 0.0.3 → 0.0.4

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
2
  SHA256:
3
- metadata.gz: 83cc7c7817104269769c84be2190c59c2fe2d4501d60844aef239913a1ce1924
4
- data.tar.gz: 2e373579a128366eba6ee1403743f9cf6954720b66bebe10982817e7306e78e3
3
+ metadata.gz: 18a348e5179d4954c4dbdc8cc12c54bd0990bcfd0d9b576491f1b9ba9bb0c9f0
4
+ data.tar.gz: e7dda179cd25bef3f879510da9c89a2d29d8a22cbbf3187ef1993100e5078341
5
5
  SHA512:
6
- metadata.gz: 8f3bae3a299ab90f8f709b59f44aa1befdc7b06e949043fec24f74c2923cb5d93b49ed5f6f517c68ef15c31272843f7e9f6f78cb841ddfcfbb0aed7f0f27a401
7
- data.tar.gz: 63ff0a8977e527a7be95a6e89e37d6ca09e3b19075dd80f89b39b86c5eeabcdab9afa9e75995bdc74f0523069e27f4f2c8d037a282f0034f489980eeb23767ac
6
+ metadata.gz: c6ad230632f8ea3a0cc8999daea7cdd7dca048f86360ca4a13a8d4e928b1b726bdc4d7389322cf6aea4471a93d3959897d7245e9db5ce0859fe5fe17f767bf01
7
+ data.tar.gz: 56cfe27aac0dba743cf84198f0e37c6f9a8868510b698162a56d24cb100079ccc7d9eb8166cd217ab52b2fd33a44bd4dbaf305bb9eb3897a4d1ad2f4849f4851
@@ -0,0 +1,21 @@
1
+ ## 0.0.4
2
+
3
+ * Fixes security alert #9
4
+
5
+ * Query methods supports string arguments #12
6
+
7
+ ## 0.0.3
8
+
9
+ * Enumerize ActiveRecordBitmask::Map #4
10
+
11
+ * Support old rails #5
12
+
13
+ * Run RuboCop on CI. #6
14
+
15
+ ## 0.0.2
16
+
17
+ * Support blank values for checkbox #3
18
+
19
+ ## 0.0.1
20
+
21
+ * first release.
data/Gemfile CHANGED
@@ -4,3 +4,7 @@ gemspec
4
4
 
5
5
  gem 'pry'
6
6
  gem 'rubocop'
7
+ gem 'appraisal'
8
+ gem 'rake'
9
+ gem 'rspec'
10
+ gem 'sqlite3'
data/README.md CHANGED
@@ -24,6 +24,8 @@ Simply declare an existing integer column as a bitmask.
24
24
 
25
25
  ```ruby
26
26
  class Post < ApplicationRecord
27
+ # bitmask attribute is integer column.
28
+ # `t.integer :roles, null: false, default: 0`
27
29
  bitmask(roles: [:administrator, :provider, :guest])
28
30
  end
29
31
  ```
@@ -55,15 +57,45 @@ map.values #=> [1, 2, 4]
55
57
 
56
58
  ### Scopes
57
59
 
58
- #### `with_roles`
60
+ Named scopes are defined when you call `.bitmask(attribute)`.
59
61
 
60
- #### `with_any_roles`
62
+ #### `.with_attribute`
61
63
 
62
- #### `without_roles`
64
+ ```ruby
65
+ # all users with roles
66
+ User.with_roles
67
+
68
+ # all administrators
69
+ User.with_roles(:administrator)
70
+
71
+ # all users who are both administrator and partner
72
+ User.with_roles(:administrator, :partner)
73
+ ```
74
+
75
+ #### `.with_any_attribute`
76
+
77
+ ```ruby
78
+ # all users who are administrator or partner
79
+ User.with_any_roles(:administrator, :partner)
80
+ ```
63
81
 
64
- #### `with_exact_roles`
82
+ #### `.without_attribute`, `.no_attribute`
65
83
 
66
- #### `no_roles`
84
+ ```ruby
85
+ # all users without role
86
+ User.without_roles
87
+ User.no_roles
88
+
89
+ # all users who are not administrator
90
+ User.without_roles(:administrator)
91
+ ```
92
+
93
+ #### `.with_exact_attribute`
94
+
95
+ ```ruby
96
+ # all users who are both administrator and partner and nothing else
97
+ User.with_exact_roles(:administrator, :partner)
98
+ ```
67
99
 
68
100
  ## Development
69
101
 
@@ -14,14 +14,17 @@ Gem::Specification.new do |spec|
14
14
  spec.summary = 'Simple bitmask attribute support for ActiveRecord'
15
15
  spec.homepage = 'https://github.com/alpaca-tc/active_record_bitmask'
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.metadata = {
18
+ 'homepage_uri' => 'https://github.com/alpaca-tc/active_record_bitmask',
19
+ 'changelog_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/blob/master/CHANGELOG.md',
20
+ 'source_code_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/',
21
+ 'bug_tracker_uri' => 'https://github.com/alpaca-tc/active_record_bitmask/issues'
22
+ }
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
25
  f.match(%r{^(test|spec|features)/})
19
26
  end
20
27
  spec.require_paths = ['lib']
21
28
 
22
29
  spec.add_dependency 'activerecord', '>= 5.0'
23
- spec.add_development_dependency 'appraisal'
24
- spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'sqlite3'
27
30
  end
@@ -4,7 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
- gem "activerecord", "~> 5.0.0"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
8
10
  gem "sqlite3", "~> 1.3.6"
11
+ gem "activerecord", "~> 5.0.0"
9
12
 
10
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 5.1.0"
8
12
 
9
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 5.2.0"
8
12
 
9
13
  gemspec path: "../"
@@ -4,6 +4,10 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "pry"
6
6
  gem "rubocop"
7
+ gem "appraisal"
8
+ gem "rake"
9
+ gem "rspec"
10
+ gem "sqlite3"
7
11
  gem "activerecord", "~> 6.0.0"
8
12
 
9
13
  gemspec path: "../"
@@ -13,10 +13,10 @@ module ActiveRecordBitmask
13
13
  if bitmask_attribute?(attribute_name) && values.present?
14
14
  # assert bitmask values
15
15
  map = self.class.bitmask_for(attribute_name)
16
- map.attributes_to_bitmask(values)
16
+ expected_value = map.attributes_to_bitmask(values)
17
+ current_value = map.attributes_to_bitmask(attribute(attribute_name))
17
18
 
18
- current_value = attribute(attribute_name)
19
- values.all? { |value| current_value.include?(value) }
19
+ (current_value & expected_value) == expected_value
20
20
  else
21
21
  super
22
22
  end
@@ -56,6 +56,7 @@ module ActiveRecordBitmask
56
56
  end
57
57
  end
58
58
 
59
+ # rubocop:disable Metrics/CyclomaticComplexity
59
60
  def define_bitmask_scopes(attribute)
60
61
  blank = [0, nil].freeze
61
62
 
@@ -112,6 +113,7 @@ module ActiveRecordBitmask
112
113
  where(attribute => blank)
113
114
  }
114
115
  end
116
+ # rubocop:enable Metrics/CyclomaticComplexity
115
117
  end
116
118
  end
117
119
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordBitmask
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_bitmask
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - alpaca-tc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-24 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,62 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.0'
27
- - !ruby/object:Gem::Dependency
28
- name: appraisal
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: sqlite3
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
27
  description:
84
28
  email:
85
29
  - alpaca-tc@alpaca.tc
@@ -92,6 +36,7 @@ files:
92
36
  - ".rubocop.yml"
93
37
  - ".travis.yml"
94
38
  - Appraisals
39
+ - CHANGELOG.md
95
40
  - Gemfile
96
41
  - README.md
97
42
  - Rakefile
@@ -110,7 +55,11 @@ files:
110
55
  homepage: https://github.com/alpaca-tc/active_record_bitmask
111
56
  licenses:
112
57
  - MIT
113
- metadata: {}
58
+ metadata:
59
+ homepage_uri: https://github.com/alpaca-tc/active_record_bitmask
60
+ changelog_uri: https://github.com/alpaca-tc/active_record_bitmask/blob/master/CHANGELOG.md
61
+ source_code_uri: https://github.com/alpaca-tc/active_record_bitmask/
62
+ bug_tracker_uri: https://github.com/alpaca-tc/active_record_bitmask/issues
114
63
  post_install_message:
115
64
  rdoc_options: []
116
65
  require_paths:
@@ -126,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
75
  - !ruby/object:Gem::Version
127
76
  version: '0'
128
77
  requirements: []
129
- rubygems_version: 3.0.3
78
+ rubygems_version: 3.1.2
130
79
  signing_key:
131
80
  specification_version: 4
132
81
  summary: Simple bitmask attribute support for ActiveRecord