Skip to content

Commit

Permalink
Use element name local in generators (#1556)
Browse files Browse the repository at this point in the history
* Use element name as local variable in element generator

* Generate nested elements in a fast way

By using the render collection short cut Rails uses template caching to speed up rendering the nested elements collection.
  • Loading branch information
tvdeyen authored Mar 29, 2019
1 parent 4b0e6e5 commit e8b527e
Show file tree
Hide file tree
Showing 18 changed files with 44 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class ElementsGenerator < Base
def create_partials
@elements = load_alchemy_yaml('elements.yml')
return unless @elements

@elements.each do |element|
@element = element
@contents = element["contents"] || []
Expand Down
8 changes: 3 additions & 5 deletions lib/rails/generators/alchemy/elements/templates/view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%%- cache(element) do -%>
<%%= element_view_for(element) do |el| -%>
<%%- cache(<%= @element_name %>_view) do -%>
<%%= element_view_for(<%= @element_name %>_view) do |el| -%>
<%- @contents.each do |content| -%>
<%- if @contents.length > 1 -%>
<div class="<%= content["name"] %>">
Expand All @@ -10,9 +10,7 @@
<%- end -%>
<%- end -%>
<%- if @element['nestable_elements'].present? -%>
<%% element.nested_elements.available.each do |nested_element| %>
<%%= render_element(nested_element) %>
<%% end %>
<%%= render <%= @element_name %>_view.nested_elements.available %>
<%- end -%>
<%%- end -%>
<%%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
- cache(element) do
= element_view_for(element) do |el|
- cache(<%= @element_name -%>_view) do
= element_view_for(<%= @element_name -%>_view) do |el|
<%- @contents.each do |content| -%>
<%- if @contents.length > 1 -%>
.<%= content["name"] %>
Expand All @@ -9,6 +9,5 @@
<%- end -%>
<%- end -%>
<%- if @element['nestable_elements'].present? -%>
- element.nested_elements.available.each do |nested_element|
= render_element(nested_element)
= render <%= @element_name -%>_view.nested_elements.available
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
- cache(element) do
= element_view_for(element) do |el|
- cache(<%= @element_name -%>_view) do
= element_view_for(<%= @element_name -%>_view) do |el|
<%- @contents.each do |content| -%>
<%- if @contents.length > 1 -%>
.<%= content["name"] %>
Expand All @@ -9,6 +9,5 @@
<%- end -%>
<%- end -%>
<%- if @element['nestable_elements'].present? -%>
- element.nested_elements.available.each do |nested_element|
= render_element(nested_element)
= render <%= @element_name -%>_view.nested_elements.available
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(all_you_can_eat_view) do -%>
<%= element_view_for(all_you_can_eat_view) do |el| -%>
<div class="essence_text">
<%= el.render :essence_text %>
</div>
Expand Down
4 changes: 2 additions & 2 deletions spec/dummy/app/views/alchemy/elements/_bild_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(bild_view) do -%>
<%= element_view_for(bild_view) do |el| -%>
<%= el.render :image %>
<%- end -%>
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(contactform_view) do -%>
<%= element_view_for(contactform_view) do |el| -%>
<div class="mail_from">
<%= el.render :mail_from %>
</div>
Expand Down
4 changes: 2 additions & 2 deletions spec/dummy/app/views/alchemy/elements/_download_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(download_view) do -%>
<%= element_view_for(download_view) do |el| -%>
<%= el.render :file %>
<%- end -%>
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(erb_element_view) do -%>
<%= element_view_for(erb_element_view) do |el| -%>
<%= el.render :text %>
<%- end -%>
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element, class: 'gallery_image') do |el| -%>
<%- cache(gallery_picture_view) do -%>
<%= element_view_for(gallery_picture_view) do |el| -%>
<%= el.render :picture, size: '160x120' %>
<%- end -%>
<%- end -%>
8 changes: 3 additions & 5 deletions spec/dummy/app/views/alchemy/elements/_gallery_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(gallery_view) do -%>
<%= element_view_for(gallery_view) do |el| -%>
<div class="gallery_images">
<%- element.nested_elements.available.each do |nested_element| -%>
<%= render_element(nested_element) %>
<%- end -%>
<%= render gallery_view.nested_elements.available %>
</div>
<%- end -%>
<%- end -%>
4 changes: 2 additions & 2 deletions spec/dummy/app/views/alchemy/elements/_header_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(header_view) do -%>
<%= element_view_for(header_view) do |el| -%>
<%= el.render :image %>
<%- end -%>
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
<h1 id="<%= element_dom_id(element) %>" <%= element_preview_code(element) -%>><%= render_essence_view_by_name(element, 'headline') %></h1>
<%= element_view_for(headline_view, tag: 'h1') do |el| %>
<%= el.render(:headline) %>
<% end %>
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<% element.nested_elements.available.each do |nested_element| %>
<%= render_element(nested_element) %>
<% end %>
<%- cache(left_column_view) do -%>
<%= element_view_for(left_column_view) do |el| -%>
<%= render left_column_view.nested_elements.available %>
<%- end -%>
<%- end -%>
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<% element.nested_elements.available.each do |nested_element| %>
<%= render_element(nested_element) %>
<% end %>
<%- cache(right_column_view) do -%>
<%= element_view_for(right_column_view) do |el| -%>
<%= el.render :title %>
<%= render right_column_view.nested_elements.available %>
<%- end -%>
<%- end -%>
4 changes: 2 additions & 2 deletions spec/dummy/app/views/alchemy/elements/_search_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(search_view) do -%>
<%= element_view_for(search_view) do |el| -%>
<%- end -%>
<%- end -%>
6 changes: 3 additions & 3 deletions spec/dummy/app/views/alchemy/elements/_slider_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%= render element.nested_elements %>
<%- cache(slider_view) do -%>
<%= element_view_for(slider_view) do |el| -%>
<%= render slider_view.nested_elements.available %>
<%- end -%>
<%- end -%>
4 changes: 2 additions & 2 deletions spec/dummy/app/views/alchemy/elements/_text_view.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%- cache(element) do -%>
<%= element_view_for(element) do |el| -%>
<%- cache(text_view) do -%>
<%= element_view_for(text_view) do |el| -%>
<%= el.render :text %>
<%- end -%>
<%- end -%>

0 comments on commit e8b527e

Please sign in to comment.