shameless 0.4.0 → 0.5.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/.travis.yml +1 -3
- data/CHANGELOG.md +4 -1
- data/README.md +2 -0
- data/lib/shameless/cell.rb +9 -4
- data/lib/shameless/model.rb +6 -2
- data/lib/shameless/store.rb +1 -1
- data/lib/shameless/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 839607ae8ec8ee9e759f37a6f2a6c69264fca086
         | 
| 4 | 
            +
              data.tar.gz: 498b1d442dc13719c2a67a5a3176f0bf160baa32
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f2f01520df26451f4b64fa4b70bcbe24d169565d105955a715f88245680e032b8aa8065f8c03354440a07e6e7d385473ad7e45f30e5017529b266a2cea1d5579
         | 
| 7 | 
            +
              data.tar.gz: 06d827ed97efc129c88ec1d0ded8f0d271a990b84580129b436957f38e5ed3638f2d6761551670afd292ac9fb5c2d3dc217f97dcd3800513dfdc0b625391183e
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # Shameless
         | 
| 2 2 |  | 
| 3 | 
            +
            [](https://travis-ci.org/hoteltonight/shameless)
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            Shameless is an implementation of a schemaless, distributed, append-only store built on top of MySQL and the Sequel gem. It was extracted from a battle-tested codebase of our main application at HotelTonight. Since it's using Sequel for database access, it could work on any database, e.g. postgres, although we've only used it with MySQL.
         | 
| 4 6 |  | 
| 5 7 | 
             
            ## Background
         | 
    
        data/lib/shameless/cell.rb
    CHANGED
    
    | @@ -18,6 +18,7 @@ module Shameless | |
| 18 18 | 
             
                def initialize(model, name, values = nil)
         | 
| 19 19 | 
             
                  @model = model
         | 
| 20 20 | 
             
                  @name = name
         | 
| 21 | 
            +
                  reload
         | 
| 21 22 | 
             
                  initialize_from_values(values)
         | 
| 22 23 | 
             
                end
         | 
| 23 24 |  | 
| @@ -36,7 +37,7 @@ module Shameless | |
| 36 37 | 
             
                  @created_at = (@created_at.to_f * 1000).to_i if @model.class.store.configuration.legacy_created_at_is_bigint
         | 
| 37 38 | 
             
                  @ref_key ||= -1
         | 
| 38 39 | 
             
                  @ref_key += 1
         | 
| 39 | 
            -
                  @model.put_cell(cell_values)
         | 
| 40 | 
            +
                  @id = @model.put_cell(cell_values(true))
         | 
| 40 41 | 
             
                end
         | 
| 41 42 |  | 
| 42 43 | 
             
                def update(values)
         | 
| @@ -69,7 +70,7 @@ module Shameless | |
| 69 70 | 
             
                end
         | 
| 70 71 |  | 
| 71 72 | 
             
                def reload
         | 
| 72 | 
            -
                  @body = @ref_key = @created_at = nil
         | 
| 73 | 
            +
                  @id = @body = @ref_key = @created_at = nil
         | 
| 73 74 | 
             
                end
         | 
| 74 75 |  | 
| 75 76 | 
             
                def fetch(key, default)
         | 
| @@ -85,15 +86,19 @@ module Shameless | |
| 85 86 | 
             
                  @model.uuid
         | 
| 86 87 | 
             
                end
         | 
| 87 88 |  | 
| 89 | 
            +
                def as_json(*)
         | 
| 90 | 
            +
                  cell_values(false).merge(id: id)
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
             | 
| 88 93 | 
             
                private
         | 
| 89 94 |  | 
| 90 | 
            -
                def cell_values
         | 
| 95 | 
            +
                def cell_values(serialize_body)
         | 
| 91 96 | 
             
                  {
         | 
| 92 97 | 
             
                    uuid: uuid,
         | 
| 93 98 | 
             
                    column_name: @name,
         | 
| 94 99 | 
             
                    ref_key: ref_key,
         | 
| 95 100 | 
             
                    created_at: created_at,
         | 
| 96 | 
            -
                    body: serialized_body
         | 
| 101 | 
            +
                    body: serialize_body ? serialized_body : body
         | 
| 97 102 | 
             
                  }
         | 
| 98 103 | 
             
                end
         | 
| 99 104 |  | 
    
        data/lib/shameless/model.rb
    CHANGED
    
    | @@ -36,8 +36,8 @@ module Shameless | |
| 36 36 | 
             
                  else
         | 
| 37 37 | 
             
                    uuid = SecureRandom.uuid
         | 
| 38 38 |  | 
| 39 | 
            -
                    new(uuid, values).tap do | | 
| 40 | 
            -
                       | 
| 39 | 
            +
                    new(uuid, values).tap do |m|
         | 
| 40 | 
            +
                      m.save
         | 
| 41 41 |  | 
| 42 42 | 
             
                      index_values = values.merge(uuid: uuid)
         | 
| 43 43 | 
             
                      @indices.each {|i| i.put(index_values) }
         | 
| @@ -152,6 +152,10 @@ module Shameless | |
| 152 152 | 
             
                    base.present?
         | 
| 153 153 | 
             
                  end
         | 
| 154 154 |  | 
| 155 | 
            +
                  def as_json(*)
         | 
| 156 | 
            +
                    base.as_json
         | 
| 157 | 
            +
                  end
         | 
| 158 | 
            +
             | 
| 155 159 | 
             
                  def reload
         | 
| 156 160 | 
             
                    cells.each(&:reload)
         | 
| 157 161 | 
             
                  end
         | 
    
        data/lib/shameless/store.rb
    CHANGED
    
    
    
        data/lib/shameless/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: shameless
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Olek Janiszewski
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-12-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: msgpack
         | 
| @@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 140 140 | 
             
                  version: '0'
         | 
| 141 141 | 
             
            requirements: []
         | 
| 142 142 | 
             
            rubyforge_project: 
         | 
| 143 | 
            -
            rubygems_version: 2.5. | 
| 143 | 
            +
            rubygems_version: 2.5.2
         | 
| 144 144 | 
             
            signing_key: 
         | 
| 145 145 | 
             
            specification_version: 4
         | 
| 146 146 | 
             
            summary: Scalable distributed append-only data store
         |