diff options
Diffstat (limited to 'actionmailer')
-rwxr-xr-x | actionmailer/Rakefile | 1 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/adv_attr_accessor.rb | 10 |
2 files changed, 8 insertions, 3 deletions
diff --git a/actionmailer/Rakefile b/actionmailer/Rakefile index 51ec9ed6b9..f0dd7b66d7 100755 --- a/actionmailer/Rakefile +++ b/actionmailer/Rakefile @@ -25,6 +25,7 @@ Rake::TestTask.new { |t| t.libs << "test" t.pattern = 'test/*_test.rb' t.verbose = true + t.warning = true } diff --git a/actionmailer/lib/action_mailer/adv_attr_accessor.rb b/actionmailer/lib/action_mailer/adv_attr_accessor.rb index a8b83c5e64..50afe4d742 100644 --- a/actionmailer/lib/action_mailer/adv_attr_accessor.rb +++ b/actionmailer/lib/action_mailer/adv_attr_accessor.rb @@ -8,16 +8,20 @@ module ActionMailer module ClassMethods #:nodoc: def adv_attr_accessor(*names) names.each do |name| + ivar = "@#{name}" + define_method("#{name}=") do |value| - instance_variable_set("@#{name}", value) + instance_variable_set(ivar, value) end define_method(name) do |*parameters| raise ArgumentError, "expected 0 or 1 parameters" unless parameters.length <= 1 if parameters.empty? - instance_variable_get("@#{name}") + if instance_variables.include?(ivar) + instance_variable_get(ivar) + end else - instance_variable_set("@#{name}", parameters.first) + instance_variable_set(ivar, parameters.first) end end end |