iron_cache 1.2.1 → 1.2.2
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/Gemfile +0 -1
- data/Gemfile.lock +6 -6
- data/lib/active_support/cache/iron_cache_store.rb +100 -0
- data/lib/iron_cache/caches.rb +4 -0
- data/lib/iron_cache/client.rb +1 -1
- data/lib/iron_cache/version.rb +1 -1
- data/test/load_er_up.rb +57 -0
- data/test/quick_run.rb +14 -7
- data/test/test_iron_cache.rb +18 -18
- metadata +5 -2
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,26 +1,26 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                iron_cache (1.2. | 
| 4 | 
            +
                iron_cache (1.2.1)
         | 
| 5 5 | 
             
                  iron_core (>= 0.4.2)
         | 
| 6 6 |  | 
| 7 7 | 
             
            GEM
         | 
| 8 8 | 
             
              remote: https://rubygems.org/
         | 
| 9 9 | 
             
              specs:
         | 
| 10 | 
            -
                iron_core (0.4. | 
| 10 | 
            +
                iron_core (0.4.3)
         | 
| 11 11 | 
             
                  rest (>= 2.0.2)
         | 
| 12 12 | 
             
                memcache-client (1.8.5)
         | 
| 13 13 | 
             
                mime-types (1.19)
         | 
| 14 | 
            -
                minitest ( | 
| 14 | 
            +
                minitest (4.1.0)
         | 
| 15 15 | 
             
                net-http-persistent (2.7)
         | 
| 16 16 | 
             
                rake (0.9.2.2)
         | 
| 17 | 
            -
                rest (2.0. | 
| 17 | 
            +
                rest (2.0.4)
         | 
| 18 18 | 
             
                  net-http-persistent
         | 
| 19 19 | 
             
                  rest-client (>= 0.3.0)
         | 
| 20 20 | 
             
                rest-client (1.6.7)
         | 
| 21 21 | 
             
                  mime-types (>= 1.16)
         | 
| 22 | 
            -
                test-unit (2.5. | 
| 23 | 
            -
                uber_config ( | 
| 22 | 
            +
                test-unit (2.5.2)
         | 
| 23 | 
            +
                uber_config (1.0.5)
         | 
| 24 24 |  | 
| 25 25 | 
             
            PLATFORMS
         | 
| 26 26 | 
             
              ruby
         | 
| @@ -0,0 +1,100 @@ | |
| 1 | 
            +
            require 'iron_cache'
         | 
| 2 | 
            +
            require 'base64'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module ActiveSupport
         | 
| 5 | 
            +
              module Cache
         | 
| 6 | 
            +
                class IronCacheStore < ActiveSupport::Cache::Store
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(options = nil)
         | 
| 9 | 
            +
                    super(options)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    @client = IronCache::Client.new(@options)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    extend ActiveSupport::Cache::Strategy::LocalCache
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def increment(key, amount = 1, options = nil)
         | 
| 17 | 
            +
                    with_namespace(key, options) do |cache, k|
         | 
| 18 | 
            +
                      cache.increment(k, amount)
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def decrement(key, amount = 1, options = nil)
         | 
| 23 | 
            +
                    with_namespace(key, options) do |cache, k|
         | 
| 24 | 
            +
                      cache.increment(k, -amount)
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  protected
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def read_entry(key, options)
         | 
| 31 | 
            +
                    item = nil
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    with_namespace(key, options) do |cache, k|
         | 
| 34 | 
            +
                      item = cache.get(k).value
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    deserialize_entry(item)
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def write_entry(key, entry, options)
         | 
| 41 | 
            +
                    with_namespace(key, options) do |cache, k|
         | 
| 42 | 
            +
                      cache.put(k, serialize_entry(entry, options), options)
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    true
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  def delete_entry(key, options)
         | 
| 49 | 
            +
                    with_namespace(key, options) do |cache, k|
         | 
| 50 | 
            +
                      cache.delete(k)
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    true
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  private
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  def with_namespace(key, options)
         | 
| 59 | 
            +
                    options[:namespace] ||= 'rails_cache'
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    cache_name, key_name = namespaced_key(key, options).split(':', 2)
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    yield(@client.cache(cache_name), escape_key(key_name))
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  def escape_key(key)
         | 
| 67 | 
            +
                    ekey = ::Base64.encode64(key)
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    if ekey.size > 250
         | 
| 70 | 
            +
                      ekey = "#{key[0, 213]}:md5:#{Digest::MD5.hexdigest(key)}"
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    ekey
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  def deserialize_entry(raw_value)
         | 
| 77 | 
            +
                    if raw_value
         | 
| 78 | 
            +
                      entry = Marshal.load(raw_value) rescue raw_value
         | 
| 79 | 
            +
                      entry.is_a?(ActiveSupport::Cache::Entry) ? entry : ActiveSupport::Cache::Entry.new(entry)
         | 
| 80 | 
            +
                    else
         | 
| 81 | 
            +
                      nil
         | 
| 82 | 
            +
                    end
         | 
| 83 | 
            +
                  end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                  def serialize_entry(entry, options)
         | 
| 86 | 
            +
                    value = nil
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                    if options[:raw]
         | 
| 89 | 
            +
                      if entry.respond_to?(:value)
         | 
| 90 | 
            +
                        value = entry.value.to_s
         | 
| 91 | 
            +
                      else
         | 
| 92 | 
            +
                        value = entry.to_s
         | 
| 93 | 
            +
                      end
         | 
| 94 | 
            +
                    else
         | 
| 95 | 
            +
                      value = Marshal.dump(entry)
         | 
| 96 | 
            +
                    end
         | 
| 97 | 
            +
                  end
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
            end
         | 
    
        data/lib/iron_cache/caches.rb
    CHANGED
    
    
    
        data/lib/iron_cache/client.rb
    CHANGED
    
    | @@ -17,7 +17,7 @@ module IronCache | |
| 17 17 | 
             
                    :host => IronCache::Client::AWS_US_EAST_HOST,
         | 
| 18 18 | 
             
                    :port => 443,
         | 
| 19 19 | 
             
                    :api_version => 1,
         | 
| 20 | 
            -
                    :user_agent => ' | 
| 20 | 
            +
                    :user_agent => 'iron_cache_ruby-' + IronCache::VERSION + ' (iron_core_ruby-' + IronCore.version + ')',
         | 
| 21 21 | 
             
                    :cache_name => 'default'
         | 
| 22 22 | 
             
                  }
         | 
| 23 23 |  | 
    
        data/lib/iron_cache/version.rb
    CHANGED
    
    
    
        data/test/load_er_up.rb
    ADDED
    
    | @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            require_relative 'test_base'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class QuickRun < TestBase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              def setup
         | 
| 6 | 
            +
                super
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              #def test_loader
         | 
| 10 | 
            +
              #  cache_name = 'ironcache-load'
         | 
| 11 | 
            +
              #  cache = @client.cache(cache_name)
         | 
| 12 | 
            +
              #  p cache
         | 
| 13 | 
            +
              #  100.times do |i|
         | 
| 14 | 
            +
              #    p i
         | 
| 15 | 
            +
              #    key = "x"
         | 
| 16 | 
            +
              #    value = "hello world!"
         | 
| 17 | 
            +
              #    res = cache.put(key, value)
         | 
| 18 | 
            +
              #    p res
         | 
| 19 | 
            +
              #    assert res.msg
         | 
| 20 | 
            +
              #  end
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              #  cache.reload
         | 
| 23 | 
            +
              #  puts "size: #{cache.size}"
         | 
| 24 | 
            +
              #  assert_equal 100, cache.size
         | 
| 25 | 
            +
              #
         | 
| 26 | 
            +
              #end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def test_unloader
         | 
| 29 | 
            +
                cache_name = 'ironcache-load'
         | 
| 30 | 
            +
                cache = @client.cache(cache_name)
         | 
| 31 | 
            +
                p cache
         | 
| 32 | 
            +
                assert_equal 201, cache.size
         | 
| 33 | 
            +
                res = cache.get("x")
         | 
| 34 | 
            +
                p res
         | 
| 35 | 
            +
                value = "hello world!"
         | 
| 36 | 
            +
                assert_equal value, res.value
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                100.times do |i|
         | 
| 39 | 
            +
                  p i
         | 
| 40 | 
            +
                  key = "x#{i}"
         | 
| 41 | 
            +
                  res = cache.put(key, value)
         | 
| 42 | 
            +
                  #p res
         | 
| 43 | 
            +
                  assert res.msg
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                cache.reload
         | 
| 47 | 
            +
                puts "size: #{cache.size}"
         | 
| 48 | 
            +
                assert_equal 201, cache.size
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                res = cache.put("randomyo", value)
         | 
| 51 | 
            +
                assert_equal 202, cache.reload.size
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
             | 
| 56 | 
            +
            end
         | 
| 57 | 
            +
             | 
    
        data/test/quick_run.rb
    CHANGED
    
    | @@ -4,29 +4,36 @@ class QuickRun < TestBase | |
| 4 4 |  | 
| 5 5 | 
             
              def setup
         | 
| 6 6 | 
             
                super
         | 
| 7 | 
            -
                @client.cache_name = 'ironcache-gem-quick'
         | 
| 8 7 | 
             
              end
         | 
| 9 8 |  | 
| 10 9 | 
             
              def test_basics
         | 
| 10 | 
            +
                cache_name = 'ironcache-gem-quick'
         | 
| 11 | 
            +
                cache = @client.cache(cache_name)
         | 
| 12 | 
            +
                p cache
         | 
| 11 13 | 
             
                key = "x"
         | 
| 12 14 | 
             
                value = "hello world!"
         | 
| 13 | 
            -
                res =  | 
| 15 | 
            +
                res = cache.put(key, value)
         | 
| 14 16 | 
             
                p res
         | 
| 15 17 | 
             
                assert res.msg
         | 
| 18 | 
            +
                puts "size: #{cache.size}"
         | 
| 19 | 
            +
                assert_equal 1, cache.size
         | 
| 16 20 |  | 
| 17 | 
            -
                res =  | 
| 18 | 
            -
                assert res.value
         | 
| 19 | 
            -
                assert res.value == value
         | 
| 21 | 
            +
                res = cache.get(key)
         | 
| 20 22 | 
             
                p res
         | 
| 23 | 
            +
                assert_equal value, res.value
         | 
| 21 24 |  | 
| 22 | 
            -
                res =  | 
| 25 | 
            +
                res = cache.delete(key)
         | 
| 23 26 | 
             
                p res
         | 
| 24 27 | 
             
                assert res.msg
         | 
| 25 28 |  | 
| 26 | 
            -
                res =  | 
| 29 | 
            +
                res = cache.get(key)
         | 
| 27 30 | 
             
                p res
         | 
| 28 31 | 
             
                assert res.nil?
         | 
| 29 32 |  | 
| 33 | 
            +
                cache.reload
         | 
| 34 | 
            +
                puts "size: #{cache.size}"
         | 
| 35 | 
            +
                assert_equal 0, cache.size
         | 
| 36 | 
            +
             | 
| 30 37 | 
             
              end
         | 
| 31 38 |  | 
| 32 39 |  | 
    
        data/test/test_iron_cache.rb
    CHANGED
    
    | @@ -24,15 +24,15 @@ class IronCacheTests < TestBase | |
| 24 24 | 
             
                p res
         | 
| 25 25 | 
             
                assert res["key"]
         | 
| 26 26 | 
             
                assert res.key
         | 
| 27 | 
            -
                 | 
| 28 | 
            -
                 | 
| 27 | 
            +
                assert_equal k, res.key
         | 
| 28 | 
            +
                assert_equal v, res.value
         | 
| 29 29 |  | 
| 30 30 | 
             
                res = @client.items.delete(res.key)
         | 
| 31 31 | 
             
                p res
         | 
| 32 32 | 
             
                puts "shouldn't be any more"
         | 
| 33 33 | 
             
                res = @client.items.get(k)
         | 
| 34 34 | 
             
                p res
         | 
| 35 | 
            -
                 | 
| 35 | 
            +
                assert_nil res
         | 
| 36 36 |  | 
| 37 37 | 
             
                # new style of referencing cache
         | 
| 38 38 | 
             
                cache = @client.cache("test_basics")
         | 
| @@ -44,15 +44,15 @@ class IronCacheTests < TestBase | |
| 44 44 | 
             
                p res
         | 
| 45 45 | 
             
                assert res["key"]
         | 
| 46 46 | 
             
                assert res.key
         | 
| 47 | 
            -
                 | 
| 48 | 
            -
                 | 
| 47 | 
            +
                assert_equal k, res.key
         | 
| 48 | 
            +
                assert_equal v, res.value
         | 
| 49 49 |  | 
| 50 50 | 
             
                res = cache.delete(k)
         | 
| 51 51 | 
             
                p res
         | 
| 52 52 | 
             
                puts "shouldn't be any more"
         | 
| 53 53 | 
             
                res = cache.get(k)
         | 
| 54 54 | 
             
                p res
         | 
| 55 | 
            -
                 | 
| 55 | 
            +
                assert_nil res
         | 
| 56 56 |  | 
| 57 57 | 
             
                # test delete by item
         | 
| 58 58 | 
             
                res = cache.put(k, v)
         | 
| @@ -67,7 +67,7 @@ class IronCacheTests < TestBase | |
| 67 67 | 
             
                puts "shouldn't be any more"
         | 
| 68 68 | 
             
                res = cache.get(k)
         | 
| 69 69 | 
             
                p res
         | 
| 70 | 
            -
                 | 
| 70 | 
            +
                assert_nil res
         | 
| 71 71 |  | 
| 72 72 |  | 
| 73 73 | 
             
                # different cache names
         | 
| @@ -112,11 +112,11 @@ class IronCacheTests < TestBase | |
| 112 112 |  | 
| 113 113 | 
             
                res = @client.items.get(k)
         | 
| 114 114 | 
             
                p res
         | 
| 115 | 
            -
                 | 
| 115 | 
            +
                assert_equal k, res.key
         | 
| 116 116 |  | 
| 117 117 | 
             
                sleep 11
         | 
| 118 118 | 
             
                res = @client.items.get(k)
         | 
| 119 | 
            -
                 | 
| 119 | 
            +
                assert_nil res
         | 
| 120 120 |  | 
| 121 121 | 
             
              end
         | 
| 122 122 |  | 
| @@ -130,16 +130,16 @@ class IronCacheTests < TestBase | |
| 130 130 |  | 
| 131 131 | 
             
                res = @client.items.get(k)
         | 
| 132 132 | 
             
                p res
         | 
| 133 | 
            -
                 | 
| 134 | 
            -
                 | 
| 133 | 
            +
                assert_equal k, res.key
         | 
| 134 | 
            +
                assert_equal v, res.value
         | 
| 135 135 |  | 
| 136 136 | 
             
                incr_by = 10
         | 
| 137 137 | 
             
                res = @client.items.increment(k, incr_by)
         | 
| 138 138 | 
             
                res = @client.items.get(k)
         | 
| 139 | 
            -
                 | 
| 139 | 
            +
                assert_equal v + incr_by, res.value
         | 
| 140 140 |  | 
| 141 141 | 
             
                res = @client.items.increment(k, -6)
         | 
| 142 | 
            -
                 | 
| 142 | 
            +
                assert_equal 5, res.value
         | 
| 143 143 |  | 
| 144 144 | 
             
                res.delete
         | 
| 145 145 |  | 
| @@ -150,16 +150,16 @@ class IronCacheTests < TestBase | |
| 150 150 |  | 
| 151 151 | 
             
                res = cache.get(k)
         | 
| 152 152 | 
             
                p res
         | 
| 153 | 
            -
                 | 
| 154 | 
            -
                 | 
| 153 | 
            +
                assert_equal k, res.key
         | 
| 154 | 
            +
                assert_equal v, res.value
         | 
| 155 155 |  | 
| 156 156 | 
             
                incr_by = 10
         | 
| 157 157 | 
             
                res = cache.increment(k, incr_by)
         | 
| 158 158 | 
             
                res = cache.get(k)
         | 
| 159 | 
            -
                 | 
| 159 | 
            +
                assert_equal v + incr_by, res.value
         | 
| 160 160 |  | 
| 161 161 | 
             
                res = cache.increment(k, -6)
         | 
| 162 | 
            -
                 | 
| 162 | 
            +
                assert_equal 5, res.value
         | 
| 163 163 |  | 
| 164 164 | 
             
                res.delete
         | 
| 165 165 | 
             
              end
         | 
| @@ -173,7 +173,7 @@ class IronCacheTests < TestBase | |
| 173 173 | 
             
                end
         | 
| 174 174 |  | 
| 175 175 | 
             
                puts "cache.size: #{cache.size}"
         | 
| 176 | 
            -
                 | 
| 176 | 
            +
                assert_equal num_items, cache.size
         | 
| 177 177 | 
             
              end
         | 
| 178 178 |  | 
| 179 179 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: iron_cache
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.2. | 
| 4 | 
            +
              version: 1.2.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012- | 
| 12 | 
            +
            date: 2012-10-17 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: iron_core
         | 
| @@ -120,11 +120,13 @@ files: | |
| 120 120 | 
             
            - README.md
         | 
| 121 121 | 
             
            - Rakefile
         | 
| 122 122 | 
             
            - iron_cache.gemspec
         | 
| 123 | 
            +
            - lib/active_support/cache/iron_cache_store.rb
         | 
| 123 124 | 
             
            - lib/iron_cache.rb
         | 
| 124 125 | 
             
            - lib/iron_cache/caches.rb
         | 
| 125 126 | 
             
            - lib/iron_cache/client.rb
         | 
| 126 127 | 
             
            - lib/iron_cache/items.rb
         | 
| 127 128 | 
             
            - lib/iron_cache/version.rb
         | 
| 129 | 
            +
            - test/load_er_up.rb
         | 
| 128 130 | 
             
            - test/quick_run.rb
         | 
| 129 131 | 
             
            - test/test_base.rb
         | 
| 130 132 | 
             
            - test/test_iron_cache.rb
         | 
| @@ -156,6 +158,7 @@ signing_key: | |
| 156 158 | 
             
            specification_version: 3
         | 
| 157 159 | 
             
            summary: Ruby client for IronCache by www.iron.io
         | 
| 158 160 | 
             
            test_files:
         | 
| 161 | 
            +
            - test/load_er_up.rb
         | 
| 159 162 | 
             
            - test/quick_run.rb
         | 
| 160 163 | 
             
            - test/test_base.rb
         | 
| 161 164 | 
             
            - test/test_iron_cache.rb
         |