ephemeron 0.1.0 → 0.2.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/lib/ephemeron/store/convert.rb +4 -2
- data/lib/ephemeron/store/update.rb +2 -2
- data/lib/ephemeron/version.rb +1 -1
- data/lib/ephemeron/writers/store.rb +7 -6
- metadata +31 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: '0660824d6ef962804b40a9bfd73a06ed2820706b2eca71a7444a9c565ec7e291'
         | 
| 4 | 
            +
              data.tar.gz: 33eb0ec77a182fde4d013b34a8b96eb12c79c25305419ec38ba088fdc15e51bc
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f2b827130f8afbf71f4b6058e52f310745d891efa7b5b9d24a0eb69f8693c71a649ba09094acef5f13395fe1025765f24dba67f62712273c21cb2d7bc04f75ca
         | 
| 7 | 
            +
              data.tar.gz: '049ba9e7c991e4a3c11587ccf50220a0f181cad23e056c01525a0aaffbc87a7307b0b6a0b30b5cbc51d93525f87213d494c7c07af34fbbc7f03e47bdfdb3871a'
         | 
| @@ -5,14 +5,16 @@ module Ephemeron | |
| 5 5 | 
             
                class Convert
         | 
| 6 6 | 
             
                  class << self
         | 
| 7 7 | 
             
                    def call(model_s, as_new_record: false)
         | 
| 8 | 
            -
                       | 
| 8 | 
            +
                      if model_s.is_a?(ActiveRecord::Base)
         | 
| 9 | 
            +
                        return class_name_and_id(model_s, as_new_record: as_new_record)
         | 
| 10 | 
            +
                      end
         | 
| 9 11 |  | 
| 10 12 | 
             
                      model_s.map { |model| class_name_and_id(model) }.join ', '
         | 
| 11 13 | 
             
                    end
         | 
| 12 14 |  | 
| 13 15 | 
             
                    private
         | 
| 14 16 |  | 
| 15 | 
            -
                    def class_name_and_id(model, as_new_record  | 
| 17 | 
            +
                    def class_name_and_id(model, as_new_record: false)
         | 
| 16 18 | 
             
                      new_record = as_new_record || model.new_record?
         | 
| 17 19 | 
             
                      name = model.class.name.downcase
         | 
| 18 20 | 
             
                      id = new_record ? "new_record##{model.object_id}" : model.id
         | 
| @@ -12,8 +12,8 @@ module Ephemeron | |
| 12 12 | 
             
                    Store.store.delete Convert.call(model, as_new_record: true)
         | 
| 13 13 |  | 
| 14 14 | 
             
                    Store.aliases.find_all { |_, v| v == Convert.call(model, as_new_record: true) }
         | 
| 15 | 
            -
                         .to_h | 
| 16 | 
            -
                         . | 
| 15 | 
            +
                         .to_h
         | 
| 16 | 
            +
                         .each_key { |key| Store.aliases[key] = Convert.call(model) }
         | 
| 17 17 | 
             
                  end
         | 
| 18 18 | 
             
                end
         | 
| 19 19 | 
             
              end
         | 
    
        data/lib/ephemeron/version.rb
    CHANGED
    
    
| @@ -16,14 +16,14 @@ module Ephemeron | |
| 16 16 | 
             
                  !store[Convert.call(model, as_new_record: as_new_record)].nil?
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 | 
            -
                def add(model,  | 
| 19 | 
            +
                def add(model, opts = {})
         | 
| 20 20 | 
             
                  return unless Validators::StoreElement.call(model)
         | 
| 21 21 |  | 
| 22 22 | 
             
                  key = Convert.call model
         | 
| 23 23 | 
             
                  in_store = !store[key].nil?
         | 
| 24 24 | 
             
                  store[key] = model unless in_store
         | 
| 25 | 
            -
                  if !as.nil?
         | 
| 26 | 
            -
                    aliases[as] = key
         | 
| 25 | 
            +
                  if !opts[:as].nil?
         | 
| 26 | 
            +
                    aliases[opts[:as]] = key
         | 
| 27 27 | 
             
                  elsif in_store
         | 
| 28 28 | 
             
                    raise StoreError, "#{key} is already in the store"
         | 
| 29 29 | 
             
                  end
         | 
| @@ -31,9 +31,10 @@ module Ephemeron | |
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 33 | 
             
                def get(key)
         | 
| 34 | 
            -
                  store[ | 
| 35 | 
            -
             | 
| 36 | 
            -
                   | 
| 34 | 
            +
                  model = store[key]
         | 
| 35 | 
            +
                  model ||= store[aliases[key]]
         | 
| 36 | 
            +
                  Logger.log(model, :used) if model
         | 
| 37 | 
            +
                  model
         | 
| 37 38 | 
             
                end
         | 
| 38 39 |  | 
| 39 40 | 
             
                def validate
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ephemeron
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Zbigniew Humeniuk
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-08-25 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -58,6 +58,34 @@ dependencies: | |
| 58 58 | 
             
                - - "~>"
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 60 | 
             
                    version: '3.9'
         | 
| 61 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            +
              name: rubocop
         | 
| 63 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 | 
            +
                requirements:
         | 
| 65 | 
            +
                - - ">="
         | 
| 66 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            +
                    version: '0'
         | 
| 68 | 
            +
              type: :development
         | 
| 69 | 
            +
              prerelease: false
         | 
| 70 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            +
                requirements:
         | 
| 72 | 
            +
                - - ">="
         | 
| 73 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            +
                    version: '0'
         | 
| 75 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 76 | 
            +
              name: rubocop-rails
         | 
| 77 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 | 
            +
                requirements:
         | 
| 79 | 
            +
                - - ">="
         | 
| 80 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 81 | 
            +
                    version: '0'
         | 
| 82 | 
            +
              type: :development
         | 
| 83 | 
            +
              prerelease: false
         | 
| 84 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 | 
            +
                requirements:
         | 
| 86 | 
            +
                - - ">="
         | 
| 87 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 88 | 
            +
                    version: '0'
         | 
| 61 89 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 90 | 
             
              name: sqlite3
         | 
| 63 91 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -123,7 +151,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 123 151 | 
             
              requirements:
         | 
| 124 152 | 
             
              - - ">="
         | 
| 125 153 | 
             
                - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                  version:  | 
| 154 | 
            +
                  version: 2.6.0
         | 
| 127 155 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 128 156 | 
             
              requirements:
         | 
| 129 157 | 
             
              - - ">="
         |