undo-storage-rails_cache 0.0.1 → 0.1.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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OTc4ZDI0OWYyN2ZlMDdjZjU4NWNmYWQxOTg4MjM1MGY1YTQyMDgyZQ==
5
- data.tar.gz: !binary |-
6
- NzIzMTMxODY0ODA1MGU5NjM4Y2UyMGJjMTdjNGRlYWE2ZTJhNmJiOQ==
2
+ SHA1:
3
+ metadata.gz: 402dfa78018e83220e282c74986babe501261407
4
+ data.tar.gz: febbba1204c31d2604f25e68034d69759c62937c
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NTY5OTVjMDA0YWM4NzU2Zjg0MGVkZGRhZmI4MTBlYTdhOTZlMDljM2Q3NjA0
10
- MjAzNDlmMzY1MzQ2NzFmZDAwZWZmODdmZTdhYzhhZDNkZDE3YzRjMGRlZDJi
11
- OGExMjhhY2E0NWVhN2Y1OTQ2NTU1OGY1NTlhMjg4NzE3OGJlYjE=
12
- data.tar.gz: !binary |-
13
- NTVhZmNkYzNiN2RiMGU0OGFmNGY2YjE3NmJhMTRlY2M0MDA1MjE2MDlhNjM4
14
- M2Y3ODkxNDliMjgxYThjMzg4MDEyZmY3N2YzMTdmMzlkN2EyNWUyZWZmZTAw
15
- YmI4NDk4MDdlNmIxNTg1OGQyZjZmNDJkNDM3ZjMxOWM0YmNlNjk=
6
+ metadata.gz: a07b94576f504783b2e6efaa1fce4c80241aa04f9923634f4489cbffd47231d2635d78bdd32fe8bdf27b0d0121b5c2cfa9309ef79f285fddcfe641ca5b0a885b
7
+ data.tar.gz: 7b8749b26ea40931c2e21a357b5eb046471e5ca686316d4caf82f30dbd381954f3f2eb2331f8f5653c30d7cd1b6a19b67f957db4a3aed75a34c12d8283105551
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.0-p0
1
+ 2.1.1
data/Gemfile CHANGED
@@ -2,7 +2,8 @@ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  group :test do
5
- gem 'rails', '4.0.2'
5
+ gem 'rails', '>= 4.0.2'
6
+
6
7
  if !!ENV['CI']
7
8
  gem "coveralls"
8
9
  else
@@ -10,9 +11,3 @@ group :test do
10
11
  gem "pry-plus" if "ruby" == RUBY_ENGINE
11
12
  end
12
13
  end
13
-
14
- platforms :rbx do
15
- gem 'racc'
16
- gem 'rubysl', '~> 2.0'
17
- gem 'psych'
18
- end
data/README.md CHANGED
@@ -1,15 +1,19 @@
1
1
  Undo
2
2
  ==========
3
3
  [![Build Status](https://travis-ci.org/AlexParamonov/undo-storage-rails_cache.png?branch=master)](https://travis-ci.org/AlexParamonov/undo-storage-rails_cache)
4
- [![Gemnasium Build Status](https://gemnasium.com/AlexParamonov/undo-storage-rails_cache.png)](http://gemnasium.com/AlexParamonov/undo-storage-rails_cache)
5
4
  [![Coverage Status](https://coveralls.io/repos/AlexParamonov/undo-storage-rails_cache/badge.png?branch=master)](https://coveralls.io/r/AlexParamonov/undo-storage-rails_cache?branch=master)
5
+ [![Code Climate](https://codeclimate.com/github/AlexParamonov/undo-storage-rails_cache.png)](https://codeclimate.com/github/AlexParamonov/undo-storage-rails_cache)
6
+ [![Gemnasium Build Status](https://gemnasium.com/AlexParamonov/undo-storage-rails_cache.png)](http://gemnasium.com/AlexParamonov/undo-storage-rails_cache)
6
7
  [![Gem Version](https://badge.fury.io/rb/undo-storage-rails_cache.png)](http://badge.fury.io/rb/undo-storage-rails_cache)
7
8
 
8
- Rails.cache adapter for Undo gem.
9
+ Rails.cache adapter for [Undo gem](https://github.com/AlexParamonov/undo).
10
+ Designed to be used with Rails cache, but it can be used with any
11
+ similarly quaking cache store. Rails constant may not even be defined.
9
12
 
10
13
  Contents
11
14
  ---------
12
15
  1. Installation
16
+ 1. Usage
13
17
  1. Requirements
14
18
  1. Contacts
15
19
  1. Compatibility
@@ -31,12 +35,32 @@ Or install it yourself as:
31
35
 
32
36
  $ gem install undo-storage-rails_cache
33
37
 
38
+
39
+ Usage
40
+ -----
41
+
42
+ Undo.configure do |config|
43
+ config.storage = Undo::Storage::RailsCache.new
44
+ end
45
+
46
+ Default options will applied on each call to cache storage:
47
+
48
+ Undo.configure do |config|
49
+ config.storage = Undo::Storage::RailsCache.new(expires_in: 1.hour)
50
+ end
51
+
52
+ As any Undo storage it gets argument bypassed from #store, #restore and #wrap:
53
+
54
+ Undo.store object, expires_in: 1.minute
55
+
56
+
34
57
  Requirements
35
58
  ------------
36
59
  1. Ruby 1.9 or above
60
+ 1. [The Undo](https://github.com/AlexParamonov/undo).
37
61
 
38
62
  Contacts
39
- -------------
63
+ --------
40
64
  Have questions or recommendations? Contact me via `alexander.n.paramonov@gmail.com`
41
65
  Found a bug or have enhancement request? You are welcome at [Github bugtracker](https://github.com/AlexParamonov/undo-storage-rails_cache/issues)
42
66
 
@@ -58,7 +82,7 @@ See [build history](http://travis-ci.org/#!/AlexParamonov/undo-storage-rails_cac
58
82
 
59
83
  ## Contributing
60
84
 
61
- 1. Fork repository ( http://github.com/AlexParamonov/undo-storage-rails_cache/fork )
85
+ 1. [Fork repository](http://github.com/AlexParamonov/undo-storage-rails_cache/fork)
62
86
  2. Create your feature branch (`git checkout -b my-new-feature`)
63
87
  3. Commit your changes (`git commit -am 'Add some feature'`)
64
88
  4. Push to the branch (`git push origin my-new-feature`)
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -1,34 +1,32 @@
1
- require 'json'
1
+ require 'undo/storage/adapter'
2
2
 
3
3
  module Undo
4
4
  module Storage
5
- class RailsCache
6
- VERSION = "0.0.1"
7
-
5
+ class RailsCache < Adapter
8
6
  def initialize(cache = nil, options = {})
9
7
  @cache = cache
10
8
  @cache ||= Rails.cache if defined? Rails
11
- @options = options
12
- end
13
9
 
14
- def put(uuid, object)
15
- cache.write uuid, serialize(object), options
10
+ super options
16
11
  end
17
12
 
18
- def fetch(uuid)
19
- deserialize cache.read uuid, options
13
+ def store(uuid, object, options = {})
14
+ cache.write uuid,
15
+ pack(object),
16
+ adapter_options(options)
20
17
  end
21
18
 
22
- private
23
- attr_reader :cache, :options
24
-
25
- def serialize(object)
26
- object.to_json
19
+ def fetch(uuid, options = {})
20
+ raise KeyError, "key #{uuid} not found" unless cache.exist? uuid
21
+ unpack cache.read uuid, adapter_options(options)
27
22
  end
28
23
 
29
- def deserialize(data)
30
- JSON.load data
24
+ def delete(uuid, options = {})
25
+ cache.delete uuid, adapter_options(options)
31
26
  end
27
+
28
+ private
29
+ attr_reader :cache
32
30
  end
33
31
  end
34
32
  end
@@ -0,0 +1,11 @@
1
+ require "spec_helper_rails"
2
+ require "undo"
3
+ require 'undo/integration/shared_undo_integration_examples.rb'
4
+
5
+ Undo.configure do |config|
6
+ config.storage = Undo::Storage::RailsCache.new
7
+ end
8
+
9
+ describe Undo do
10
+ include_examples "undo integration"
11
+ end
@@ -1,11 +1,4 @@
1
- if !!ENV['CI']
2
- require 'coveralls'
3
- Coveralls.wear!
4
- else
5
- require 'pry'
6
- end
7
-
8
- ENV['RAILS_ENV'] ||= 'test'
9
1
  require 'rspec'
2
+ require_relative "support/ci_helper"
10
3
 
11
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
@@ -1,11 +1,3 @@
1
- if !!ENV['CI']
2
- require 'coveralls'
3
- Coveralls.wear!
4
- else
5
- require 'pry'
6
- end
7
-
8
1
  ENV['RAILS_ENV'] ||= 'test'
9
-
2
+ require_relative "spec_helper_lite"
10
3
  require File.expand_path('../rails_app/config/environment', __FILE__)
11
- require 'rspec'
@@ -0,0 +1,16 @@
1
+ if !!ENV["CI"]
2
+ require 'simplecov'
3
+ require 'coveralls'
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+
9
+ SimpleCov.start do
10
+ add_filter '/spec/'
11
+ add_filter '/vendor/'
12
+ minimum_coverage(90)
13
+ end
14
+ else
15
+ require "pry"
16
+ end
@@ -1,20 +1,29 @@
1
1
  require "spec_helper_rails"
2
2
 
3
3
  describe Undo::Storage::RailsCache do
4
+ it "stores and fetches object" do
5
+ subject.store 123, "hello" => "world"
6
+ expect(subject.fetch 123).to eq "hello" => "world"
7
+ end
8
+
9
+ it "deletes stored data" do
10
+ subject.store 123, "hello" => "world"
11
+ subject.delete 123
12
+ expect { subject.fetch 123 }.to raise_error(KeyError)
13
+ end
14
+
4
15
  it "uses Rails.cache by default" do
5
- adapter = described_class.new
6
16
  expect(Rails.cache).to receive :write
7
- adapter.put "foo", "bar"
17
+ subject.store "foo", "bar"
8
18
  end
9
19
 
10
- it "stores object in cache" do
11
- adapter = described_class.new
12
- adapter.put "123", "hello" => "world"
13
- expect(adapter.fetch "123").to eq "hello" => "world"
14
- end
20
+ describe "options" do
21
+ it "accepts known options" do
22
+ expect { subject.store "foo", "bar", expires_in: 1.minute }.not_to raise_error
23
+ end
15
24
 
16
- it "sends params correctly" do
17
- adapter = described_class.new Rails.cache, expires_in: 1.second
18
- expect { adapter.put "foo", "bar" }.not_to raise_error
25
+ it "silently ignores unknown options" do
26
+ expect { subject.store "foo", "bar", unknown: [:something] }.not_to raise_error
27
+ end
19
28
  end
20
29
  end
@@ -2,35 +2,32 @@ require "spec_helper_lite"
2
2
  require 'undo/storage/rails_cache'
3
3
 
4
4
  describe Undo::Storage::RailsCache do
5
- let(:adapter) { described_class.new cache }
6
- let(:cache) { double :cache }
5
+ subject { described_class.new cache }
6
+ let(:cache) { double :cache, exist?: true }
7
7
 
8
- it "writes hash to cache as json" do
9
- expect(cache).to receive(:write).with("123", '{"hello":"world"}', anything)
10
- adapter.put "123", "hello" => "world"
11
- end
8
+ it "uses provided cache storage" do
9
+ subject = described_class.new cache
12
10
 
13
- it "reads hash from cache" do
14
- expect(cache).to receive(:read).with("123", anything) { '{"hello":"world"}' }
15
- expect(adapter.fetch "123").to eq "hello" => "world"
11
+ expect(cache).to receive :write
12
+ subject.store "foo", "bar"
16
13
  end
17
14
 
18
15
  it "does not raise when created without arguments" do
19
16
  expect { described_class.new }.not_to raise_error
20
17
  end
21
18
 
22
- describe "options" do
23
- let(:adapter) { described_class.new cache, options }
24
- let(:options) { Hash.new }
19
+ describe "default options" do
20
+ subject { described_class.new cache, options }
21
+ let(:options) { { additional: :option } }
25
22
 
26
23
  it "sends provided options to cache.read" do
27
- expect(cache).to receive(:read).with any_args, options
28
- adapter.fetch "foo"
24
+ expect(cache).to receive(:read).with anything, options
25
+ subject.fetch "foo"
29
26
  end
30
27
 
31
28
  it "sends provided options to cache.write" do
32
- expect(cache).to receive(:write).with any_args, options
33
- adapter.put "foo", "bar"
29
+ expect(cache).to receive(:write).with anything, anything, options
30
+ subject.store "foo", "bar"
34
31
  end
35
32
 
36
33
  before do
@@ -38,4 +35,26 @@ describe Undo::Storage::RailsCache do
38
35
  allow(cache).to receive(:read).with(any_args) { { :foo => :bar }.to_json }
39
36
  end if RUBY_VERSION < "2.0"
40
37
  end
38
+
39
+ describe "options" do
40
+ let(:object) { double :object }
41
+ let(:options) { { foo: :bar } }
42
+
43
+ it "accepts options per method" do
44
+ cache.as_null_object
45
+
46
+ expect do
47
+ subject.store 123, object, options
48
+ subject.fetch 123, options
49
+ subject.delete 123, options
50
+ end.not_to raise_error
51
+ end
52
+
53
+ it "has higher priority than default options" do
54
+ subject = described_class.new cache, expires_in: 10
55
+
56
+ expect(cache).to receive(:write).with anything, anything, expires_in: 1
57
+ subject.store 123, object, expires_in: 1
58
+ end
59
+ end
41
60
  end
@@ -1,15 +1,17 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'undo/storage/rails_cache'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "undo-storage-rails_cache"
8
- spec.version = Undo::Storage::RailsCache::VERSION
7
+ spec.version = IO.read("VERSION")
9
8
  spec.authors = ["Alexander Paramonov"]
10
9
  spec.email = ["alexander.n.paramonov@gmail.com"]
11
10
  spec.summary = %q{Rails.cache storage adapter for Undo}
12
- spec.description = %q{Rails.cache storage adapter for Undo}
11
+ spec.description = %q{
12
+ Rails.cache storage adapter for Undo. Does not depend on Rails and can
13
+ be used with any similarly quaking storage.
14
+ }
13
15
  spec.homepage = "http://github.com/AlexParamonov/undo-storage-rails_cache"
14
16
  spec.license = "MIT"
15
17
 
@@ -18,7 +20,8 @@ Gem::Specification.new do |spec|
18
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
21
  spec.require_paths = ["lib"]
20
22
 
21
- spec.add_development_dependency "bundler", "~> 1.5"
23
+ spec.add_dependency "undo", "~> 1.0"
24
+ spec.add_development_dependency "bundler", "~> 1.0"
22
25
  spec.add_development_dependency "rake"
23
26
  spec.add_development_dependency "rspec", ">= 3.0.0.beta1"
24
27
  end
metadata CHANGED
@@ -1,75 +1,92 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: undo-storage-rails_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Paramonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-18 00:00:00.000000000 Z
11
+ date: 2014-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: undo
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ~>
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '1.5'
33
+ version: '1.0'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ~>
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '1.5'
40
+ version: '1.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ! '>='
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ! '>='
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ! '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: 3.0.0.beta1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ! '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: 3.0.0.beta1
55
- description: Rails.cache storage adapter for Undo
69
+ description: "\nRails.cache storage adapter for Undo. Does not depend on Rails and
70
+ can\nbe used with any similarly quaking storage.\n "
56
71
  email:
57
72
  - alexander.n.paramonov@gmail.com
58
73
  executables: []
59
74
  extensions: []
60
75
  extra_rdoc_files: []
61
76
  files:
62
- - .coveralls.yml
63
- - .gitignore
64
- - .rspec
65
- - .ruby-gemset
66
- - .ruby-version
67
- - .travis.yml
77
+ - ".coveralls.yml"
78
+ - ".gitignore"
79
+ - ".rspec"
80
+ - ".ruby-gemset"
81
+ - ".ruby-version"
82
+ - ".travis.yml"
68
83
  - Gemfile
69
84
  - LICENSE.txt
70
85
  - README.md
71
86
  - Rakefile
87
+ - VERSION
72
88
  - lib/undo/storage/rails_cache.rb
89
+ - spec/integration/undo_spec.rb
73
90
  - spec/rails_app/.gitignore
74
91
  - spec/rails_app/Rakefile
75
92
  - spec/rails_app/config.ru
@@ -80,6 +97,7 @@ files:
80
97
  - spec/rails_app/script/rails
81
98
  - spec/spec_helper_lite.rb
82
99
  - spec/spec_helper_rails.rb
100
+ - spec/support/ci_helper.rb
83
101
  - spec/undo/storage/rails_cache_integration_spec.rb
84
102
  - spec/undo/storage/rails_cache_spec.rb
85
103
  - undo-storage-rails_cache.gemspec
@@ -93,21 +111,22 @@ require_paths:
93
111
  - lib
94
112
  required_ruby_version: !ruby/object:Gem::Requirement
95
113
  requirements:
96
- - - ! '>='
114
+ - - ">="
97
115
  - !ruby/object:Gem::Version
98
116
  version: '0'
99
117
  required_rubygems_version: !ruby/object:Gem::Requirement
100
118
  requirements:
101
- - - ! '>='
119
+ - - ">="
102
120
  - !ruby/object:Gem::Version
103
121
  version: '0'
104
122
  requirements: []
105
123
  rubyforge_project:
106
- rubygems_version: 2.2.2
124
+ rubygems_version: 2.1.11
107
125
  signing_key:
108
126
  specification_version: 4
109
127
  summary: Rails.cache storage adapter for Undo
110
128
  test_files:
129
+ - spec/integration/undo_spec.rb
111
130
  - spec/rails_app/.gitignore
112
131
  - spec/rails_app/Rakefile
113
132
  - spec/rails_app/config.ru
@@ -118,6 +137,7 @@ test_files:
118
137
  - spec/rails_app/script/rails
119
138
  - spec/spec_helper_lite.rb
120
139
  - spec/spec_helper_rails.rb
140
+ - spec/support/ci_helper.rb
121
141
  - spec/undo/storage/rails_cache_integration_spec.rb
122
142
  - spec/undo/storage/rails_cache_spec.rb
123
143
  has_rdoc: