From fbda6a17f9106721083725b552ca228d09db4513 Mon Sep 17 00:00:00 2001 From: dinedine Date: Sun, 8 Aug 2010 15:16:32 +0200 Subject: [PATCH] update benchmark with results on my imac + tweak ui in order to reflect changes about with liquid inheritance --- app/models/extensions/page/parts.rb | 2 + app/models/extensions/page/render.rb | 2 +- app/models/layout.rb | 66 +++++++++++++-------------- app/models/page.rb | 5 +- app/views/admin/pages/_form.html.haml | 37 +++++++++------ config/mongoid.yml | 3 +- perf/benchmark.rb | 7 ++- 7 files changed, 67 insertions(+), 55 deletions(-) diff --git a/app/models/extensions/page/parts.rb b/app/models/extensions/page/parts.rb index 967c4e48..ade0d1c0 100644 --- a/app/models/extensions/page/parts.rb +++ b/app/models/extensions/page/parts.rb @@ -6,6 +6,8 @@ module Models extend ActiveSupport::Concern included do + embeds_many :parts, :class_name => 'PagePart' + before_validation do |p| if p.parts.empty? p.parts << PagePart.build_body_part(p.respond_to?(:body) ? p.body : nil) diff --git a/app/models/extensions/page/render.rb b/app/models/extensions/page/render.rb index 4a7305fa..0131c21e 100644 --- a/app/models/extensions/page/render.rb +++ b/app/models/extensions/page/render.rb @@ -4,9 +4,9 @@ module Models module Render def render(context) - # ::Liquid::Template.parse(self.layout_template) self.template.render(context) + # FIXME : old code based on layout / parts # self.template.render(context) # # if self.layout diff --git a/app/models/layout.rb b/app/models/layout.rb index c470f67c..37974d1d 100644 --- a/app/models/layout.rb +++ b/app/models/layout.rb @@ -1,8 +1,8 @@ class Layout < LiquidTemplate ## associations ## - references_many :pages - embeds_many :parts, :class_name => 'PagePart' + # references_many :pages + # embeds_many :parts, :class_name => 'PagePart' ## callbacks ## # before_save :build_parts_from_value @@ -13,36 +13,36 @@ class Layout < LiquidTemplate ## methods ## - protected - - def build_parts_from_value - if self.value_changed? || self.new_record? - self.parts.each { |p| p.disabled = true } - - self.value.scan(Locomotive::Regexps::CONTENT_FOR).each do |attributes| - slug = attributes[0].strip.downcase - name = slug.humanize - name = I18n.t('attributes.defaults.page_parts.name') if slug == 'layout' - - if part = self.parts.detect { |p| p.slug == slug } - part.name = name if name.present? - part.disabled = false - else - self.parts.build :slug => slug, :name => name || slug - end - end - - # body always first - body = self.parts.detect { |p| p.slug == 'layout' } - self.parts.delete(body) - self.parts.insert(0, body) - - @_update_pages = true if self.value_changed? - end - end - - def update_parts_in_pages - self.pages.each { |p| p.send(:update_parts!, self.parts) } if @_update_pages - end + # protected + # + # def build_parts_from_value + # if self.value_changed? || self.new_record? + # self.parts.each { |p| p.disabled = true } + # + # self.value.scan(Locomotive::Regexps::CONTENT_FOR).each do |attributes| + # slug = attributes[0].strip.downcase + # name = slug.humanize + # name = I18n.t('attributes.defaults.page_parts.name') if slug == 'layout' + # + # if part = self.parts.detect { |p| p.slug == slug } + # part.name = name if name.present? + # part.disabled = false + # else + # self.parts.build :slug => slug, :name => name || slug + # end + # end + # + # # body always first + # body = self.parts.detect { |p| p.slug == 'layout' } + # self.parts.delete(body) + # self.parts.insert(0, body) + # + # @_update_pages = true if self.value_changed? + # end + # end + # + # def update_parts_in_pages + # self.pages.each { |p| p.send(:update_parts!, self.parts) } if @_update_pages + # end end diff --git a/app/models/page.rb b/app/models/page.rb index 8d4ae983..aa6bae72 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -15,15 +15,14 @@ class Page field :published, :type => Boolean, :default => false field :cache_strategy, :default => 'none' - field :layout_template # FIXME: liquid inheritance + field :layout_template # FIXME: added for liquid inheritance # allows newly pages to have a default body attr_accessor :body ## associations ## referenced_in :site - referenced_in :layout - embeds_many :parts, :class_name => 'PagePart' + # referenced_in :layout ## callbacks ## before_validation :normalize_slug diff --git a/app/views/admin/pages/_form.html.haml b/app/views/admin/pages/_form.html.haml index 68e5d105..95e5dcf1 100644 --- a/app/views/admin/pages/_form.html.haml +++ b/app/views/admin/pages/_form.html.haml @@ -6,7 +6,7 @@ = f.input :title - = f.input :layout_id, :as => :select, :collection => current_site.layouts.all.to_a, :input_html => { :data_url => admin_layout_page_parts_url('_id_to_replace_') } + / = f.input :layout_id, :as => :select, :collection => current_site.layouts.all.to_a, :input_html => { :data_url => admin_layout_page_parts_url('_id_to_replace_') } - if not @page.index? and not @page.not_found? = f.input :parent_id, :as => :select, :collection => parent_pages_options, :include_blank => false @@ -23,18 +23,25 @@ = f.input :cache_strategy, :as => :select, :collection => options_for_page_cache_strategy, :include_blank => false -#page-parts - .nav - - @page.parts.each_with_index do |part, index| - = link_to content_tag(:span, part.name), "#parts-#{index + 1}", :id => "control-part-#{part.slug}", :class => "part-#{index} #{'on' if index == 0}", :style => "#{'display: none' if part.disabled?}" - .clear += f.foldable_inputs :name => :code do + = f.custom_input :value, :css => 'code full', :with_label => false do + %code{ :class => 'html' } + = f.text_area :layout_template + / .more + / = link_to t('admin.image_picker.link'), admin_theme_assets_path, :id => 'image-picker-link' - .wrapper - %ul{ :id => "parts" } - = f.fields_for :parts do |g| - %li{ :style => "#{'display: none' if g.object.disabled?}" } - = g.label :value, g.object.name, :style => "display:none" - %code= g.text_area :value - = g.hidden_field :name - = g.hidden_field :slug - = g.hidden_field :disabled, :class => 'disabled' \ No newline at end of file +/ #page-parts +/ .nav +/ - @page.parts.each_with_index do |part, index| +/ = link_to content_tag(:span, part.name), "#parts-#{index + 1}", :id => "control-part-#{part.slug}", :class => "part-#{index} #{'on' if index == 0}", :style => "#{'display: none' if part.disabled?}" +/ .clear +/ +/ .wrapper +/ %ul{ :id => "parts" } +/ = f.fields_for :parts do |g| +/ %li{ :style => "#{'display: none' if g.object.disabled?}" } +/ = g.label :value, g.object.name, :style => "display:none" +/ %code= g.text_area :value +/ = g.hidden_field :name +/ = g.hidden_field :slug +/ = g.hidden_field :disabled, :class => 'disabled' \ No newline at end of file diff --git a/config/mongoid.yml b/config/mongoid.yml index c4c29b91..2513a844 100644 --- a/config/mongoid.yml +++ b/config/mongoid.yml @@ -8,7 +8,8 @@ defaults: &defaults development: <<: *defaults - database: locomotive_dev + # database: locomotive_dev + database: locomotive_le_dev # FIXME: new db for our tests test: <<: *defaults diff --git a/perf/benchmark.rb b/perf/benchmark.rb index e8151cfa..08fb5f9b 100755 --- a/perf/benchmark.rb +++ b/perf/benchmark.rb @@ -59,5 +59,8 @@ Benchmark.bm do |bm| end end -# without liquify (macbook white): User System Total Real -# Rendering page 10k times 22.650000 6.220000 28.870000 ( 30.294338) +# without liquify (macbook white): User System Total Real +# Rendering page 10k times 22.650000 6.220000 28.870000 ( 30.294338) + +# without liquify (imac 27'): User System Total Real +# Rendering page 10k times 13.390000 1.700000 15.090000 ( 15.654966)