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