morlock 0.0.4 → 0.0.6

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/README.markdown CHANGED
@@ -28,7 +28,7 @@ With Bundler:
28
28
 
29
29
  gem 'morlock', :require => 'morlock/rails'
30
30
 
31
- Or in any script after Rails has loaded:
31
+ Or in any script:
32
32
 
33
33
  require 'morlock/rails'
34
34
 
@@ -41,7 +41,7 @@ Possible usages:
41
41
  handle_failed_lock unless morlock.lock(key) do
42
42
  # We have the lock
43
43
  end
44
-
44
+
45
45
  morlock.lock(key) { # We have the lock } || raise "Unable to lock!"
46
46
 
47
47
  morlock.lock(key, :failure => failure_proc) do
@@ -49,3 +49,5 @@ Possible usages:
49
49
  end
50
50
 
51
51
  morlock.lock(key, :failure => failure_proc, :success => success_proc)
52
+
53
+ Morlock doesn't currently do retries, but this could be added in the future. Feel free to submit a patch!
data/lib/morlock/base.rb CHANGED
@@ -11,11 +11,18 @@ class Morlock
11
11
 
12
12
  def lock(key, options = {})
13
13
  lock_obtained = @client.add(key, options[:expiration] || DEFAULT_EXPIRATION)
14
+ puts "Lock for #{key} #{lock_obtained ? "obtained" : "not obtained"}." if options[:verbose]
14
15
  yield if lock_obtained && block_given?
15
16
  options[:success].call if lock_obtained && options[:success]
16
17
  options[:failure].call if !lock_obtained && options[:failure]
17
18
  lock_obtained
18
19
  ensure
19
- @client.delete(key) if lock_obtained
20
+ if lock_obtained
21
+ if @client.delete(key)
22
+ puts "Lock removed for #{key}" if options[:verbose]
23
+ else
24
+ puts "Someone else removed the lock for #{key}!" if options[:verbose]
25
+ end
26
+ end
20
27
  end
21
28
  end
@@ -1,6 +1,6 @@
1
1
  class Morlock
2
- class UnknownGemClient < StandardError;
3
- end
2
+ class UnknownGemClient < StandardError; end
3
+
4
4
 
5
5
  class GemClient
6
6
  GEM_CLIENTS = []
@@ -18,16 +18,16 @@ class Morlock
18
18
  end
19
19
  end
20
20
 
21
- raise UnknownGemClient.new("You provided Morlock a memcached client of an unknown type: #{client.class}")
21
+ raise UnknownGemClient.new("You provided Morlock with a memcached client of an unknown type: #{client.class}")
22
22
  end
23
23
 
24
-
25
24
  def no_server_error(e)
26
- STDERR.puts "WARNING: No memcached server found; Memlock was unable to create a lock. (#{e.message})"
25
+ STDERR.puts "WARNING: No memcached server was found; Memlock was unable to create a lock. (#{e.message})"
27
26
  true
28
27
  end
29
28
  end
30
29
 
30
+
31
31
  class DalliGemClient < GemClient
32
32
  def add(key, expiration)
33
33
  @client.add(key, 1, expiration)
data/lib/morlock/rails.rb CHANGED
@@ -12,6 +12,8 @@ class Morlock
12
12
  end
13
13
  end
14
14
  end
15
+ else
16
+ Rails.logger.warn "WARNING: Morlock could not load @data in #setup_for_mem_cache_store. Perhaps we don't yet work with this version of Rails?"
15
17
  end
16
18
  end
17
19
 
@@ -39,7 +41,6 @@ class Morlock
39
41
  else
40
42
  Rails.logger.warn "WARNING: Morlock detected that you are not using the Rails ActiveSupport::Cache::MemCacheStore. Rails.morlock will not be setup."
41
43
  end
42
-
43
44
  end
44
45
 
45
46
  config.after_initialize do
@@ -1,3 +1,3 @@
1
1
  class Morlock
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morlock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-09 00:00:00.000000000 Z
12
+ date: 2012-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70284346550040 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70284346550040
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rr
27
- requirement: &70284346549520 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,7 +37,12 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70284346549520
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  description: ''
37
47
  email:
38
48
  - pair+andrew+chris@mavenlink.com
@@ -74,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
84
  version: '0'
75
85
  requirements: []
76
86
  rubyforge_project: morlock
77
- rubygems_version: 1.8.15
87
+ rubygems_version: 1.8.24
78
88
  signing_key:
79
89
  specification_version: 3
80
90
  summary: Distributed locking with memcached.