superseeder 0.9.3 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/superseeder/formats/roo.rb +13 -5
- data/lib/superseeder/version.rb +1 -1
- data/test/adapters/mongoid.rb +2 -0
- data/test/adapters/schema.rb +2 -1
- data/test/dummy/db/seeds/data/parkings_with_cars.csv +5 -5
- data/test/dummy/db/seeds/data/parkings_without_cars.csv +5 -5
- data/test/dummy/log/test.log +3351 -0
- data/test/superseeder/formats/roo_test.rb +46 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 03b335cbdc74fa78d545de5ebda3234d44be8bbc
         | 
| 4 | 
            +
              data.tar.gz: 65b97195ec9093ea27e516f22c44eafc6d19f90b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0eb50168fe34841393e7b04bd7f42663d41a75c191ce66e7e0b16febb55709f047d2263e4b54d65f1927dca5ad781e1ef44d3f332002ff421aaa69a3d601b55f
         | 
| 7 | 
            +
              data.tar.gz: e2031f83186272ccac6261c5ba93a57ac715d0d061d3bf2cc8773c2ee2607b5ccec5f8e53fddd6e7719a403dc216684f963d18777e8434b203aa0ae129078929
         | 
| @@ -17,6 +17,7 @@ module Superseeder | |
| 17 17 |  | 
| 18 18 | 
             
                    opts = args.extract_options!
         | 
| 19 19 | 
             
                    many_sep = opts.delete(opts[:many_sep]) || ','
         | 
| 20 | 
            +
                    update = opts.delete :update_by
         | 
| 20 21 |  | 
| 21 22 | 
             
                    s = EXTENSIONS[File.extname(path)].constantize.new path.to_s, opts
         | 
| 22 23 | 
             
                    header = s.row s.first_row
         | 
| @@ -27,15 +28,18 @@ module Superseeder | |
| 27 28 | 
             
                      if block_given?
         | 
| 28 29 | 
             
                        yield row
         | 
| 29 30 | 
             
                      else
         | 
| 30 | 
            -
                        instance =  | 
| 31 | 
            -
             | 
| 31 | 
            +
                        instance = row['_type'].blank? ? self : row['_type'].constantize
         | 
| 32 | 
            +
                        instance = if update
         | 
| 33 | 
            +
                                     i = instance.find_by(update => row[update])
         | 
| 34 | 
            +
                                     i || instance.new
         | 
| 32 35 | 
             
                                   else
         | 
| 33 | 
            -
                                      | 
| 34 | 
            -
                                   end | 
| 36 | 
            +
                                     instance.new
         | 
| 37 | 
            +
                                   end
         | 
| 35 38 |  | 
| 36 39 | 
             
                        require 'superseeder/adapter'
         | 
| 37 40 | 
             
                        adapter = ::Superseeder::Adapter.new instance
         | 
| 38 41 |  | 
| 42 | 
            +
                        save_relations = []
         | 
| 39 43 | 
             
                        # Set relations
         | 
| 40 44 | 
             
                        adapter.each_relation do |name, is_array, class_name|
         | 
| 41 45 | 
             
                          attrs = row.select{ |k, _| k =~ /\A#{name}_/ }
         | 
| @@ -47,7 +51,9 @@ module Superseeder | |
| 47 51 | 
             
                            end
         | 
| 48 52 | 
             
                            vals.flatten!
         | 
| 49 53 | 
             
                            vals.compact!
         | 
| 54 | 
            +
                            vals = vals | instance.send(name)
         | 
| 50 55 | 
             
                            instance.send "#{name}=", vals
         | 
| 56 | 
            +
                            save_relations.concat vals if defined? Mongoid::Document && instance.kind_of?(Mongoid::Document) # Not really nice, TODO FIX through adapter
         | 
| 51 57 | 
             
                          else
         | 
| 52 58 | 
             
                            instance.send "#{name}=", class_name.find_by(attrs)
         | 
| 53 59 | 
             
                          end
         | 
| @@ -64,7 +70,9 @@ module Superseeder | |
| 64 70 | 
             
                        end
         | 
| 65 71 |  | 
| 66 72 | 
             
                        if instance.valid?
         | 
| 67 | 
            -
                          instance.save
         | 
| 73 | 
            +
                          instance.save if instance.changed?
         | 
| 74 | 
            +
                          save_relations.uniq!
         | 
| 75 | 
            +
                          save_relations.each(&:save)
         | 
| 68 76 | 
             
                        else
         | 
| 69 77 | 
             
                          Rails.logger.debug "Skipped #{row} : #{instance.errors.full_messages}"
         | 
| 70 78 | 
             
                        end
         | 
    
        data/lib/superseeder/version.rb
    CHANGED
    
    
    
        data/test/adapters/mongoid.rb
    CHANGED
    
    
    
        data/test/adapters/schema.rb
    CHANGED
    
    
| @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            name,cars_name
         | 
| 2 | 
            -
            North,Mustang
         | 
| 3 | 
            -
            East | 
| 4 | 
            -
            South,"Corvette,BMW"
         | 
| 5 | 
            -
            West | 
| 1 | 
            +
            name,cars_name,size
         | 
| 2 | 
            +
            North,Mustang,50
         | 
| 3 | 
            +
            East,,40
         | 
| 4 | 
            +
            South,"Corvette,BMW",30
         | 
| 5 | 
            +
            West,,20
         | 
| @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            name
         | 
| 2 | 
            -
            North
         | 
| 3 | 
            -
            East
         | 
| 4 | 
            -
            South
         | 
| 5 | 
            -
            West
         | 
| 1 | 
            +
            name,size
         | 
| 2 | 
            +
            North,50
         | 
| 3 | 
            +
            East,40
         | 
| 4 | 
            +
            South,30
         | 
| 5 | 
            +
            West,20
         |