power_enum 0.11.1 → 1.0.0

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.
data/README.markdown CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  https://github.com/albertosaurus/power_enum
4
4
 
5
- Enumerations for Rails 3.X Done Right.
5
+ Enumerations for Rails 3.1/3.2 Done Right.
6
+
7
+ NOTICE: Version 1.0 removes support from Rails 3.0, as that version of Rails has no longer been supported for
8
+ some time. The last version to support Rails 3.0 was 0.11.1.
6
9
 
7
10
  ## What is this?:
8
11
 
@@ -40,7 +43,7 @@ See "How to use it" below for more information.
40
43
  ## Requirements
41
44
 
42
45
  * Ruby 1.8.7, 1.9.2, 1.9.3, JRuby 1.6+
43
- * Rails 3.0, 3.1, 3.2
46
+ * Rails 3.1, 3.2
44
47
 
45
48
  ## Installation
46
49
 
@@ -100,23 +103,7 @@ from a pre-test Rake task.
100
103
 
101
104
  ### migration
102
105
 
103
- If you're using Rails 3.0, your migration file will look something like this:
104
-
105
- ```ruby
106
- class CreateEnumBookingStatus < ActiveRecord::Migration
107
-
108
- def self.up
109
- create_enum :booking_status
110
- end
111
-
112
- def self.down
113
- remove_enum :booking_status
114
- end
115
-
116
- end
117
- ```
118
-
119
- If you're using Rails 3.1 or later, it will look something like this:
106
+ When you open your migration file, it will look something like this:
120
107
 
121
108
  ```ruby
122
109
  class CreateEnumBookingStatus < ActiveRecord::Migration
@@ -150,6 +137,8 @@ end
150
137
 
151
138
  # It's highly recommended to add a foreign key constraint here.
152
139
  # Ideally, you would use a gem of some sort to handle this.
140
+ # I have been using PgPower https://rubygems.org/gems/pg_power with much
141
+ # success.
153
142
  execute "ALTER TABLE bookings ADD 'bookings_bookings_status_id_fk'"\
154
143
  " FOREIGN KEY (status_id) REFERENCES booking_statuses (id);"
155
144
  ```
@@ -762,7 +751,7 @@ And finally run tests:
762
751
  * Initial Version Copyright (c) 2005 Trevor Squires
763
752
  * Rails 3 Updates Copyright (c) 2010 Pivotal Labs
764
753
  * Initial Test Suite Copyright (c) 2011 Sergey Potapov
765
- * Subsequent Updates Copyright (c) 2011-2012 Arthur Shagall
754
+ * Subsequent Updates Copyright (c) 2011-2013 Arthur Shagall
766
755
 
767
756
  Released under the MIT License. See the LICENSE file for more details.
768
757
 
@@ -8,10 +8,12 @@ class EnumGenerator < Rails::Generators::Base
8
8
  class_option :migration, :type => :boolean, :default => true, :desc => 'Generate migration for the enum'
9
9
  class_option :fixture, :type => :boolean, :default => false, :desc => 'Generate fixture for the enum'
10
10
 
11
+ # Generates the enum ActiveRecord model.
11
12
  def generate_model
12
13
  template 'model.rb.erb', "app/models/#{file_name}.rb"
13
14
  end
14
-
15
+
16
+ # Generates the migration to create the enum table.
15
17
  def generate_migration
16
18
  template migration_template, "db/migrate/#{migration_file_name}.rb" if options.migration?
17
19
  end
@@ -23,21 +25,26 @@ class EnumGenerator < Rails::Generators::Base
23
25
 
24
26
  no_tasks do
25
27
 
28
+ # Returns the file name of the enum model without the .rb extension.
26
29
  def file_name
27
30
  enum_name.underscore
28
31
  end
29
-
32
+
33
+ # Returns the class name of the enum.
30
34
  def enum_class_name
31
35
  file_name.camelize
32
36
  end
33
-
37
+
38
+ # Returns the number of the last migration.
34
39
  def current_migration_number
35
40
  dirname = "#{Rails.root}/db/migrate/[0-9]*_*.rb"
36
41
  Dir.glob(dirname).collect do |file|
37
42
  File.basename(file).split("_").first.to_i
38
43
  end.max.to_i
39
44
  end
40
-
45
+
46
+ # Returns the next upcoming migration number. Sadly, Rails has no API for
47
+ # this, so we're reduced to copying from ActiveRecord::Generators::Migration
41
48
  def next_migration_number
42
49
  # Lifted directly from ActiveRecord::Generators::Migration
43
50
  # Unfortunately, no API is provided by Rails at this time.
@@ -48,21 +55,25 @@ class EnumGenerator < Rails::Generators::Base
48
55
  "%.3d" % next_migration_number
49
56
  end
50
57
  end
51
-
58
+
59
+ # Derives the name for the migration, something like 'create_enum_fruit'
52
60
  def migration_name
53
61
  "create_enum_#{file_name}"
54
62
  end
55
-
63
+
64
+ # Returns the class name of our migration
56
65
  def migration_class_name
57
66
  migration_name.camelize
58
67
  end
59
-
68
+
69
+ # Generates and returns the filename of our migration
60
70
  def migration_file_name
61
71
  "#{next_migration_number}_#{migration_name}"
62
72
  end
63
-
73
+
74
+ # Returns the name of the template file for the migration.
64
75
  def migration_template
65
- Rails.version < '3.1' ? 'rails30_migration.rb.erb' : 'rails31_migration.rb.erb'
76
+ 'rails31_migration.rb.erb'
66
77
  end
67
78
 
68
79
  end
@@ -85,6 +85,7 @@ module PowerEnum::HasEnumerated # :nodoc:
85
85
  :default,
86
86
  :create_scope )
87
87
 
88
+ # Add a reflection for the enumerated attribute.
88
89
  reflection = PowerEnum::Reflection::EnumerationReflection.new(part_id, options, self)
89
90
  self.reflections = self.reflections.merge(part_id => reflection)
90
91
 
@@ -212,6 +213,7 @@ module PowerEnum::HasEnumerated # :nodoc:
212
213
 
213
214
  end #has_enumerated
214
215
 
216
+ # If the lookup failure handler is a method name, wraps it in a lambda.
215
217
  def get_lookup_failure_handler(failure_opt) # :nodoc:
216
218
  if failure_opt.nil?
217
219
  nil
@@ -1,6 +1,9 @@
1
1
  # Copyright (c) 2011 Artem Kuzko
2
+ # Copyright (c) 2013 Zach Belzer
3
+ # Copyright (c) 2013 Arthur Shagall
2
4
  # Released under the MIT license. See LICENSE for details.
3
5
 
6
+ # Used to patch ActiveRecord reflections.
4
7
  module PowerEnum::Reflection
5
8
  extend ActiveSupport::Concern
6
9
 
@@ -33,6 +36,7 @@ module PowerEnum::Reflection
33
36
  end
34
37
  end
35
38
 
39
+ # Reflection class for enum reflections. See ActiveRecord::Reflection
36
40
  class EnumerationReflection < ActiveRecord::Reflection::MacroReflection
37
41
  attr_reader :counter_cache_column
38
42
 
data/lib/testing/rspec.rb CHANGED
@@ -59,6 +59,7 @@ if defined? RSpec
59
59
  end
60
60
  end
61
61
 
62
+ # Returns the class of <tt>enum</tt>, or enum if it's a class.
62
63
  def get_enum_class(enum)
63
64
  if enum.is_a?(Class)
64
65
  enum
@@ -67,6 +68,7 @@ if defined? RSpec
67
68
  end
68
69
  end
69
70
 
71
+ # Validates the given enum.
70
72
  def validate_enum(enum_class, item)
71
73
  case item
72
74
  when String, Symbol, Fixnum
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: power_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,24 +12,24 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-01-09 00:00:00.000000000 Z
15
+ date: 2013-01-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
- - - ! '>='
22
+ - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: 3.0.0
24
+ version: '3.1'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
- - - ! '>='
30
+ - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 3.0.0
32
+ version: '3.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jeweler
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +117,6 @@ files:
117
117
  - lib/generators/enum/USAGE
118
118
  - lib/generators/enum/enum_generator.rb
119
119
  - lib/generators/enum/templates/model.rb.erb
120
- - lib/generators/enum/templates/rails30_migration.rb.erb
121
120
  - lib/generators/enum/templates/rails31_migration.rb.erb
122
121
  - lib/generators/virtual_enumerations_initializer/USAGE
123
122
  - lib/generators/virtual_enumerations_initializer/templates/virtual_enumerations.rb.erb
@@ -145,7 +144,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
144
  version: '0'
146
145
  segments:
147
146
  - 0
148
- hash: -3615049416970020221
147
+ hash: 796684312632035672
149
148
  required_rubygems_version: !ruby/object:Gem::Requirement
150
149
  none: false
151
150
  requirements:
@@ -1,11 +0,0 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration
2
-
3
- def self.up
4
- create_enum :<%=file_name%>
5
- end
6
-
7
- def self.down
8
- remove_enum :<%=file_name%>
9
- end
10
-
11
- end