flexible_enum 0.4.0 → 0.4.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: fd44f960187787c1fba3e7e58fc8a10797fb53a4
4
- data.tar.gz: 3eb76c05d70ac78f139ba37adc28da37f1c19e77
3
+ metadata.gz: 261435611285df8117f8eb4507968098af93009c
4
+ data.tar.gz: b1cfddfb7d6e0829f8864ff2794619a2bb58bf59
5
5
  SHA512:
6
- metadata.gz: a1bafc6bc31b3fffd78ed8009ad0f34f9042933ae1e51130e08da9e4477d2c5680c61fa095070dda03bf31a87ba1bb7468c7bf8de21af4195280d59c0b715473
7
- data.tar.gz: 886b3797babe232b1d82c1c7be6267263c48b372af5db846a14760f5fa374795160a33945f9b77cc1e507b57ffa4d7ef9d13a83d0f7f8cd217b06c4c94bf3e65
6
+ metadata.gz: 8768a09ca2910c8d36ebb3eb155702158ed6f74cce6d8f9b4e0a02a0d0248c648839c06c4fa4ee3ab39d74ce0b1eead390459c7701b882ac5dfcac8041417419
7
+ data.tar.gz: b30f0f5dbbe17899be3e5b2beb7602d11fc310bc25c1a6dfed034357a5433d37ef1bf8688941ff8da7297559f80c697f40daca53ed66c4bf13cb2a86ab394607
data/.travis.yml CHANGED
@@ -1,5 +1,16 @@
1
1
  ---
2
2
  language: ruby
3
- rvm: 2.1.2
4
- before_script: bundle exec appraisal install
5
- script: bundle exec appraisal rspec
3
+ rvm:
4
+ - 2.1.8
5
+ - 2.2.4
6
+ - 2.3.0
7
+ gemfile:
8
+ - gemfiles/rails_4.1.gemfile
9
+ - gemfiles/rails_4.2.gemfile
10
+ - gemfiles/rails_5.0.gemfile
11
+ script: bundle exec rspec spec
12
+ matrix:
13
+ fast_finish: true
14
+ exclude:
15
+ - rvm: 2.1.8
16
+ gemfile: gemfiles/rails_5.0.gemfile
data/Appraisals CHANGED
@@ -5,3 +5,7 @@ end
5
5
  appraise "rails-4.2" do
6
6
  gem "rails", "~> 4.2.1"
7
7
  end
8
+
9
+ appraise "rails-5.0" do
10
+ gem "rails", "~> 5.0.0.beta3"
11
+ end
data/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@ Current release (in development)
3
3
 
4
4
  * ...
5
5
 
6
+ 0.4.1
7
+ -----
8
+
9
+ * Add support for Rails 5. #33
10
+
11
+ *Alex Robbin*
12
+ * Add inverse scopes. #32
13
+
14
+ *Zach Fletcher*
15
+
6
16
  0.4.0
7
17
  -----
8
18
 
data/README.md CHANGED
@@ -202,6 +202,24 @@ CashRegister.drawer_position_opened # => CashRegister.where(drawer_position: 0)
202
202
  CashRegister.drawer_position_closed # => CashRegister.where(drawer_position: 1)
203
203
  ```
204
204
 
205
+ Inverse scopes can be added by setting the :inverse configuration parameter:
206
+
207
+ ```ruby
208
+ class Car < ActiveRecord::Base
209
+ flexible_enum :fuel_type do
210
+ gasoline 0
211
+ diesel 1
212
+ electric 2, inverse: :carbon_emitter
213
+ end
214
+ end
215
+
216
+ gas = Car.create(fuel_type: Car::GASOLINE)
217
+ diesel = Car.create(fuel_type: Car::DIESEL)
218
+ electric = Car.create(fuel_type: Car::ELECTRIC)
219
+
220
+ Car.carbon_emitter # => [gasoline, diesel]
221
+ ```
222
+
205
223
  ### Note about default scopes
206
224
 
207
225
  Be careful when using default scopes on FlexibleEnum columns. Since FlexibleEnum provides scopes for enum values, setting a `default_scope` on a FlexibleEnum column will result in conflicts. For example, given this model:
@@ -21,8 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^spec/})
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "activesupport", "~> 4.1"
24
+ spec.add_dependency "activesupport", ">= 4.1"
25
25
 
26
+ spec.add_development_dependency "activerecord"
26
27
  spec.add_development_dependency "appraisal"
27
28
  spec.add_development_dependency "bundler", "~> 1.3"
28
29
  spec.add_development_dependency "fury"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "~> 5.0.0.beta3"
6
+
7
+ gemspec :path => "../"
@@ -7,6 +7,12 @@ module FlexibleEnum
7
7
  add_class_method(scope_name(element_name)) do
8
8
  where(configurator.attribute_name => element_config[:value])
9
9
  end
10
+
11
+ if element_config[:inverse]
12
+ add_class_method(scope_name(element_config[:inverse])) do
13
+ where.not(configurator.attribute_name => element_config[:value])
14
+ end
15
+ end
10
16
  end
11
17
  end
12
18
 
@@ -1,3 +1,3 @@
1
1
  module FlexibleEnum
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
data/spec/scopes_spec.rb CHANGED
@@ -10,6 +10,14 @@ describe "scopes" do
10
10
  expect(CashRegister.unknown).to be_empty
11
11
  end
12
12
 
13
+ it "builds scopes for inverse elements" do
14
+ unknowns = CashRegister.create!(status: CashRegister::UNKNOWN)
15
+ actives = CashRegister.create!(status: CashRegister::ACTIVE)
16
+ alarms = CashRegister.create!(status: CashRegister::ALARM)
17
+
18
+ expect(CashRegister.known).to contain_exactly(actives, alarms)
19
+ end
20
+
13
21
  it "builds scopes with prefixed names for each namespaced element" do
14
22
  opened = CashRegister.new.tap(&:open!)
15
23
  closed = CashRegister.new.tap(&:close!)
@@ -17,4 +25,11 @@ describe "scopes" do
17
25
  expect(CashRegister.drawer_position_opened).to contain_exactly(opened)
18
26
  expect(CashRegister.drawer_position_closed).to contain_exactly(closed)
19
27
  end
28
+
29
+ it "builds inverse scopes with prefixed names for each namespaced element" do
30
+ opened = CashRegister.new.tap(&:open!)
31
+ closed = CashRegister.new.tap(&:close!)
32
+
33
+ expect(CashRegister.drawer_position_not_open).to contain_exactly(closed)
34
+ end
20
35
  end
data/spec/spec_helper.rb CHANGED
@@ -34,7 +34,7 @@ class CashRegister < ActiveRecord::Base
34
34
  end
35
35
 
36
36
  flexible_enum :drawer_position, :namespace => "DrawerPositions" do
37
- opened 0, setter: :open!
37
+ opened 0, setter: :open!, inverse: :not_open
38
38
  closed 1, setter: :close!
39
39
  end
40
40
 
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexible_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Daubert
8
8
  - Alex Robbin
9
- - Adam Prescott
10
9
  - Matthew Daubert
10
+ - Adam Prescott
11
11
  - Alex Robbin
12
12
  - Sean Santry
13
13
  - Chad Dressler
14
14
  - Adam Prescott
15
+ - Zach Fletcher
15
16
  - David Larrabee
16
17
  - Sean Santry
17
18
  - jon.zeppieri
@@ -21,22 +22,36 @@ authors:
21
22
  autorequire:
22
23
  bindir: bin
23
24
  cert_chain: []
24
- date: 2015-09-28 00:00:00.000000000 Z
25
+ date: 2016-04-15 00:00:00.000000000 Z
25
26
  dependencies:
26
27
  - !ruby/object:Gem::Dependency
27
28
  name: activesupport
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - "~>"
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '4.1'
33
34
  type: :runtime
34
35
  prerelease: false
35
36
  version_requirements: !ruby/object:Gem::Requirement
36
37
  requirements:
37
- - - "~>"
38
+ - - ">="
38
39
  - !ruby/object:Gem::Version
39
40
  version: '4.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
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'
40
55
  - !ruby/object:Gem::Dependency
41
56
  name: appraisal
42
57
  requirement: !ruby/object:Gem::Requirement
@@ -125,12 +140,13 @@ description: Helpers for enum-like fields
125
140
  email:
126
141
  - matt.daubert@meyouhealth.com
127
142
  - alex.robbin@meyouhealth.com
128
- - adam@aprescott.com
129
143
  - mdaubert@gmail.com
144
+ - adam@aprescott.com
130
145
  - alex@robbinsweb.biz
131
146
  - sean.santry@meyouhealth.com
132
147
  - chad@dresslerfamily.com
133
148
  - adam.prescott@meyouhealth.com
149
+ - zach.fletcher@meyouhealth.com
134
150
  - david.larrabee@meyouhealth.com
135
151
  - sean@seansantry.com
136
152
  - jon.zeppieri@meyouhealth.com
@@ -153,6 +169,7 @@ files:
153
169
  - flexible_enum.gemspec
154
170
  - gemfiles/rails_4.1.gemfile
155
171
  - gemfiles/rails_4.2.gemfile
172
+ - gemfiles/rails_5.0.gemfile
156
173
  - lib/flexible_enum.rb
157
174
  - lib/flexible_enum/abstract_configurator.rb
158
175
  - lib/flexible_enum/configuration.rb
@@ -194,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
211
  version: '0'
195
212
  requirements: []
196
213
  rubyforge_project:
197
- rubygems_version: 2.4.5.1
214
+ rubygems_version: 2.5.1
198
215
  signing_key:
199
216
  specification_version: 4
200
217
  summary: Helpers for enum-like fields