diff options
author | Mislav Marohnić <mislav.marohnic@gmail.com> | 2010-08-29 14:03:34 +0200 |
---|---|---|
committer | Mislav Marohnić <mislav.marohnic@gmail.com> | 2010-08-29 14:03:34 +0200 |
commit | 18479a29ad6dacfad84ff0de75edd0c81dc74051 (patch) | |
tree | ba3e8ee720c7d0075b2c333b4c7f92209b7dceee | |
parent | 206136f89e8d01e8bc3f8564bf4251a6f6976d37 (diff) | |
download | hashie-18479a29ad6dacfad84ff0de75edd0c81dc74051.tar.gz |
call `super` in Dash.inherited method
One should always call `super` when defining the `inherited` method
to support possible implementations in superclasses.
-rw-r--r-- | lib/hashie/dash.rb | 1 | ||||
-rw-r--r-- | spec/hashie/dash_spec.rb | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/hashie/dash.rb b/lib/hashie/dash.rb index 7b25e50..46f877e 100644 --- a/lib/hashie/dash.rb +++ b/lib/hashie/dash.rb @@ -56,6 +56,7 @@ module Hashie instance_variable_set('@defaults', {}) def self.inherited(klass) + super (@subclasses ||= Set.new) << klass klass.instance_variable_set('@properties', self.properties.dup) klass.instance_variable_set('@defaults', self.defaults.dup) diff --git a/spec/hashie/dash_spec.rb b/spec/hashie/dash_spec.rb index 41793de..577bd65 100644 --- a/spec/hashie/dash_spec.rb +++ b/spec/hashie/dash_spec.rb @@ -1,5 +1,11 @@ require 'spec_helper' +Hashie::Hash.class_eval do + def self.inherited(klass) + klass.instance_variable_set('@inheritance_test', true) + end +end + class DashTest < Hashie::Dash property :first_name property :email @@ -143,4 +149,8 @@ describe Subclassed do described_class.property?(:last_name).should be_true end + it "didn't override superclass inheritance logic" do + described_class.instance_variable_get('@inheritance_test').should be_true + end + end |