lib/seed_dump/perform.rb in seed_dump-0.3.3 vs lib/seed_dump/perform.rb in seed_dump-0.3.4

- old
+ new

@@ -30,11 +30,11 @@ @models.push model if @opts['models'].include?(model) || @opts['models'].empty? end end def dumpAttribute(a_s,r,k,v) - v = r.attribute_for_inspect(k) + v = attribute_for_inspect(r,k) if k == 'id' && @opts['with_id'] @id_set_string = "{ |c| c.#{k} = #{v} }.save" else a_s.push("#{k.to_sym.inspect} => #{v}") unless k == 'id' && !@opts['with_id'] end @@ -64,19 +64,37 @@ end def dumpModels @seed_rb = "" @models.sort.each do |model| - puts "Adding #{model} seeds." if @verbose - @seed_rb << dumpModel(model.constantize) << "\n\n" + m = model.constantize + if m.ancestors.include?(ActiveRecord::Base) + puts "Adding #{model} seeds." if @verbose + @seed_rb << dumpModel(m) << "\n\n" + else + puts "Skipping non-ActiveRecord model #{model}..." if @verbose + end end end def writeFile File.open(@opts['file'], (@opts['append'] ? "a" : "w")) { |f| f << "# Autogenerated by the db:seed:dump task\n# Do not hesitate to tweak this to your needs\n" unless @opts['append'] f << "#{@seed_rb}" } + end + + #override the rails version of this function to NOT truncate strings + def attribute_for_inspect(r,k) + value = r.attributes[k] + + if value.is_a?(String) && value.length > 50 + "#{value}".inspect + elsif value.is_a?(Date) || value.is_a?(Time) + %("#{value.to_s(:db)}") + else + value.inspect + end end def run(env) setup env