deep_freezer 0.4.2 → 1.0.0
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/Gemfile.lock +30 -1
- data/README.md +24 -4
- data/deep_freezer.gemspec +4 -0
- data/lib/deep_freezer.rb +0 -1
- data/lib/deep_freezer/base.rb +1 -1
- data/lib/deep_freezer/defrost.rb +14 -12
- data/lib/deep_freezer/version.rb +1 -1
- metadata +50 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e1efc00f291e048d002a8a4c8e3fbec16550e2d4
         | 
| 4 | 
            +
              data.tar.gz: 2c0e6124cb1fbdac3fcb56d48824203d5ce9c377
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fc16fed0eff7cdc4715518d1ad7de7dc9fd1e5e4e6befa4ed415b70f6fbd24a11715ae637da53b4e7245d12f74f603359cd422e22b006fec7f675282407fd793
         | 
| 7 | 
            +
              data.tar.gz: a198b857b8fd00f1f7787ad3715765f45526cb23fef2d77b3a0e822501f17a84962392c609990e7ca3bdd94a7c731d503ca32e60f51cc4cb959b47ca19a362ef
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,12 +1,36 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                deep_freezer (0. | 
| 4 | 
            +
                deep_freezer (1.0.0)
         | 
| 5 | 
            +
                  activerecord (> 4.2.10, < 6.0.0)
         | 
| 5 6 |  | 
| 6 7 | 
             
            GEM
         | 
| 7 8 | 
             
              remote: https://rubygems.org/
         | 
| 8 9 | 
             
              specs:
         | 
| 10 | 
            +
                activemodel (5.1.5)
         | 
| 11 | 
            +
                  activesupport (= 5.1.5)
         | 
| 12 | 
            +
                activerecord (5.1.5)
         | 
| 13 | 
            +
                  activemodel (= 5.1.5)
         | 
| 14 | 
            +
                  activesupport (= 5.1.5)
         | 
| 15 | 
            +
                  arel (~> 8.0)
         | 
| 16 | 
            +
                activerecord-nulldb-adapter (0.3.8)
         | 
| 17 | 
            +
                  activerecord (>= 2.0.0)
         | 
| 18 | 
            +
                activesupport (5.1.5)
         | 
| 19 | 
            +
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         | 
| 20 | 
            +
                  i18n (~> 0.7)
         | 
| 21 | 
            +
                  minitest (~> 5.1)
         | 
| 22 | 
            +
                  tzinfo (~> 1.1)
         | 
| 23 | 
            +
                arel (8.0.0)
         | 
| 24 | 
            +
                coderay (1.1.2)
         | 
| 25 | 
            +
                concurrent-ruby (1.0.5)
         | 
| 9 26 | 
             
                diff-lcs (1.3)
         | 
| 27 | 
            +
                i18n (0.9.5)
         | 
| 28 | 
            +
                  concurrent-ruby (~> 1.0)
         | 
| 29 | 
            +
                method_source (0.9.0)
         | 
| 30 | 
            +
                minitest (5.11.3)
         | 
| 31 | 
            +
                pry (0.11.3)
         | 
| 32 | 
            +
                  coderay (~> 1.1.0)
         | 
| 33 | 
            +
                  method_source (~> 0.9.0)
         | 
| 10 34 | 
             
                rake (10.4.2)
         | 
| 11 35 | 
             
                rspec (3.5.0)
         | 
| 12 36 | 
             
                  rspec-core (~> 3.5.0)
         | 
| @@ -21,13 +45,18 @@ GEM | |
| 21 45 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 22 46 | 
             
                  rspec-support (~> 3.5.0)
         | 
| 23 47 | 
             
                rspec-support (3.5.0)
         | 
| 48 | 
            +
                thread_safe (0.3.6)
         | 
| 49 | 
            +
                tzinfo (1.2.5)
         | 
| 50 | 
            +
                  thread_safe (~> 0.1)
         | 
| 24 51 |  | 
| 25 52 | 
             
            PLATFORMS
         | 
| 26 53 | 
             
              ruby
         | 
| 27 54 |  | 
| 28 55 | 
             
            DEPENDENCIES
         | 
| 56 | 
            +
              activerecord-nulldb-adapter
         | 
| 29 57 | 
             
              bundler (~> 1.16)
         | 
| 30 58 | 
             
              deep_freezer!
         | 
| 59 | 
            +
              pry
         | 
| 31 60 | 
             
              rake (~> 10.0)
         | 
| 32 61 | 
             
              rspec (~> 3.0)
         | 
| 33 62 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 | 
            -
            # Deep Freezer
         | 
| 1 | 
            +
            # Deep Freezer v1.0.0
         | 
| 2 2 | 
             
            ## Freeze ActiveRecord models to Rails compatible fixtures.
         | 
| 3 3 |  | 
| 4 | 
            -
            This gem allows you to 'freeze' your ActiveRecord models to  | 
| 4 | 
            +
            This gem allows you to 'freeze' your ActiveRecord models to create repeatable datasets for development.
         | 
| 5 5 |  | 
| 6 6 | 
             
            ## Installation
         | 
| 7 7 |  | 
| @@ -31,7 +31,7 @@ end | |
| 31 31 |  | 
| 32 32 | 
             
            Create an initializer and set the path for fixtures to be saved
         | 
| 33 33 |  | 
| 34 | 
            -
            `Freezer::Base.fixture_path = Rails.root.join(" | 
| 34 | 
            +
            `Freezer::Base.fixture_path = Rails.root.join("db", "seeds")`
         | 
| 35 35 |  | 
| 36 36 | 
             
            ### Define Freezers
         | 
| 37 37 |  | 
| @@ -49,6 +49,26 @@ class PostFreezer < DeepFreezer::Base | |
| 49 49 | 
             
            end
         | 
| 50 50 | 
             
            ```
         | 
| 51 51 |  | 
| 52 | 
            +
            #### Overriding Attributes
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            Attributes can be overrode at time of freeze, similar to ActiveModel Serializers, by defining a method with the same name as the attribute name.
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ```
         | 
| 57 | 
            +
            class PostFreezer < DeepFreezer::Base
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              freeze :id,
         | 
| 60 | 
            +
                     :title,
         | 
| 61 | 
            +
                     :body,
         | 
| 62 | 
            +
                     :created_at,
         | 
| 63 | 
            +
                     :updated_at
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              def title
         | 
| 66 | 
            +
                "Frozen Title"
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            end
         | 
| 70 | 
            +
            ```
         | 
| 71 | 
            +
             | 
| 52 72 | 
             
            ### Perform Freeze
         | 
| 53 73 |  | 
| 54 74 | 
             
            And then write a script to select and freeze the records you want:
         | 
| @@ -58,7 +78,7 @@ And then write a script to select and freeze the records you want: | |
| 58 78 | 
             
              posts.map { |p | PostFreezer.new(p).freeze }
         | 
| 59 79 | 
             
            ```
         | 
| 60 80 |  | 
| 61 | 
            -
            This will result in a `posts.yml` file in ` | 
| 81 | 
            +
            This will result in a `posts.yml` file in `db/seeds` which can be loaded by adding `DeepFreezer::Defrost.load!` to your `seeds.rb` file.
         | 
| 62 82 |  | 
| 63 83 | 
             
            ### Reset Fixtures
         | 
| 64 84 |  | 
    
        data/deep_freezer.gemspec
    CHANGED
    
    | @@ -30,7 +30,11 @@ Gem::Specification.new do |spec| | |
| 30 30 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 31 31 | 
             
              spec.require_paths = ["lib"]
         | 
| 32 32 |  | 
| 33 | 
            +
              spec.add_dependency "activerecord", "> 4.2.10", "< 6.0.0"
         | 
| 34 | 
            +
             | 
| 33 35 | 
             
              spec.add_development_dependency "bundler", "~> 1.16"
         | 
| 36 | 
            +
              spec.add_development_dependency "pry"
         | 
| 34 37 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 35 38 | 
             
              spec.add_development_dependency "rspec", "~> 3.0"
         | 
| 39 | 
            +
              spec.add_development_dependency "activerecord-nulldb-adapter"
         | 
| 36 40 | 
             
            end
         | 
    
        data/lib/deep_freezer.rb
    CHANGED
    
    
    
        data/lib/deep_freezer/base.rb
    CHANGED
    
    | @@ -26,7 +26,7 @@ class DeepFreezer::Base | |
| 26 26 | 
             
                  end
         | 
| 27 27 | 
             
                end
         | 
| 28 28 |  | 
| 29 | 
            -
                yaml = ({ "#{freezable.class.to_s | 
| 29 | 
            +
                yaml = ([{ "#{freezable.class.to_s}" => freezable.attributes }].to_yaml).gsub("---", "")
         | 
| 30 30 |  | 
| 31 31 | 
             
                write_to_file yaml, freezable.class.to_s.tableize
         | 
| 32 32 | 
             
              end
         | 
    
        data/lib/deep_freezer/defrost.rb
    CHANGED
    
    | @@ -1,26 +1,28 @@ | |
| 1 1 | 
             
            class DeepFreezer::Defrost
         | 
| 2 2 |  | 
| 3 3 | 
             
              def self.load!
         | 
| 4 | 
            -
             | 
| 5 4 | 
             
                path = DeepFreezer::Base.fixture_path.join("**/*.yml")
         | 
| 6 5 | 
             
                Dir.glob(path).each do |file|
         | 
| 7 6 | 
             
                  objects = YAML.load(File.read(file))
         | 
| 8 7 | 
             
                  puts "Loading #{objects.first.keys.first}"
         | 
| 9 | 
            -
                  objects.each do | | 
| 10 | 
            -
             | 
| 11 | 
            -
                     | 
| 12 | 
            -
                    attrs = o[klass]
         | 
| 13 | 
            -
                    obj = klass.constantize.new
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                    attrs.keys.each do |a|
         | 
| 16 | 
            -
                      obj.send("#{a}=", attrs[a])
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                    sql = self.sql_for(obj)
         | 
| 8 | 
            +
                  objects.each do |object|
         | 
| 9 | 
            +
                    instance = self.hash_to_instance(object)
         | 
| 10 | 
            +
                    sql = self.sql_for(instance)
         | 
| 20 11 | 
             
                    ActiveRecord::Base.connection.execute sql
         | 
| 21 12 | 
             
                  end
         | 
| 22 13 | 
             
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              def self.hash_to_instance(object)
         | 
| 17 | 
            +
                klass = object.keys.first
         | 
| 18 | 
            +
                attrs = object[klass]
         | 
| 19 | 
            +
                instance = klass.constantize.new
         | 
| 23 20 |  | 
| 21 | 
            +
                attrs.keys.each do |a|
         | 
| 22 | 
            +
                  instance.send("#{a}=", attrs[a])
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
                
         | 
| 25 | 
            +
                instance
         | 
| 24 26 | 
             
              end
         | 
| 25 27 |  | 
| 26 28 | 
             
              def self.sql_for(record)
         | 
    
        data/lib/deep_freezer/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,35 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: deep_freezer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mark Provan
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-03- | 
| 11 | 
            +
            date: 2018-03-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: activerecord
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 4.2.10
         | 
| 20 | 
            +
                - - "<"
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: 6.0.0
         | 
| 23 | 
            +
              type: :runtime
         | 
| 24 | 
            +
              prerelease: false
         | 
| 25 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 | 
            +
                requirements:
         | 
| 27 | 
            +
                - - ">"
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            +
                    version: 4.2.10
         | 
| 30 | 
            +
                - - "<"
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: 6.0.0
         | 
| 13 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 34 | 
             
              name: bundler
         | 
| 15 35 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -24,6 +44,20 @@ dependencies: | |
| 24 44 | 
             
                - - "~>"
         | 
| 25 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 46 | 
             
                    version: '1.16'
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: pry
         | 
| 49 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                requirements:
         | 
| 51 | 
            +
                - - ">="
         | 
| 52 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            +
                    version: '0'
         | 
| 54 | 
            +
              type: :development
         | 
| 55 | 
            +
              prerelease: false
         | 
| 56 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            +
                requirements:
         | 
| 58 | 
            +
                - - ">="
         | 
| 59 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            +
                    version: '0'
         | 
| 27 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 62 | 
             
              name: rake
         | 
| 29 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -52,6 +86,20 @@ dependencies: | |
| 52 86 | 
             
                - - "~>"
         | 
| 53 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 88 | 
             
                    version: '3.0'
         | 
| 89 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 90 | 
            +
              name: activerecord-nulldb-adapter
         | 
| 91 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 92 | 
            +
                requirements:
         | 
| 93 | 
            +
                - - ">="
         | 
| 94 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            +
                    version: '0'
         | 
| 96 | 
            +
              type: :development
         | 
| 97 | 
            +
              prerelease: false
         | 
| 98 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 | 
            +
                requirements:
         | 
| 100 | 
            +
                - - ">="
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: '0'
         | 
| 55 103 | 
             
            description: This gem allows you to 'freeze' your ActiveRecord models to Rails compatible
         | 
| 56 104 | 
             
              fixture files. This allows you to store real data statically for quick start dev/staging
         | 
| 57 105 | 
             
              evironments.
         |