mini_memory_store 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f2257c5c9e282097d2c81c3b4d2a70fbb8d3f325dca144c9101b7bae9d1916de
4
+ data.tar.gz: a98048deeedd8d0897f443dcd3132b3a688ee452344eff5184a47aabea6a8220
5
+ SHA512:
6
+ metadata.gz: 74f541768c40df7aef1673270a7f6ba0dd2fb33b6fd4385aa8d6df802b08979d76bf997d1a14e51316af3c29f01dee4b0a49e79c498894d0bf7f08cf7ae6673c
7
+ data.tar.gz: 87c45aa8d158066602c16fb66726deb29401f789ae8cef52a2522ba28a3a1a96609b1877be7315cd34bb03f137e0efcd0a8076c36d6ec9be2d158137e5df6a17
@@ -0,0 +1,20 @@
1
+ Copyright (C) 2013 Michael Grosser <michael@grosser.it>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,13 +1,12 @@
1
+ # frozen_string_literal: true
1
2
  class MiniMemoryStore
2
- VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
3
-
4
- def initialize(options={})
5
- @options = options
3
+ def initialize(expires_in:)
4
+ @expires_in = expires_in
6
5
  @last_set = 0
7
6
  end
8
7
 
9
8
  def set(value)
10
- @last_set = Time.now.to_i
9
+ @last_set = now
11
10
  @value = value
12
11
  end
13
12
 
@@ -19,15 +18,13 @@ class MiniMemoryStore
19
18
  end
20
19
  end
21
20
 
22
- def cache(&block)
21
+ def cache
23
22
  value = get
24
23
  if value.nil?
25
- value = block.call
26
- set(value)
27
- value
28
- else
29
- value
24
+ value = yield
25
+ set value
30
26
  end
27
+ value
31
28
  end
32
29
 
33
30
  def clear
@@ -37,7 +34,10 @@ class MiniMemoryStore
37
34
  private
38
35
 
39
36
  def expired?
40
- return unless @options[:expires_in]
41
- (Time.now.to_i - @options[:expires_in]) >= @last_set
37
+ (now - @expires_in) >= @last_set
38
+ end
39
+
40
+ def now
41
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
42
42
  end
43
- end
43
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+ class MiniMemoryStore
3
+ VERSION = "1.0.0"
4
+ end
metadata CHANGED
@@ -1,117 +1,46 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mini_memory_store
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Michael Grosser
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2010-12-22 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- name: rake
32
- prerelease: false
33
- type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
39
- - - ~>
40
- - !ruby/object:Gem::Version
41
- hash: 7
42
- segments:
43
- - 2
44
- version: "2"
45
- name: rspec
46
- prerelease: false
47
- type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- requirement: &id003 !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
59
- name: jeweler
60
- prerelease: false
61
- type: :development
62
- version_requirements: *id003
11
+ date: 2019-04-02 00:00:00.000000000 Z
12
+ dependencies: []
63
13
  description:
64
14
  email: michael@grosser.it
65
15
  executables: []
66
-
67
16
  extensions: []
68
-
69
17
  extra_rdoc_files: []
70
-
71
- files:
72
- - Gemfile
73
- - Gemfile.lock
74
- - Rakefile
75
- - Readme.md
76
- - VERSION
18
+ files:
19
+ - MIT-LICENSE
77
20
  - lib/mini_memory_store.rb
78
- - mini_memory_store.gemspec
79
- - spec/mini_memory_store_spec.rb
80
- - spec/spec_helper.rb
81
- has_rdoc: true
82
- homepage: http://github.com/grosser/mini_memory_store
83
- licenses: []
84
-
21
+ - lib/mini_memory_store/version.rb
22
+ homepage: https://github.com/grosser/mini_memory_store
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
85
26
  post_install_message:
86
27
  rdoc_options: []
87
-
88
- require_paths:
28
+ require_paths:
89
29
  - lib
90
- required_ruby_version: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
93
32
  - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 3
96
- segments:
97
- - 0
98
- version: "0"
99
- required_rubygems_version: !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
33
+ - !ruby/object:Gem::Version
34
+ version: 2.3.0
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
102
37
  - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 3
105
- segments:
106
- - 0
107
- version: "0"
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
108
40
  requirements: []
109
-
110
41
  rubyforge_project:
111
- rubygems_version: 1.3.7
42
+ rubygems_version: 2.7.6
112
43
  signing_key:
113
- specification_version: 3
44
+ specification_version: 4
114
45
  summary: Store a single value in memory with expiration
115
- test_files:
116
- - spec/mini_memory_store_spec.rb
117
- - spec/spec_helper.rb
46
+ test_files: []
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- source :rubygems
2
-
3
- group :development do
4
- gem 'rake'
5
- gem 'rspec', '~>2'
6
- gem 'jeweler'
7
- end
@@ -1,26 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- diff-lcs (1.1.2)
5
- git (1.2.5)
6
- jeweler (1.5.2)
7
- bundler (~> 1.0.0)
8
- git (>= 1.2.5)
9
- rake
10
- rake (0.8.7)
11
- rspec (2.3.0)
12
- rspec-core (~> 2.3.0)
13
- rspec-expectations (~> 2.3.0)
14
- rspec-mocks (~> 2.3.0)
15
- rspec-core (2.3.1)
16
- rspec-expectations (2.3.0)
17
- diff-lcs (~> 1.1.2)
18
- rspec-mocks (2.3.0)
19
-
20
- PLATFORMS
21
- ruby
22
-
23
- DEPENDENCIES
24
- jeweler
25
- rake
26
- rspec (~> 2)
data/Rakefile DELETED
@@ -1,20 +0,0 @@
1
- task :default => :spec
2
- require "rspec/core/rake_task"
3
- RSpec::Core::RakeTask.new(:spec) do |t|
4
- t.rspec_opts = '--backtrace --color'
5
- end
6
-
7
- begin
8
- require 'jeweler'
9
- Jeweler::Tasks.new do |gem|
10
- gem.name = 'mini_memory_store'
11
- gem.summary = "Store a single value in memory with expiration"
12
- gem.email = "michael@grosser.it"
13
- gem.homepage = "http://github.com/grosser/#{gem.name}"
14
- gem.authors = ["Michael Grosser"]
15
- end
16
-
17
- Jeweler::GemcutterTasks.new
18
- rescue LoadError
19
- puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
20
- end
data/Readme.md DELETED
@@ -1,15 +0,0 @@
1
- Store a single value in memory with expiration
2
-
3
- Install
4
- =======
5
- sudo gem install mini_memory_store
6
-
7
- Usage
8
- =====
9
- CODE_EXAMPLE
10
-
11
- Author
12
- ======
13
- [Michael Grosser](http://grosser.it)
14
- grosser.michael@gmail.com
15
- Hereby placed under public domain, do what you want, just do not hold me accountable...
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0
@@ -1,53 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{mini_memory_store}
8
- s.version = "0.1.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Michael Grosser"]
12
- s.date = %q{2010-12-22}
13
- s.email = %q{michael@grosser.it}
14
- s.files = [
15
- "Gemfile",
16
- "Gemfile.lock",
17
- "Rakefile",
18
- "Readme.md",
19
- "VERSION",
20
- "lib/mini_memory_store.rb",
21
- "mini_memory_store.gemspec",
22
- "spec/mini_memory_store_spec.rb",
23
- "spec/spec_helper.rb"
24
- ]
25
- s.homepage = %q{http://github.com/grosser/mini_memory_store}
26
- s.require_paths = ["lib"]
27
- s.rubygems_version = %q{1.3.7}
28
- s.summary = %q{Store a single value in memory with expiration}
29
- s.test_files = [
30
- "spec/mini_memory_store_spec.rb",
31
- "spec/spec_helper.rb"
32
- ]
33
-
34
- if s.respond_to? :specification_version then
35
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
36
- s.specification_version = 3
37
-
38
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
39
- s.add_development_dependency(%q<rake>, [">= 0"])
40
- s.add_development_dependency(%q<rspec>, ["~> 2"])
41
- s.add_development_dependency(%q<jeweler>, [">= 0"])
42
- else
43
- s.add_dependency(%q<rake>, [">= 0"])
44
- s.add_dependency(%q<rspec>, ["~> 2"])
45
- s.add_dependency(%q<jeweler>, [">= 0"])
46
- end
47
- else
48
- s.add_dependency(%q<rake>, [">= 0"])
49
- s.add_dependency(%q<rspec>, ["~> 2"])
50
- s.add_dependency(%q<jeweler>, [">= 0"])
51
- end
52
- end
53
-
@@ -1,59 +0,0 @@
1
- require File.expand_path('spec/spec_helper')
2
-
3
- describe MiniMemoryStore do
4
- let(:store){ MiniMemoryStore.new }
5
-
6
- it "has a VERSION" do
7
- MiniMemoryStore::VERSION.should =~ /^\d+\.\d+\.\d+$/
8
- end
9
-
10
- it "is nil when not set" do
11
- store.get.should == nil
12
- end
13
-
14
- it "can store a value" do
15
- store.set 1
16
- store.get.should == 1
17
- end
18
-
19
- it "can cache a value" do
20
- store.cache{1}.should == 1
21
- store.cache{2}.should == 1
22
- end
23
-
24
- it "can cache false" do
25
- store.cache{false}.should == false
26
- store.cache{1}.should == false
27
- end
28
-
29
- it "does not cache nil" do
30
- store.cache{nil}.should == nil
31
- store.cache{1}.should == 1
32
- end
33
-
34
- it "clears" do
35
- store.set 1
36
- store.clear
37
- store.get.should == nil
38
- end
39
-
40
- it "does not expire" do
41
- store.set 1
42
- sleep 1
43
- store.get.should == 1
44
- end
45
-
46
- it "expires after given time" do
47
- store = MiniMemoryStore.new(:expires_in => 1)
48
- store.set 1
49
- store.get.should == 1
50
- sleep 1
51
- store.get.should == nil
52
- end
53
-
54
- it "expires immediately with expires_in => 0" do
55
- store = MiniMemoryStore.new(:expires_in => 0)
56
- store.set 1
57
- store.get.should == nil
58
- end
59
- end
@@ -1,2 +0,0 @@
1
- $LOAD_PATH.unshift 'lib'
2
- require 'mini_memory_store'