enumify 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b5e524f240a067b06540a32326291865c420b85
4
+ data.tar.gz: ee00750660d876fce2e8f5e916cd9549c7e3153d
5
+ SHA512:
6
+ metadata.gz: 2ffc622bd738b6049023cc6b4f0b91ab63b2cfe193b48aed43aa379fd8dd1fa50aacca01969e011f66dd1c572c616995e85285ff30f50d511af59607cb727e0d
7
+ data.tar.gz: 8af5a86231191e753b9436289801dc26c175757d21f28ac79757fb2e0535c6dc51f471f5f82581864eaf3fa8a1e3508b915a56b420c4ca0211383691d0232ecf
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Yonatan Bergman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Readme.md CHANGED
@@ -1,36 +1,43 @@
1
1
  # Enumify [![Build Status](https://secure.travis-ci.org/yonbergman/enumify.png)](http://travis-ci.org/yonbergman/enumify)
2
2
 
3
-
4
- enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums
3
+ Enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums
5
4
 
6
5
  ## Installing
7
6
 
8
7
  Just add the enumify gem to your GemFile
9
8
 
9
+ ```ruby
10
+ gem 'enumify'
11
+ ```
12
+
10
13
  ## How to use
11
14
 
12
15
  Just call the enum function in any ActiveRecord object, the function accepts the field name as the first variable and the possible values as an array
13
16
 
14
- class Event < ActiveRecord::Base
15
- enum :status, [:available, :canceled, :completed]
16
- end
17
+ ```ruby
18
+ class Event < ActiveRecord::Base
19
+ enum :status, [:available, :canceled, :completed]
20
+ end
21
+ ```
17
22
 
18
23
  After that you get several autogenerated commands to use with the enum
19
24
 
20
- # Access through field name
25
+ ```ruby
26
+ # Access through field name
21
27
 
22
- event.status # returns the enum's current value as a symbol
23
- event.status = :canceled # sets the enum's value to canceled (can also get a string)
28
+ event.status # returns the enum's current value as a symbol
29
+ event.status = :canceled # sets the enum's value to canceled (can also get a string)
24
30
 
25
31
 
26
- # Shorthand methods, access through the possible values
32
+ # Shorthand methods, access through the possible values
27
33
 
28
- event.available? # returns true if enum's current status is available
29
- event.canceled! # changes the enum's value to canceled
34
+ event.available? # returns true if enum's current status is available
35
+ event.canceled! # changes the enum's value to canceled
30
36
 
31
- # Get all the possible values
32
-
33
- Event::STATUSES # returns all available status of the enum
37
+ # Get all the possible values
38
+
39
+ Event::STATUSES # returns all available status of the enum
40
+ ```
34
41
 
35
42
  ## Callbacks
36
43
  Another cool feature of enumify is the option to add a callback function that will be called each time the value of the field changes
@@ -38,26 +45,31 @@ This is cool to do stuff like log stuff or create behaviour on state changes
38
45
 
39
46
  All you need to do is add a x_changed method in your class and the enumify will call it
40
47
 
41
- class Event < ActiveRecord::Base
42
- enum :status, [:available, :canceled, :completed]
48
+ ```ruby
49
+ class Event < ActiveRecord::Base
50
+ enum :status, [:available, :canceled, :completed]
43
51
 
44
- def status_changed(old, new)
45
- puts "status changed from #{old} to #{new}"
46
- end
52
+ def status_changed(old, new)
53
+ puts "status changed from #{old} to #{new}"
47
54
  end
48
-
55
+ end
56
+ ```
49
57
 
50
58
  ## Scopes
51
59
  One last thing that the enumify gem does is created scope (formerly nested_scopes) so you can easly query by the enum
52
60
 
53
61
  For example if you want to count all the events that are canceled you can just run
54
62
 
55
- Event.canceled.count
63
+ ```ruby
64
+ Event.canceled.count
65
+ ```
56
66
 
57
67
  In addition you can also use a negation scope to retrieve all the records that are not set to the given value.
58
68
  For example to count all the events that are not canceled you can run
59
69
 
60
- Event.not_canceled.count
70
+ ```ruby
71
+ Event.not_canceled.count
72
+ ```
61
73
 
62
74
  ---
63
75
 
@@ -9,7 +9,17 @@ Gem::Specification.new do |s|
9
9
  s.email = ["yonatanbergman@gmail.com"]
10
10
  s.homepage = "http://github.com/yonbergman/enumify"
11
11
  s.summary = %q{enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums}
12
- s.description = %q{enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums}
12
+ s.description = <<-END
13
+ Enumify lets you add an enum command to ActiveRecord models
14
+
15
+ There are four things that the enumify gems adds to your model
16
+ Validation - The enumify adds a validation to make sure that the field only receives accepted values
17
+ Super Cool Methods - adds ? and ! functions for each enum value (canceled? - is it canceled, canceled! - change the state to canceled)
18
+ Callback support - you can add a x_callback method which will be called each time the status changes
19
+ Scopes - you can easily query for values of the enum
20
+ END
21
+ s.license = 'MIT'
22
+
13
23
 
14
24
  s.rubyforge_project = "enumify"
15
25
 
@@ -42,7 +42,7 @@ module Enumify
42
42
  send("_set_#{parameter.to_s}", opt, true)
43
43
  end
44
44
 
45
- scope opt.to_sym, where(parameter.to_sym => opt.to_s)
45
+ scope opt.to_sym, lambda { where(parameter.to_sym => opt.to_s) }
46
46
  end
47
47
 
48
48
  # We want to first define all the "positive" scopes and only then define
@@ -52,7 +52,7 @@ module Enumify
52
52
  # be used in a joined query with other models that have the same enum field then
53
53
  # it will fail on ambiguous column name.
54
54
  unless respond_to?("not_#{opt}")
55
- scope "not_#{opt}", where("#{self.table_name}.#{parameter} != ?", opt.to_s)
55
+ scope "not_#{opt}", lambda { where("#{self.table_name}.#{parameter} != ?", opt.to_s) }
56
56
  end
57
57
  end
58
58
 
@@ -1,3 +1,3 @@
1
1
  module Enumify
2
- VERSION = "0.0.3"
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,92 +1,90 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: enumify
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - yon
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-06-03 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2013-08-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
32
20
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rspec
36
21
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
46
34
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: activerecord
50
35
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
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: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
60
48
  type: :development
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: sqlite3
64
49
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
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: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
74
62
  type: :development
75
- version_requirements: *id004
76
- description: enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums
77
- email:
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: |2
70
+ Enumify lets you add an enum command to ActiveRecord models
71
+
72
+ There are four things that the enumify gems adds to your model
73
+ Validation - The enumify adds a validation to make sure that the field only receives accepted values
74
+ Super Cool Methods - adds ? and ! functions for each enum value (canceled? - is it canceled, canceled! - change the state to canceled)
75
+ Callback support - you can add a x_callback method which will be called each time the status changes
76
+ Scopes - you can easily query for values of the enum
77
+ email:
78
78
  - yonatanbergman@gmail.com
79
79
  executables: []
80
-
81
80
  extensions: []
82
-
83
81
  extra_rdoc_files: []
84
-
85
- files:
82
+ files:
86
83
  - .gitignore
87
84
  - .rspec
88
85
  - CHANGELOG.md
89
86
  - Gemfile
87
+ - LICENSE
90
88
  - Rakefile
91
89
  - Readme.md
92
90
  - enumify.gemspec
@@ -97,38 +95,30 @@ files:
97
95
  - spec/enumify/enum_spec.rb
98
96
  - spec/spec_helper.rb
99
97
  homepage: http://github.com/yonbergman/enumify
100
- licenses: []
101
-
98
+ licenses:
99
+ - MIT
100
+ metadata: {}
102
101
  post_install_message:
103
102
  rdoc_options: []
104
-
105
- require_paths:
103
+ require_paths:
106
104
  - lib
107
- required_ruby_version: !ruby/object:Gem::Requirement
108
- none: false
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- hash: 3
113
- segments:
114
- - 0
115
- version: "0"
116
- required_rubygems_version: !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- hash: 3
122
- segments:
123
- - 0
124
- version: "0"
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
125
115
  requirements: []
126
-
127
116
  rubyforge_project: enumify
128
- rubygems_version: 1.8.10
117
+ rubygems_version: 2.0.6
129
118
  signing_key:
130
- specification_version: 3
131
- summary: enumify adds an enum command to all ActiveRecord models which enables you to work with string attributes as if they were enums
132
- test_files:
119
+ specification_version: 4
120
+ summary: enumify adds an enum command to all ActiveRecord models which enables you
121
+ to work with string attributes as if they were enums
122
+ test_files:
133
123
  - spec/enumify/enum_spec.rb
134
124
  - spec/spec_helper.rb