power_enum 1.1.1 → 1.1.2

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.tar.gz.sig CHANGED
Binary file
@@ -65,21 +65,23 @@ module ActiveRecord # :nodoc:
65
65
  # Patches Module#const_missing to enable us to dynamically create enum
66
66
  # classes at runtime.
67
67
  def self.patch_const_lookup
68
+ # Make sure we haven't patched Module already
69
+ unless ::Module.respond_to?(:enumerations_original_const_missing)
70
+ # patch Module to support VirtualEnumerations
71
+ ::Module.module_eval do
72
+
73
+ alias_method :enumerations_original_const_missing, :const_missing
74
+
75
+ # Override const_missing to see if VirtualEnumerations can create it.
76
+ def const_missing(const_id)
77
+ # let rails have a go at loading it
78
+ enumerations_original_const_missing(const_id)
79
+ rescue NameError
80
+ # now it's our turn
81
+ ActiveRecord::VirtualEnumerations.synthesize_if_defined(const_id) or raise
82
+ end
68
83
 
69
- # patch Module to support VirtualEnumerations
70
- ::Module.module_eval do
71
-
72
- alias_method :enumerations_original_const_missing, :const_missing
73
-
74
- # Override const_missing to see if VirtualEnumerations can create it.
75
- def const_missing(const_id)
76
- # let rails have a go at loading it
77
- enumerations_original_const_missing(const_id)
78
- rescue NameError
79
- # now it's our turn
80
- ActiveRecord::VirtualEnumerations.synthesize_if_defined(const_id) or raise
81
84
  end
82
-
83
85
  end
84
86
 
85
87
  end
@@ -89,6 +91,7 @@ module ActiveRecord # :nodoc:
89
91
  # each enum or enums with a given set of options.
90
92
  def self.define
91
93
  raise ArgumentError, "#{self.name}: must pass a block to define()" unless block_given?
94
+ patch_const_lookup
92
95
  config = ActiveRecord::VirtualEnumerations::Config.new
93
96
  yield config
94
97
  @config = config # we only overwrite config if no exceptions were thrown
@@ -3,6 +3,9 @@
3
3
 
4
4
  # Generator for PowerEnum
5
5
  class EnumGenerator < Rails::Generators::Base
6
+ require File.expand_path('../enum_generator_helpers/migration_number', __FILE__)
7
+ include EnumGeneratorHelpers::MigrationNumber
8
+
6
9
  source_root File.expand_path('../templates', __FILE__)
7
10
  argument :enum_name, :type => :string
8
11
  class_option :migration, :type => :boolean, :default => true, :desc => 'Generate migration for the enum'
@@ -35,27 +38,6 @@ class EnumGenerator < Rails::Generators::Base
35
38
  file_name.camelize
36
39
  end
37
40
 
38
- # Returns the number of the last migration.
39
- def current_migration_number
40
- dirname = "#{Rails.root}/db/migrate/[0-9]*_*.rb"
41
- Dir.glob(dirname).collect do |file|
42
- File.basename(file).split("_").first.to_i
43
- end.max.to_i
44
- end
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
48
- def next_migration_number
49
- # Lifted directly from ActiveRecord::Generators::Migration
50
- # Unfortunately, no API is provided by Rails at this time.
51
- next_migration_number = current_migration_number + 1
52
- if ActiveRecord::Base.timestamped_migrations
53
- [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
54
- else
55
- "%.3d" % next_migration_number
56
- end
57
- end
58
-
59
41
  # Derives the name for the migration, something like 'create_enum_fruit'
60
42
  def migration_name
61
43
  "create_enum_#{file_name}"
@@ -0,0 +1,27 @@
1
+ module EnumGeneratorHelpers
2
+ # Helper methods to figure out the migration number.
3
+ module MigrationNumber
4
+
5
+ # Returns the number of the last migration.
6
+ def current_migration_number
7
+ dirname = "#{Rails.root}/db/migrate/[0-9]*_*.rb"
8
+ Dir.glob(dirname).collect do |file|
9
+ File.basename(file).split("_").first.to_i
10
+ end.max.to_i
11
+ end
12
+
13
+ # Returns the next upcoming migration number. Sadly, Rails has no API for
14
+ # this, so we're reduced to copying from ActiveRecord::Generators::Migration
15
+ def next_migration_number
16
+ # Lifted directly from ActiveRecord::Generators::Migration
17
+ # Unfortunately, no API is provided by Rails at this time.
18
+ next_migration_number = current_migration_number + 1
19
+ if ActiveRecord::Base.timestamped_migrations
20
+ [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
21
+ else
22
+ "%.3d" % next_migration_number
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -11,7 +11,7 @@ ActiveRecord::VirtualEnumerations.define do |config|
11
11
  # :on_lookup_failure => :enforce_strict,
12
12
  # :name_column => 'name_column',
13
13
  # :alias_name => false {
14
- # # class_evaled_functions
14
+ # # class_eval'ed_functions
15
15
  # }
16
16
  #
17
17
  end
@@ -17,8 +17,6 @@ class PowerEnum < Rails::Engine
17
17
  ActiveRecord::Migration::CommandRecorder.class_eval do
18
18
  include PowerEnum::Migration::CommandRecorder
19
19
  end
20
-
21
- ActiveRecord::VirtualEnumerations.patch_const_lookup
22
20
  end
23
21
 
24
22
  end
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: 1.1.1
4
+ version: 1.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -40,7 +40,7 @@ cert_chain:
40
40
  amZaYUtWM2wwYTFkR2wyUVNMa2pScFFaRDFiRCtVSDdnT3F5N1piZGNzUkJM
41
41
  NEg3VTV6VQpibEtkZEg2dXhDckRTTTdLYWJrelNPVmYKLS0tLS1FTkQgQ0VS
42
42
  VElGSUNBVEUtLS0tLQo=
43
- date: 2013-02-17 00:00:00.000000000 Z
43
+ date: 2013-02-24 00:00:00.000000000 Z
44
44
  dependencies:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: rails
@@ -144,6 +144,7 @@ files:
144
144
  - lib/active_record/virtual_enumerations.rb
145
145
  - lib/generators/enum/USAGE
146
146
  - lib/generators/enum/enum_generator.rb
147
+ - lib/generators/enum/enum_generator_helpers/migration_number.rb
147
148
  - lib/generators/enum/templates/model.rb.erb
148
149
  - lib/generators/enum/templates/rails31_migration.rb.erb
149
150
  - lib/generators/virtual_enumerations_initializer/USAGE
@@ -172,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
173
  version: '0'
173
174
  segments:
174
175
  - 0
175
- hash: -4180923029060958212
176
+ hash: -4143040860677823590
176
177
  required_rubygems_version: !ruby/object:Gem::Requirement
177
178
  none: false
178
179
  requirements:
metadata.gz.sig CHANGED
Binary file