summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMislav Marohnić <mislav.marohnic@gmail.com>2010-08-29 14:03:34 +0200
committerMislav Marohnić <mislav.marohnic@gmail.com>2010-08-29 14:03:34 +0200
commit18479a29ad6dacfad84ff0de75edd0c81dc74051 (patch)
treeba3e8ee720c7d0075b2c333b4c7f92209b7dceee
parent206136f89e8d01e8bc3f8564bf4251a6f6976d37 (diff)
downloadhashie-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.rb1
-rw-r--r--spec/hashie/dash_spec.rb10
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