restalk 0.0.0.13 → 0.0.0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/.gemspec +23 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +36 -0
  4. data/lib/restalk.rb +69 -0
  5. metadata +6 -2
@@ -0,0 +1,23 @@
1
+ require File.expand_path("../lib/restalk", __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'restalk'
5
+ gem.version = Restalk::VERSION
6
+ gem.date = Date.today.to_s
7
+
8
+ gem.summary = "Abstraction layer between Beanstalk / Resque"
9
+ gem.description = "Makes migrating from Beanstalk to resque (or back again) super-simple. Other backends welcome."
10
+
11
+ gem.authors = ['Matthew Bennett']
12
+ gem.email = 'matthew@quickwebdesign.net'
13
+ gem.homepage = 'http://github.com/undecisive/restalk'
14
+
15
+ #gem.add_development_dependency('rake')
16
+ gem.add_dependency('beanstalk-client', ["1.0.2"])
17
+ gem.add_dependency('resque', ['1.21.0'])
18
+
19
+ # ensure the gem is built out of versioned files
20
+ gem.files = `git ls-files`.split($\)
21
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
22
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
23
+ end
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ restalk (0.0.0.10)
5
+ beanstalk-client (= 1.0.2)
6
+ resque (= 1.21.0)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ beanstalk-client (1.0.2)
12
+ multi_json (1.3.6)
13
+ rack (1.4.1)
14
+ rack-protection (1.2.0)
15
+ rack
16
+ redis (3.0.1)
17
+ redis-namespace (1.2.0)
18
+ redis (~> 3.0.0)
19
+ resque (1.21.0)
20
+ multi_json (~> 1.0)
21
+ redis-namespace (~> 1.0)
22
+ sinatra (>= 0.9.2)
23
+ vegas (~> 0.1.2)
24
+ sinatra (1.3.2)
25
+ rack (~> 1.3, >= 1.3.6)
26
+ rack-protection (~> 1.2)
27
+ tilt (~> 1.3, >= 1.3.3)
28
+ tilt (1.3.3)
29
+ vegas (0.1.11)
30
+ rack (>= 1.0.0)
31
+
32
+ PLATFORMS
33
+ ruby
34
+
35
+ DEPENDENCIES
36
+ restalk!
@@ -0,0 +1,69 @@
1
+
2
+ class Restalk
3
+ VERSION = '0.0.0.14'
4
+ def self.init(adapter)
5
+ extend BeanstalkAdapter if adapter == :beanstalk
6
+ extend ResqueAdapter if [:resque, :redis].include? adapter
7
+ super()
8
+ end
9
+
10
+ def self.connected?
11
+ self.respond_to? :push
12
+ end
13
+
14
+ module BeanstalkAdapter
15
+ def init
16
+ require 'beanstalk-client'
17
+ @@beanstalk = Beanstalk::Pool.new([ENV['BEANSTALK'] || '127.0.0.1:11300'])
18
+ end
19
+
20
+ def push(data)
21
+ @@beanstalk.put(data)
22
+ end
23
+
24
+ def pop
25
+ @@beanstalk.reserve
26
+ end
27
+
28
+ def stats
29
+ @@beanstalk.stats
30
+ end
31
+ end
32
+
33
+ module ResqueAdapter
34
+ QUEUE = ENV['RESQUE_QUEUE'] || 'restalk_queue'
35
+ def init
36
+ require 'resque'
37
+ Resque.redis = ENV['REDIS'] || 'localhost:6379'
38
+ end
39
+
40
+ def push(data)
41
+ Resque.enqueue_to(QUEUE, RestalkResqueJob, data)
42
+ end
43
+
44
+ def pop
45
+ data = Resque.pop QUEUE
46
+ return RestalkResqueJob.new data['args'].first if data
47
+ end
48
+
49
+ def stats
50
+ Resque.info
51
+ end
52
+
53
+ class RestalkResqueJob
54
+ attr_accessor :body
55
+ def initialize(data)
56
+ @body = data
57
+ end
58
+
59
+ def perform(data)
60
+ @body = data
61
+ self
62
+ end
63
+
64
+ def delete
65
+ true
66
+ end
67
+ end
68
+ end
69
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.13
4
+ version: 0.0.0.14
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-07-31 00:00:00.000000000 Z
12
+ date: 2012-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: beanstalk-client
@@ -50,7 +50,11 @@ executables: []
50
50
  extensions: []
51
51
  extra_rdoc_files: []
52
52
  files:
53
+ - .gemspec
54
+ - Gemfile
55
+ - Gemfile.lock
53
56
  - README.md
57
+ - lib/restalk.rb
54
58
  homepage: http://github.com/undecisive/restalk
55
59
  licenses: []
56
60
  post_install_message: