Class: RailsBestPractices::Reviews::IsolateSeedDataReview

Inherits:
Review
  • Object
show all
Defined in:
lib/rails_best_practices/reviews/isolate_seed_data_review.rb

Overview

Make sure not to insert data in migration, move them to seed file.

See the best practice details here rails-bestpractices.com/posts/2010/07/24/isolating-seed-data/

Implementation:

Review process:

1. check all assignment nodes,
if the right value is a call node with message "new",
then remember their left value as new variables.

2. check all call nodes,
if the message is "create" or "create!",
then it should be isolated to db seed.
if the message is "save" or "save!",
and the receiver is included in new variables,
then it should be isolated to db seed.

Constant Summary

Constants inherited from Core::Check

Core::Check::ALL_FILES, Core::Check::CAPFILE, Core::Check::CONFIG_FILES, Core::Check::CONTROLLER_FILES, Core::Check::DEPLOY_FILES, Core::Check::GEMFILE_LOCK, Core::Check::HELPER_FILES, Core::Check::INITIALIZER_FILES, Core::Check::MAILER_FILES, Core::Check::MIGRATION_FILES, Core::Check::MODEL_FILES, Core::Check::PARTIAL_VIEW_FILES, Core::Check::ROUTE_FILES, Core::Check::SCHEMA_FILE, Core::Check::SKIP_FILES, Core::Check::VIEW_FILES

Instance Method Summary collapse

Methods inherited from Review

#model_associations, #model_attributes, #models, #remember_variable_use_count, #reset_variable_use_count, #variable, #variable_use_count

Methods inherited from Core::Check

#add_error, debug, debug?, #errors, #is_ignored?, #is_interesting_file?, #method_missing, #parse_file?, #regex_ignored_files, #url, url

Constructor Details

#initialize(options = {}) ⇒ IsolateSeedDataReview

Returns a new instance of IsolateSeedDataReview.



27
28
29
30
# File 'lib/rails_best_practices/reviews/isolate_seed_data_review.rb', line 27

def initialize(options = {})
  super(options)
  @new_variables = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RailsBestPractices::Core::Check