rails_best_practices 0.7.5 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +3 -0
- data/lib/rails_best_practices/core/runner.rb +2 -1
- data/lib/rails_best_practices/prepares.rb +9 -1
- data/lib/rails_best_practices/reviews.rb +2 -0
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +2 -2
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +39 -0
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +38 -0
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.yml +2 -0
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +16 -0
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +66 -0
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +74 -0
- metadata +11 -5
    
        data/README.md
    CHANGED
    
    | @@ -108,6 +108,8 @@ Now you can customize this configuration file, the default configuration is as f | |
| 108 108 | 
             
                UseQueryAttributeCheck: { }
         | 
| 109 109 | 
             
                RemoveTrailingWhitespaceCheck: { }
         | 
| 110 110 | 
             
                UseMultipartAlternativeAsContentTypeOfEmailCheck: {}
         | 
| 111 | 
            +
                SimplifyRenderInViewsCheck: {}
         | 
| 112 | 
            +
                SimplifyRenderInControllersCheck: {}
         | 
| 111 113 |  | 
| 112 114 | 
             
            You can remove or comment one review to disable it, and you can change the options.
         | 
| 113 115 |  | 
| @@ -156,6 +158,7 @@ View | |
| 156 158 | 
             
            2. Move code into model
         | 
| 157 159 | 
             
            3. Move code into helper
         | 
| 158 160 | 
             
            4. Replace instance variable with local variable
         | 
| 161 | 
            +
            5. Simplify render in views
         | 
| 159 162 |  | 
| 160 163 | 
             
            Deployment
         | 
| 161 164 |  | 
| @@ -126,7 +126,8 @@ module RailsBestPractices | |
| 126 126 | 
             
                          content = Haml::Engine.new(content).precompiled
         | 
| 127 127 | 
             
                          # remove \xxx characters
         | 
| 128 128 | 
             
                          content.gsub!(/\\\d{3}/, '')
         | 
| 129 | 
            -
                        rescue Haml:: | 
| 129 | 
            +
                        rescue Haml::Error
         | 
| 130 | 
            +
                          # do nothing, just ignore the wrong haml files.
         | 
| 130 131 | 
             
                        end
         | 
| 131 132 | 
             
                      end
         | 
| 132 133 | 
             
                      content
         | 
| @@ -6,7 +6,15 @@ require 'rails_best_practices/prepares/schema_prepare' | |
| 6 6 | 
             
            module RailsBestPractices
         | 
| 7 7 | 
             
              module Prepares
         | 
| 8 8 | 
             
                class <<self
         | 
| 9 | 
            -
                   | 
| 9 | 
            +
                  attr_writer :models, :model_associations, :model_attributes, :mailer_names
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  [:models, :model_associations, :model_attributes, :mailer_names].each do |method_name|
         | 
| 12 | 
            +
                    class_eval <<-EOS
         | 
| 13 | 
            +
                    def #{method_name}
         | 
| 14 | 
            +
                      @#{method_name} ||= []
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                    EOS
         | 
| 17 | 
            +
                  end
         | 
| 10 18 | 
             
                end
         | 
| 11 19 | 
             
              end
         | 
| 12 20 | 
             
            end
         | 
| @@ -22,3 +22,5 @@ require 'rails_best_practices/reviews/dry_bundler_in_capistrano_review' | |
| 22 22 | 
             
            require 'rails_best_practices/reviews/use_say_with_time_in_migrations_review'
         | 
| 23 23 | 
             
            require 'rails_best_practices/reviews/use_query_attribute_review'
         | 
| 24 24 | 
             
            require 'rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review'
         | 
| 25 | 
            +
            require 'rails_best_practices/reviews/simplify_render_in_views_review'
         | 
| 26 | 
            +
            require 'rails_best_practices/reviews/simplify_render_in_controllers_review'
         | 
| @@ -201,8 +201,8 @@ module RailsBestPractices | |
| 201 201 |  | 
| 202 202 | 
             
                    # remove the non foreign keys with only _type column.
         | 
| 203 203 | 
             
                    def remove_only_type_foreign_keys
         | 
| 204 | 
            -
                      @foreign_keys. | 
| 205 | 
            -
                         | 
| 204 | 
            +
                      @foreign_keys.each { |table, foreign_keys|
         | 
| 205 | 
            +
                        foreign_keys.delete_if { |key| key =~ /_type$/ }
         | 
| 206 206 | 
             
                      }
         | 
| 207 207 | 
             
                    end
         | 
| 208 208 |  | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'rails_best_practices/reviews/review'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module RailsBestPractices
         | 
| 5 | 
            +
              module Reviews
         | 
| 6 | 
            +
                # Review a controller file to make sure using simplified syntax for render.
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # See the best practice details here http://rails-bestpractices.com/posts/62-simplify-render-in-controllers.
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # Implementation:
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                # Review process:
         | 
| 13 | 
            +
                #   check all render method calls in controller files,
         | 
| 14 | 
            +
                #   if there is a key 'action', 'template' or 'file' in the argument,
         | 
| 15 | 
            +
                #   then they should be replaced by simplified syntax.
         | 
| 16 | 
            +
                class SimplifyRenderInControllersReview < Review
         | 
| 17 | 
            +
                  def url
         | 
| 18 | 
            +
                    "http://rails-bestpractices.com/posts/62-simplify-render-in-controllers"
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  def interesting_nodes
         | 
| 22 | 
            +
                    [:call]
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  def interesting_files
         | 
| 26 | 
            +
                    CONTROLLER_FILES
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  # check call node in the controller file,
         | 
| 30 | 
            +
                  # if its message is render and the arguments contain a key action, template or file,
         | 
| 31 | 
            +
                  # then it should be replaced by simplified syntax.
         | 
| 32 | 
            +
                  def start_call(call_node)
         | 
| 33 | 
            +
                    if :render == call_node.message && call_node.arguments[1].to_s =~ /"(action|template|file)" =>/
         | 
| 34 | 
            +
                      add_error 'simplify render in controllers'
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'rails_best_practices/reviews/review'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module RailsBestPractices
         | 
| 5 | 
            +
              module Reviews
         | 
| 6 | 
            +
                # Review a view file to make sure using simplified syntax for render.
         | 
| 7 | 
            +
                #
         | 
| 8 | 
            +
                # See the best practice details here http://rails-bestpractices.com/posts/61-simplify-render-in-views.
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # Implementation:
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                # Review process:
         | 
| 13 | 
            +
                #   check all render method calls in view files,
         | 
| 14 | 
            +
                #   if there is a key 'partial' in the argument, then they should be replaced by simplified syntax.
         | 
| 15 | 
            +
                class SimplifyRenderInViewsReview < Review
         | 
| 16 | 
            +
                  def url
         | 
| 17 | 
            +
                    "http://rails-bestpractices.com/posts/61-simplify-render-in-views"
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def interesting_nodes
         | 
| 21 | 
            +
                    [:call]
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  def interesting_files
         | 
| 25 | 
            +
                    VIEW_FILES
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  # check call node in view file,
         | 
| 29 | 
            +
                  # if its message is render and the arguments contain a key partial,
         | 
| 30 | 
            +
                  # then it should be replaced by simplified syntax.
         | 
| 31 | 
            +
                  def start_call(call_node)
         | 
| 32 | 
            +
                    if :render == call_node.message && call_node.arguments[1].to_s =~ /"partial" =>/
         | 
| 33 | 
            +
                      add_error 'simplify render in views'
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
    
        data/rails_best_practices.yml
    CHANGED
    
    
| @@ -83,6 +83,22 @@ describe RailsBestPractices::Reviews::AlwaysAddDbIndexReview do | |
| 83 83 | 
             
                runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (taggings => [tag_id])"
         | 
| 84 84 | 
             
              end
         | 
| 85 85 |  | 
| 86 | 
            +
              it "should always add db index only _id without non related _type column" do
         | 
| 87 | 
            +
                content = <<-EOF
         | 
| 88 | 
            +
                ActiveRecord::Schema.define(:version => 20100603080629) do
         | 
| 89 | 
            +
                  create_table "websites", :force => true do |t|
         | 
| 90 | 
            +
                    t.integer  "user_id"
         | 
| 91 | 
            +
                    t.string   "icon_file_name"
         | 
| 92 | 
            +
                    t.integer  "icon_file_size"
         | 
| 93 | 
            +
                    t.string   "icon_content_type"
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
                end
         | 
| 96 | 
            +
                EOF
         | 
| 97 | 
            +
                runner.review('db/schema.rb', content)
         | 
| 98 | 
            +
                runner.should have(1).errors
         | 
| 99 | 
            +
                runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (websites => [user_id])"
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
             | 
| 86 102 | 
             
              it "should not always add db index with column has no id" do
         | 
| 87 103 | 
             
                content = <<-EOF
         | 
| 88 104 | 
             
                ActiveRecord::Schema.define(:version => 20100603080629) do
         | 
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe RailsBestPractices::Reviews::SimplifyRenderInControllersReview do
         | 
| 4 | 
            +
              let(:runner) { RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::SimplifyRenderInControllersReview.new) }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              it "should simplify render action view" do
         | 
| 7 | 
            +
                content =<<-EOF
         | 
| 8 | 
            +
                def edit
         | 
| 9 | 
            +
                  render :action => :edit
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                EOF
         | 
| 12 | 
            +
                runner.review("app/controllers/posts_controller.rb", content)
         | 
| 13 | 
            +
                runner.should have(1).errors
         | 
| 14 | 
            +
                runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - simplify render in controllers"
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              it "should simplify render actions's template" do
         | 
| 18 | 
            +
                content =<<-EOF
         | 
| 19 | 
            +
                def edit
         | 
| 20 | 
            +
                  render :template => 'books/edit'
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                EOF
         | 
| 23 | 
            +
                runner.review("app/controllers/posts_controller.rb", content)
         | 
| 24 | 
            +
                runner.should have(1).errors
         | 
| 25 | 
            +
                runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - simplify render in controllers"
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              it "should simplify render an arbitrary file" do
         | 
| 29 | 
            +
                content =<<-EOF
         | 
| 30 | 
            +
                def edit
         | 
| 31 | 
            +
                  render :file => '/path/to/rails/app/views/books/edit'
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
                EOF
         | 
| 34 | 
            +
                runner.review("app/controllers/posts_controller.rb", content)
         | 
| 35 | 
            +
                runner.should have(1).errors
         | 
| 36 | 
            +
                runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - simplify render in controllers"
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              it "should not simplify render action view" do
         | 
| 40 | 
            +
                content =<<-EOF
         | 
| 41 | 
            +
                render :edit
         | 
| 42 | 
            +
                EOF
         | 
| 43 | 
            +
                runner.review("app/controllers/posts_controller", content)
         | 
| 44 | 
            +
                runner.should have(0).errors
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it "should not simplify render actions's template" do
         | 
| 48 | 
            +
                content =<<-EOF
         | 
| 49 | 
            +
                def edit
         | 
| 50 | 
            +
                  render 'books/edit'
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
                EOF
         | 
| 53 | 
            +
                runner.review("app/controllers/posts_controller.rb", content)
         | 
| 54 | 
            +
                runner.should have(0).errors
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              it "should not simplify render an arbitrary file" do
         | 
| 58 | 
            +
                content =<<-EOF
         | 
| 59 | 
            +
                def edit
         | 
| 60 | 
            +
                  render '/path/to/rails/app/views/books/edit'
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
                EOF
         | 
| 63 | 
            +
                runner.review("app/controllers/posts_controller.rb", content)
         | 
| 64 | 
            +
                runner.should have(0).errors
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
            end
         | 
| @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe RailsBestPractices::Reviews::SimplifyRenderInViewsReview do
         | 
| 4 | 
            +
              let(:runner) { RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::SimplifyRenderInViewsReview.new) }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              it "should simplify render simple partial" do
         | 
| 7 | 
            +
                content =<<-EOF
         | 
| 8 | 
            +
                <%= render :partial => 'sidebar' %>
         | 
| 9 | 
            +
                EOF
         | 
| 10 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 11 | 
            +
                runner.should have(1).errors
         | 
| 12 | 
            +
                runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              it "should simplify render partial with object" do
         | 
| 16 | 
            +
                content =<<-EOF
         | 
| 17 | 
            +
                <%= render :partial => 'posts/post', :object => @post %>
         | 
| 18 | 
            +
                EOF
         | 
| 19 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 20 | 
            +
                runner.should have(1).errors
         | 
| 21 | 
            +
                runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              it "should simplify render partial with collection" do
         | 
| 25 | 
            +
                content =<<-EOF
         | 
| 26 | 
            +
                <%= render :partial => 'posts', :collection => @posts %>
         | 
| 27 | 
            +
                EOF
         | 
| 28 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 29 | 
            +
                runner.should have(1).errors
         | 
| 30 | 
            +
                runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              it "should simplify render partial with local variables" do
         | 
| 34 | 
            +
                content =<<-EOF
         | 
| 35 | 
            +
                <%= render :partial => 'comments/comment', :locals => { :parent => post } %>
         | 
| 36 | 
            +
                EOF
         | 
| 37 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 38 | 
            +
                runner.should have(1).errors
         | 
| 39 | 
            +
                runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              it "should not simplify render simple partial" do
         | 
| 43 | 
            +
                content =<<-EOF
         | 
| 44 | 
            +
                <%= render 'sidebar' %>
         | 
| 45 | 
            +
                <%= render 'shared/sidebar' %>
         | 
| 46 | 
            +
                EOF
         | 
| 47 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 48 | 
            +
                runner.should have(0).errors
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              it "should not simplify render partial with object" do
         | 
| 52 | 
            +
                content =<<-EOF
         | 
| 53 | 
            +
                <%= render @post %>
         | 
| 54 | 
            +
                EOF
         | 
| 55 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 56 | 
            +
                runner.should have(0).errors
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              it "should not simplify render partial with collection" do
         | 
| 60 | 
            +
                content =<<-EOF
         | 
| 61 | 
            +
                <%= render @posts %>
         | 
| 62 | 
            +
                EOF
         | 
| 63 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 64 | 
            +
                runner.should have(0).errors
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              it "should not simplify render partial with local variables" do
         | 
| 68 | 
            +
                content =<<-EOF
         | 
| 69 | 
            +
                <%= render 'comments/comment', :parent => post %>
         | 
| 70 | 
            +
                EOF
         | 
| 71 | 
            +
                runner.review('app/views/posts/index.html.erb', content)
         | 
| 72 | 
            +
                runner.should have(0).errors
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rails_best_practices
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 63
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0. | 
| 8 | 
            +
              - 8
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 0.8.0
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Richard Huang
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011- | 
| 18 | 
            +
            date: 2011-04-23 00:00:00 +08:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -247,6 +247,8 @@ files: | |
| 247 247 | 
             
            - lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb
         | 
| 248 248 | 
             
            - lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb
         | 
| 249 249 | 
             
            - lib/rails_best_practices/reviews/review.rb
         | 
| 250 | 
            +
            - lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb
         | 
| 251 | 
            +
            - lib/rails_best_practices/reviews/simplify_render_in_views_review.rb
         | 
| 250 252 | 
             
            - lib/rails_best_practices/reviews/use_before_filter_review.rb
         | 
| 251 253 | 
             
            - lib/rails_best_practices/reviews/use_model_association_review.rb
         | 
| 252 254 | 
             
            - lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb
         | 
| @@ -288,6 +290,8 @@ files: | |
| 288 290 | 
             
            - spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb
         | 
| 289 291 | 
             
            - spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb
         | 
| 290 292 | 
             
            - spec/rails_best_practices/reviews/review_spec.rb
         | 
| 293 | 
            +
            - spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb
         | 
| 294 | 
            +
            - spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb
         | 
| 291 295 | 
             
            - spec/rails_best_practices/reviews/use_before_filter_review_spec.rb
         | 
| 292 296 | 
             
            - spec/rails_best_practices/reviews/use_model_association_review_spec.rb
         | 
| 293 297 | 
             
            - spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb
         | 
| @@ -378,6 +382,8 @@ test_files: | |
| 378 382 | 
             
            - spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb
         | 
| 379 383 | 
             
            - spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb
         | 
| 380 384 | 
             
            - spec/rails_best_practices/reviews/review_spec.rb
         | 
| 385 | 
            +
            - spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb
         | 
| 386 | 
            +
            - spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb
         | 
| 381 387 | 
             
            - spec/rails_best_practices/reviews/use_before_filter_review_spec.rb
         | 
| 382 388 | 
             
            - spec/rails_best_practices/reviews/use_model_association_review_spec.rb
         | 
| 383 389 | 
             
            - spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb
         |