Permalink
Browse files

avoid warnings

This change uses Module.redefine_method as defined in ActiveSupport.
Making Module.define_method public would be as clean in the code, and
would also emit warnings when redefining an association. That is pretty
messy given current tests, so I'm leaving it for someone else to decide
what approach is better.
  • Loading branch information...
1 parent 10834e9 commit 124c97fbe201f810d77f807ce69f37148e903c44 @joshsusser committed Nov 27, 2011
View
4 activerecord/lib/active_record/associations/builder/association.rb
@@ -40,14 +40,14 @@ def define_accessors
def define_readers
name = self.name
- mixin.send(:define_method, name) do |*params|
+ mixin.redefine_method(name) do |*params|
association(name).reader(*params)
end
end
def define_writers
name = self.name
- mixin.send(:define_method, "#{name}=") do |value|
+ mixin.redefine_method("#{name}=") do |value|
association(name).writer(value)
end
end
View
6 activerecord/lib/active_record/associations/builder/belongs_to.rb
@@ -25,14 +25,14 @@ def add_counter_cache_callbacks(reflection)
name = self.name
method_name = "belongs_to_counter_cache_after_create_for_#{name}"
- mixin.send(:define_method, method_name) do
+ mixin.redefine_method(method_name) do
record = send(name)
record.class.increment_counter(cache_column, record.id) unless record.nil?
end
model.after_create(method_name)
method_name = "belongs_to_counter_cache_before_destroy_for_#{name}"
- mixin.send(:define_method, method_name) do
+ mixin.redefine_method(method_name) do
record = send(name)
record.class.decrement_counter(cache_column, record.id) unless record.nil?
end
@@ -48,7 +48,7 @@ def add_touch_callbacks(reflection)
method_name = "belongs_to_touch_after_save_or_destroy_for_#{name}"
touch = options[:touch]
- mixin.send(:define_method, method_name) do
+ mixin.redefine_method(method_name) do
record = send(name)
unless record.nil?
View
4 activerecord/lib/active_record/associations/builder/collection_association.rb
@@ -58,7 +58,7 @@ def define_readers
super
name = self.name
- mixin.send(:define_method, "#{name.to_s.singularize}_ids") do
+ mixin.redefine_method("#{name.to_s.singularize}_ids") do
association(name).ids_reader
end
end
@@ -67,7 +67,7 @@ def define_writers
super
name = self.name
- mixin.send(:define_method, "#{name.to_s.singularize}_ids=") do |ids|
+ mixin.redefine_method("#{name.to_s.singularize}_ids=") do |ids|
association(name).ids_writer(ids)
end
end
View
6 activerecord/lib/active_record/associations/builder/has_many.rb
@@ -28,7 +28,7 @@ def configure_dependency
def define_destroy_dependency_method
name = self.name
- mixin.send(:define_method, dependency_method_name) do
+ mixin.redefine_method(dependency_method_name) do
send(name).each do |o|
# No point in executing the counter update since we're going to destroy the parent anyway
counter_method = ('belongs_to_counter_cache_before_destroy_for_' + self.class.name.downcase).to_sym
@@ -45,15 +45,15 @@ class << o
def define_delete_all_dependency_method
name = self.name
- mixin.send(:define_method, dependency_method_name) do
+ mixin.redefine_method(dependency_method_name) do
send(name).delete_all
end
end
alias :define_nullify_dependency_method :define_delete_all_dependency_method
def define_restrict_dependency_method
name = self.name
- mixin.send(:define_method, dependency_method_name) do
+ mixin.redefine_method(dependency_method_name) do
raise ActiveRecord::DeleteRestrictionError.new(name) unless send(name).empty?
end
end
View
4 activerecord/lib/active_record/associations/builder/has_one.rb
@@ -45,7 +45,7 @@ def dependency_method_name
def define_destroy_dependency_method
name = self.name
- mixin.send(:define_method, dependency_method_name) do
+ mixin.redefine_method(dependency_method_name) do
association(name).delete
end
end
@@ -54,7 +54,7 @@ def define_destroy_dependency_method
def define_restrict_dependency_method
name = self.name
- mixin.send(:define_method, dependency_method_name) do
+ mixin.redefine_method(dependency_method_name) do
raise ActiveRecord::DeleteRestrictionError.new(name) unless send(name).nil?
end
end
View
6 activerecord/lib/active_record/associations/builder/singular_association.rb
@@ -16,15 +16,15 @@ def define_accessors
def define_constructors
name = self.name
- mixin.send(:define_method, "build_#{name}") do |*params, &block|
+ mixin.redefine_method("build_#{name}") do |*params, &block|
association(name).build(*params, &block)
end
- mixin.send(:define_method, "create_#{name}") do |*params, &block|
+ mixin.redefine_method("create_#{name}") do |*params, &block|
association(name).create(*params, &block)
end
- mixin.send(:define_method, "create_#{name}!") do |*params, &block|
+ mixin.redefine_method("create_#{name}!") do |*params, &block|
association(name).create!(*params, &block)
end
end

0 comments on commit 124c97f

Please sign in to comment.