active_model_archive 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.
- data/.gitignore +1 -1
- data/active_model_archive.gemspec +1 -1
- data/lib/active_model_archive/dump.rb +12 -13
- data/lib/active_model_archive/file_manager.rb +6 -3
- data/test/file_manager_test.rb +31 -0
- metadata +8 -6
    
        data/.gitignore
    CHANGED
    
    
| @@ -5,23 +5,22 @@ module ActiveModelArchive | |
| 5 5 | 
             
                module ClassMethods
         | 
| 6 6 | 
             
                  def dump!(filename, options = {})
         | 
| 7 7 | 
             
                    query = options[:query]
         | 
| 8 | 
            -
                    per_file = options[:per_file]
         | 
| 8 | 
            +
                    per_file = options[:per_file] ? options[:per_file].to_i : nil
         | 
| 9 9 |  | 
| 10 | 
            -
                    file_manager = FileManager.new(filename, per_file)
         | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
                         | 
| 16 | 
            -
                       | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
                         | 
| 10 | 
            +
                    file_manager = FileManager.new(filename, per_file) do |file_manager|
         | 
| 11 | 
            +
                      if query.blank?
         | 
| 12 | 
            +
                        find_each do |object|
         | 
| 13 | 
            +
                          yield(object) if block_given?
         | 
| 14 | 
            +
                          file_manager.add(object)
         | 
| 15 | 
            +
                        end
         | 
| 16 | 
            +
                      else
         | 
| 17 | 
            +
                        paginated_each(query) do |object|
         | 
| 18 | 
            +
                          yield(object) if block_given?
         | 
| 19 | 
            +
                          file_manager.add(object)
         | 
| 20 | 
            +
                        end
         | 
| 21 21 | 
             
                      end
         | 
| 22 22 | 
             
                    end
         | 
| 23 23 |  | 
| 24 | 
            -
                    file_manager.flush
         | 
| 25 24 | 
             
                    file_manager.item_count
         | 
| 26 25 | 
             
                  end
         | 
| 27 26 | 
             
                end
         | 
| @@ -2,11 +2,14 @@ module ActiveModelArchive | |
| 2 2 | 
             
              class FileManager
         | 
| 3 3 | 
             
                UNLIMITED_PER_FILE = 999999999
         | 
| 4 4 | 
             
                attr_accessor :item_count, :file_number, :base_filename, :items_per_file
         | 
| 5 | 
            -
                def initialize(base_filename, items_per_file)
         | 
| 5 | 
            +
                def initialize(base_filename, items_per_file = nil)
         | 
| 6 6 | 
             
                  @item_count = 0
         | 
| 7 7 | 
             
                  @file_number = 0
         | 
| 8 8 | 
             
                  @base_filename = base_filename
         | 
| 9 | 
            -
                  @items_per_file =  | 
| 9 | 
            +
                  @items_per_file = items_per_file || UNLIMITED_PER_FILE
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  yield(self)
         | 
| 12 | 
            +
                  flush
         | 
| 10 13 | 
             
                end
         | 
| 11 14 |  | 
| 12 15 | 
             
                def add(object)
         | 
| @@ -25,7 +28,7 @@ module ActiveModelArchive | |
| 25 28 |  | 
| 26 29 | 
             
                def create_file
         | 
| 27 30 | 
             
                  self.file_number += 1
         | 
| 28 | 
            -
             | 
| 31 | 
            +
             | 
| 29 32 | 
             
                  filename = items_per_file == UNLIMITED_PER_FILE ? base_filename : "#{base_filename}.#{file_number}"
         | 
| 30 33 | 
             
                  file = File.open(filename, "w")
         | 
| 31 34 |  | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ActiveModelArchive::FileManagerTest < MiniTest::Spec
         | 
| 4 | 
            +
              def setup
         | 
| 5 | 
            +
                FileUtils.mkpath('tmp')
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def teardown
         | 
| 9 | 
            +
                FileUtils.rm_rf('tmp')
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def test_add
         | 
| 13 | 
            +
                object = TestModel.new(id: 'foo', color: 'red')
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                file_manager = ActiveModelArchive::FileManager.new('tmp/wtf') do |file_manager|
         | 
| 16 | 
            +
                  file_manager.add(object)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                assert_equal file_manager.encoder.encode(object.as_archive), File.read('tmp/wtf')
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              def test_items_per_file
         | 
| 23 | 
            +
                file_manager = ActiveModelArchive::FileManager.new('tmp/wtf', 2) do |file_manager|
         | 
| 24 | 
            +
                  file_manager.add(TestModel.new)
         | 
| 25 | 
            +
                  file_manager.add(TestModel.new)
         | 
| 26 | 
            +
                  file_manager.add(TestModel.new)
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                assert_equal ["tmp/wtf.1", "tmp/wtf.2"], Dir.glob('tmp/wtf*')
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: active_model_archive
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2011-11- | 
| 12 | 
            +
            date: 2011-11-15 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &70165958779720 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ~>
         | 
| @@ -21,10 +21,10 @@ dependencies: | |
| 21 21 | 
             
                    version: '3'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *70165958779720
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: yajl-ruby
         | 
| 27 | 
            -
              requirement: & | 
| 27 | 
            +
              requirement: &70165958779240 !ruby/object:Gem::Requirement
         | 
| 28 28 | 
             
                none: false
         | 
| 29 29 | 
             
                requirements:
         | 
| 30 30 | 
             
                - - ! '>='
         | 
| @@ -32,7 +32,7 @@ dependencies: | |
| 32 32 | 
             
                    version: '0'
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              prerelease: false
         | 
| 35 | 
            -
              version_requirements: * | 
| 35 | 
            +
              version_requirements: *70165958779240
         | 
| 36 36 | 
             
            description: Adds dump and restore functionality to activemodel classes
         | 
| 37 37 | 
             
            email:
         | 
| 38 38 | 
             
            - grantr@gmail.com
         | 
| @@ -50,6 +50,7 @@ files: | |
| 50 50 | 
             
            - lib/active_model_archive/file_manager.rb
         | 
| 51 51 | 
             
            - lib/active_model_archive/restore.rb
         | 
| 52 52 | 
             
            - test/dump_test.rb
         | 
| 53 | 
            +
            - test/file_manager_test.rb
         | 
| 53 54 | 
             
            - test/restore_test.rb
         | 
| 54 55 | 
             
            - test/test_helper.rb
         | 
| 55 56 | 
             
            homepage: ''
         | 
| @@ -78,5 +79,6 @@ specification_version: 3 | |
| 78 79 | 
             
            summary: Dump and restore activemodel objects
         | 
| 79 80 | 
             
            test_files:
         | 
| 80 81 | 
             
            - test/dump_test.rb
         | 
| 82 | 
            +
            - test/file_manager_test.rb
         | 
| 81 83 | 
             
            - test/restore_test.rb
         | 
| 82 84 | 
             
            - test/test_helper.rb
         |