[PATCH 2/4] BZ 802571 don't query provider multiple times

Matt Wagner matt.wagner at redhat.com
Mon Mar 26 15:57:05 UTC 2012


On Fri, Mar 23, 2012 at 09:52:46AM -0400, Tzu-Mainn Chen wrote:
> ---
>  src/app/models/deployment.rb                     |    7 ++++---
>  src/app/views/deployments/_list.html.haml        |    3 ++-
>  src/app/views/deployments/_pretty_view.html.haml |    5 +++--
>  3 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
> index c5654e3..fe02ad3 100644
> --- a/src/app/models/deployment.rb
> +++ b/src/app/models/deployment.rb
> @@ -419,10 +419,11 @@ class Deployment < ActiveRecord::Base
>  
>      json[:owner] = owner.name if owner.present?
>  
> -    if provider
> +    deployment_provider = provider
> +    if deployment_provider
>        json[:provider] = {
> -        :name => provider.provider_type.name,
> -        :id => provider.id,
> +        :name => deployment_provider.provider_type.name,
> +        :id => deployment_provider.id,
>        }
>      end
>  
> diff --git a/src/app/views/deployments/_list.html.haml b/src/app/views/deployments/_list.html.haml
> index d593cc6..1425ceb 100644
> --- a/src/app/views/deployments/_list.html.haml
> +++ b/src/app/views/deployments/_list.html.haml
> @@ -27,6 +27,7 @@
>      });
>  
>  = filter_table(@deployments_header, @deployments) do |deployment|
> +  - deployment_provider = deployment.provider
>    %tr{ :class => cycle('nostripe', 'stripe') }
>      %td{:class => 'checkbox'}
>        - selected = params[:select] == 'all'
> @@ -39,7 +40,7 @@
>      %td{:class => 'center'}= deployment.instances.size
>      %td= link_to deployment.pool.name, pool_path(deployment.pool, :view => :filter)
>      %td= owner_name(deployment)
> -    %td= link_to(deployment.provider.provider_type.name, deployment.provider) if deployment.provider
> +    %td= link_to(deployment_provider.provider_type.name, deployment_provider) if deployment_provider


As discussed on IRC, it's better to do it this way rather than
referencing the association over and over, but it's unlikely to give a
tangible boost, since duplicate calls would just hit the query cache in
Rails.


>  
>  :javascript
>    Conductor.setupPrettyFilterURL(
> diff --git a/src/app/views/deployments/_pretty_view.html.haml b/src/app/views/deployments/_pretty_view.html.haml
> index af0b437..12f8d00 100644
> --- a/src/app/views/deployments/_pretty_view.html.haml
> +++ b/src/app/views/deployments/_pretty_view.html.haml
> @@ -2,10 +2,11 @@
>    - @deployments.in_groups_of(5, false) do |group|
>      %ul.deployment-array.large
>        - group.each do |deployment|
> +        - deployment_provider = deployment.provider
>          %li.deployment
>            %h3.name
>              = link_to deployment.name, deployment_path(deployment)
> -          %span{ :class => "status #{deployment.status}", :title => deployment.as_json[:status_description]}
> +          %span{ :class => "status #{deployment.status}", :title => t("deployments.status.#{deployment.status}")}
>            %dl.statistics
>              %ul
>                %li.uptime
> @@ -19,7 +20,7 @@
>                %li.provider
>                  %dt.instances.count=t'providers.provider'
>                  %dd
> -                  %p.provider= deployment.provider.provider_type.name unless deployment.provider.blank?
> +                  %p.provider= deployment_provider.provider_type.name unless deployment_provider.blank?
>  
>  = render_pagination(@deployments)
>  
> -- 
> 1.7.6.5

ACK.



More information about the aeolus-devel mailing list