activemodel_flags 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 46ac7c35b1859370a64e3739384db40216cc9321
4
- data.tar.gz: 2905520aecf6cbc6164b9b50f8259b11961de6ab
3
+ metadata.gz: 7dca83b9ff5623785e8b7192d6269fcf66262c0e
4
+ data.tar.gz: dea2ba65e6d0df5b0fbc42a0f317db2eefc3ca0b
5
5
  SHA512:
6
- metadata.gz: 06edeb6d64b39ea2ea1a0deeb6c4edce6a8058d93a1f9ce0c898c7f4ba11fe821b6f3681eee3eda03c6a90daed8715e0a9502e94f42171efacdcb6d6bf1bc1f9
7
- data.tar.gz: 72ad59696fa3f852cb206f2b0dd06fbf1fabeef1e98e13ed64e16c8fa7381ffd45c211b04b2379b92dad2f5bfbc99d5a3afcbc742b51330bc6c284d5e98f4b34
6
+ metadata.gz: e405eec9189bb6139e1f36142a1aef77b0fbfc1330976a6d40ecbacc7545868205623786878d8631bf81e3a029f3bd539e3b3652723793a913bd2213fd3b42a0
7
+ data.tar.gz: 776a5f3bccbcd70d71121cbd2bd7d1eeeb4a719434cc1a6ce62fbc41a705c132e8fda4a22bb457d2beae2783cb8f28dc7d464beb182e1af759f39f152825642e
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ .DS_Store
11
+ /*.gem
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.1.0"
4
+ - "2.2.3"
5
+ script: 'bundle exec rake'
6
+ script: rspec spec
7
+ notifications:
8
+ email:
9
+ on_success: never
data/README.md CHANGED
@@ -12,6 +12,14 @@ The Active Model Flags gem solves this issue by allowing you to arbitrarily set
12
12
  **Table of Contents**
13
13
  * [Installation](#installation)
14
14
  * [Usage](#usage)
15
+ * [Getters](#getters)
16
+ * [Setters](#setters)
17
+ * [Querying](#querying)
18
+ * [Get models that have or don't have the flag set](#get-models-that-have-or-dont-have-the-flag-set)
19
+ * [Get all available flags](#get-all-available-flags)
20
+ * [Set the flags for a group of users](#set-the-flags-for-a-group-of-users)
21
+ * [Reset a particular flag for some users](#reset-a-particular-flag-for-some-users)
22
+ * [Nuke (reset) all flags](#nuke-reset-all-flags)
15
23
  * [Customization](#customization)
16
24
  * [Other Things](#Other_Things)
17
25
 
@@ -101,7 +109,7 @@ end
101
109
  # Returns query list of all users that have been sent a message
102
110
  ```
103
111
 
104
- ### Get all avaialble flags
112
+ ### Get all available flags
105
113
  If you want to now what flags are being used for **debugging purposes** then you can use
106
114
  ```ruby
107
115
  u = User.flags_used
@@ -30,10 +30,10 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.add_development_dependency "rails", ">= 4.0.0"
32
32
 
33
- spec.add_development_dependency "bundler", ">= 1.10"
33
+ spec.add_development_dependency "bundler"
34
34
  spec.add_development_dependency "temping", "~> 3.3.0"
35
35
  spec.add_development_dependency "rake", "~> 10.0"
36
36
  spec.add_development_dependency "rspec", '~> 3.4'
37
- spec.add_development_dependency "sqlite3"
37
+ spec.add_development_dependency "sqlite3", '~> 1.3.11'
38
38
 
39
39
  end
@@ -11,10 +11,10 @@ module ActivemodelFlags
11
11
  #
12
12
  def has_flags
13
13
  include LocalInstanceMethods
14
+ serialize :flags, JSON
14
15
 
15
16
  before_create :init_flags
16
17
  after_initialize :init_flags
17
- serialize :flags, JSON
18
18
 
19
19
  scope :that_have?, -> (key) {
20
20
  where("flags LIKE '%\"#{key}\":true%'")
@@ -86,6 +86,8 @@ module ActivemodelFlags
86
86
  #### setters
87
87
 
88
88
  def has(flag)
89
+ ensure_serialized
90
+
89
91
  old_flags = self.flags
90
92
 
91
93
  self.flags[flag.to_s] = true
@@ -99,12 +101,19 @@ module ActivemodelFlags
99
101
  self.save!
100
102
  end
101
103
 
102
- def hasnt!(flag)
104
+ def hasnt(flag)
105
+ ensure_serialized
106
+
103
107
  old_flags = self.flags
104
108
 
105
109
  self.flags[flag.to_s] = false
106
110
 
107
111
  on_flag_change(old_flags[flag.to_s], self.flags[flag.to_s]) unless old_flags == self.flags
112
+ end
113
+ alias_method :has_not, :hasnt
114
+
115
+ def hasnt!(flag)
116
+ hasnt(flag)
108
117
  self.save!
109
118
  end
110
119
  alias_method :has_not!, :hasnt!
@@ -157,6 +166,12 @@ module ActivemodelFlags
157
166
  self.flags = {} unless self.flags.present?
158
167
  end
159
168
 
169
+ def ensure_serialized
170
+ if self.flags.is_a?(String)
171
+ self.flags = JSON.load(self.flags)
172
+ end
173
+ end
174
+
160
175
  end
161
176
  end
162
177
  end
@@ -1,3 +1,3 @@
1
1
  module ActivemodelFlags
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemodel_flags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay El-Kaake
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-30 00:00:00.000000000 Z
11
+ date: 2016-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.10'
33
+ version: '0'
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.10'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: temping
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: sqlite3
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 1.3.11
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 1.3.11
97
97
  description: |-
98
98
  This gem adds the ability for models to have an unlimited number of custom flags \
99
99
  that are stored within one database column cell instead of several columns.
@@ -104,6 +104,7 @@ extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
106
  - ".gitignore"
107
+ - ".travis.yml"
107
108
  - CODE_OF_CONDUCT.md
108
109
  - Gemfile
109
110
  - LICENSE.txt