flexible_enum 0.4.0 → 0.4.1

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