Sha256: b48a936ae74e0e45fa19a739134d11ce4a7b2774e2ea733c96f5f3f486453dd4
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
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 [:defs, :call, :lasgn] end def interesting_files /db\/migrate\/.*rb/ end def initialize super @new_variables = [] @files = [] @parse = false end def evaluate_start(node) # check duplicate migration because of always_add_db_index_check. if :defs == node.node_type if @files.include? node.file @parse = true if :up == node.message else @files << node.file end end if @parse if [:create, :create!].include? node.message add_error("isolate seed data") elsif :lasgn == node.node_type remember_new_variable(node) elsif [:save, :save!].include? node.message add_error("isolate seed data") if new_record?(node) end end end private def remember_new_variable(node) unless node.grep_nodes({:node_type => :call, :message => :new}).empty? @new_variables << node.subject.to_s end end def new_record?(node) @new_variables.include? node.subject.to_ruby end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails_best_practices-0.2.13 | lib/rails_best_practices/checks/isolate_seed_data_check.rb |