Sha256: 51cd6b7e4ec0caa55dae8396736f248e3d0368af2a1ffa6dfaadfd96ed6d62ef
Contents?: true
Size: 1.23 KB
Versions: 6
Compression:
Stored size: 1.23 KB
Contents
# encoding: utf-8 require 'rails_best_practices/checks/check' module RailsBestPractices module Checks # Check a migration file to make sure not to insert data in migration, move them to seed file. # # Implementation: check if there are :create, :create!, and :new with :save or :save! exist, the migration file needs isolate seed data. class IsolateSeedDataCheck < Check def interesting_nodes [:call, :lasgn, :iasgn] end def interesting_files MIGRATION_FILES end def initialize super @new_variables = [] end def evaluate_start(node) if [:create, :create!].include? node.message add_error("isolate seed data") elsif [:lasgn, :iasgn].include? node.node_type remember_new_variable(node) elsif [:save, :save!].include? node.message add_error("isolate seed data") if new_record?(node) end end private def remember_new_variable(node) unless node.grep_nodes({:node_type => :call, :message => :new}).empty? @new_variables << node.left_value.to_s end end def new_record?(node) @new_variables.include? node.subject.to_s end end end end
Version data entries
6 entries across 6 versions & 1 rubygems