shapkeep 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e5e37117c826802b5ebe29ba7f9fbb0525715c6
4
- data.tar.gz: 8b23acf69f30e5ebcb2f9aba40d95d8ba5925f38
3
+ metadata.gz: ea90acf8097d5ef116cc325be6d7abb35fcaf52d
4
+ data.tar.gz: 1171724f33cfd62b827532305e39cb56a156245c
5
5
  SHA512:
6
- metadata.gz: 7882ad2314d0e4efcf81838f4eba8465c4b64634e7ec786780c0e9410bf20bc3b937e6ccafcb7cc9ebe2194cc25a8345dbfe7a370e90bd4890d7a372f9a450f4
7
- data.tar.gz: 523ae2407eb0fd8d5b4873032b5844f58491636a933cfa41c4139d25aefc8a04fef4c6a5c732d11bb3c4180a609ab4b445a683ca7bc94ac047a11da6dd376292
6
+ metadata.gz: a5209adce06728a4383b1d438b3ddd57b3dc784531f64582e830c01f098a76548dcebe316ce9c8184877539827a3c0cc45e12ee3ed53a7b7ad9d8dae31a17d1e
7
+ data.tar.gz: 2cf976a9b348c96283211bef1939ce5a9e502d8a7e9a0cbba4cfebc6aad4a98ce82b4ab385a13c419082657457a06ccedd384506db193058e2e50da471bd9ec8
data/README.md CHANGED
@@ -57,6 +57,10 @@ Or as a wrapper (uses SimpleDelegator)
57
57
 
58
58
  redis.eval_script(:one, ['key1'], ['arg1'])
59
59
 
60
+ Your YAML file should represent a Hash that looks like:
61
+
62
+ {:script_name => {:script => "script or filename"}}
63
+
60
64
  ## Contributing
61
65
 
62
66
  1. Fork it
@@ -13,7 +13,7 @@ class Shapkeep
13
13
  def eval(redis, name, keys = [], args = [])
14
14
  begin
15
15
  invalid_script_name!(name) unless script_available?(name)
16
- redis.evalsha(sha_for_script(name), keys, args)
16
+ redis.evalsha(sha_for_script_name(name), keys, args)
17
17
  rescue Redis::CommandError => boom
18
18
  raise boom unless boom.message.include?('NOSCRIPT')
19
19
 
@@ -36,16 +36,24 @@ class Shapkeep
36
36
 
37
37
  private
38
38
 
39
- def sha_for_script(name)
40
- script_store[name.to_sym][:sha] ||= sha_script(name)
39
+ def sha_for_script_name(name)
40
+ script_store[name.to_sym][:sha] ||= script_sha(script_for_name(name))
41
41
  end
42
42
 
43
- def sha_script(name)
44
- Digest::SHA1.hexdigest(script_for_name(name))
43
+ def script_sha(script)
44
+ Digest::SHA1.hexdigest(script)
45
45
  end
46
46
 
47
47
  def script_for_name(name)
48
- script_store[name.to_sym][:script]
48
+ potential_script = script_store[name.to_sym][:script]
49
+
50
+ return potential_script unless lua_filename?(potential_script)
51
+
52
+ File.read(potential_script)
53
+ end
54
+
55
+ def lua_filename?(string)
56
+ ['.lua', '.LUA'].include?(string[-4..-1])
49
57
  end
50
58
 
51
59
  def load_script(redis, name)
@@ -1,3 +1,3 @@
1
1
  class Shapkeep
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1 @@
1
+ return 2
@@ -3,3 +3,5 @@
3
3
  :script: return 0
4
4
  :one:
5
5
  :script: return 1
6
+ :file:
7
+ :script: spec/fixtures/return_two.lua
@@ -5,7 +5,7 @@ describe Shapkeep do
5
5
  subject { Shapkeep.new('spec/fixtures/store.yml') }
6
6
 
7
7
  context 'script store' do
8
- specify { expect(subject.script_store.keys).to eq([:zero, :one]) }
8
+ specify { expect(subject.script_store.keys).to eq([:zero, :one, :file]) }
9
9
  end
10
10
 
11
11
  context 'script available' do
@@ -16,8 +16,8 @@ describe Shapkeep do
16
16
  describe 'load scripts' do
17
17
  before { redis.script(:flush); subject.load_scripts!(redis) }
18
18
  specify do
19
- expect(redis.script(:exists, [subject.send(:sha_for_script, :zero),
20
- subject.send(:sha_for_script, :one)])).to be_true
19
+ expect(redis.script(:exists, [subject.send(:sha_for_script_name, :zero),
20
+ subject.send(:sha_for_script_name, :one)])).to be_true
21
21
  end
22
22
  end
23
23
 
@@ -46,6 +46,11 @@ describe Shapkeep do
46
46
  end
47
47
  end
48
48
 
49
+ context 'script is filename' do
50
+ before { redis.script(:flush) }
51
+ specify { expect(subject.eval(redis, :file)).to eq(2) }
52
+ end
53
+
49
54
  context 'script errors' do
50
55
  subject { Shapkeep.new('spec/fixtures/store_error.yml') }
51
56
  specify do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shapkeep
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
  - j-wilkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-02 00:00:00.000000000 Z
11
+ date: 2013-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -82,8 +82,8 @@ files:
82
82
  - lib/shapkeep.rb
83
83
  - lib/shapkeep/version.rb
84
84
  - lib/shapkeep/wrapper.rb
85
- - sha_file.yml
86
85
  - shapkeep.gemspec
86
+ - spec/fixtures/return_two.lua
87
87
  - spec/fixtures/store.yml
88
88
  - spec/fixtures/store_error.yml
89
89
  - spec/shapkeep/wrapper_spec.rb
@@ -114,6 +114,7 @@ signing_key:
114
114
  specification_version: 4
115
115
  summary: EVAL Lua scripts in Redis by name
116
116
  test_files:
117
+ - spec/fixtures/return_two.lua
117
118
  - spec/fixtures/store.yml
118
119
  - spec/fixtures/store_error.yml
119
120
  - spec/shapkeep/wrapper_spec.rb
@@ -1,5 +0,0 @@
1
- ---
2
- :zero:
3
- :script: return 0
4
- :one:
5
- :script: return 1