Skip to content

Commit

Permalink
Freeze at subclasses level too
Browse files Browse the repository at this point in the history
  • Loading branch information
jodosha committed Aug 1, 2013
1 parent 04a3093 commit d108767
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/lotus/view/dsl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,12 @@ def template(value = nil)
protected
def load!
super
root.freeze
format.freeze

views.each do |v|
v.root.freeze
v.format.freeze
v.template.freeze
end
end
end
end
Expand Down
5 changes: 5 additions & 0 deletions lib/lotus/view/inheritable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ def subclasses
protected
def load!
subclasses.freeze
views.freeze
end

def views
@@views ||= [ self ] + subclasses.to_a
end
end
end
Expand Down
28 changes: 28 additions & 0 deletions test/load_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,40 @@
JsonRenderView.format.frozen?.must_equal true
end

it 'freezes .format for subclasses' do
Articles::RssIndex.format.frozen?.must_equal true
end

it 'freezes .template' do
Articles::Show.template.frozen?.must_equal true
end

it 'freezes .template for subclasses' do
Articles::JsonShow.template.frozen?.must_equal true
end

it 'freezes .subclasses' do
Articles::Index.subclasses.frozen?.must_equal true
end

it 'freezes .subclasses for subclasses' do
Articles::AtomIndex.subclasses.frozen?.must_equal true
end

it 'freezes view .views' do
Articles::Index.send(:views).frozen?.must_equal true
end

it 'freezes .views for subclasses' do
Articles::RssIndex.send(:views).frozen?.must_equal true
end

it 'freezes .registry' do
Articles::Index.send(:registry).frozen?.must_equal true
end

it 'freezes .registry for subclasses' do
Articles::AtomIndex.send(:registry).frozen?.must_equal true
end
end
end

0 comments on commit d108767

Please sign in to comment.