acts_as_queue 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,31 @@
1
+ = acts_as_queue
2
+
3
+ <tt>acts_as_queue</tt> is a gem for ActiveRecord that allows you to turn any of your ActiveRecord models into a queue.
4
+
5
+ acts_as_queue provides you with methods to simplify using your ActiveRecord as a queue. The two key methods it provides are <tt>Push</tt> and <tt>Pop</tt>.
6
+
7
+ <tt>Push</tt> is used when you want to add an item to your queue. <tt>Pop</tt> is used when you need to process or remove the earliest item from your queue.
8
+
9
+ == Using the default unbounded queue
10
+
11
+ class Post < ActiveRecord::Base
12
+ acts_as_queue
13
+ end
14
+
15
+ # Pushing new posts onto the queue.
16
+ Post.push :name => "Hello World"
17
+ Post.push :name => "Using Rails"
18
+
19
+ # Popping the item at the front of the queue.
20
+ Post.pop
21
+
22
+ == Using a bounded queue
23
+
24
+ class Message < ActiveRecord::Base
25
+ acts_as_queue :size => 10
26
+ end
27
+
28
+ # Pushing 20 new messages onto the queue.
29
+ (1..20).each { |i| Message.push :description => "Message #{i}" }
30
+
31
+ Message.count # Just 10 messages on the queue
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "acts_as_queue"
6
- s.version = "0.1.2"
6
+ s.version = "0.1.3"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Matthew Lang"]
9
9
  s.email = ["matthew@matthewlang.co.uk"]
data/lib/acts_as_queue.rb CHANGED
@@ -4,8 +4,27 @@ module ActsAsQueue
4
4
  base.extend(ClassMethods)
5
5
  end
6
6
 
7
+ # +acts_as_queue+ allows you to turn any ActiveRecord model into a queue, providing you with the necessary actions to manipulate your model.
8
+ # The class also allows you to define a queue size so that your queue can then become a bounded queue.
9
+ #
10
+ # acts_as_queue example
11
+ #
12
+ # class Post < ActiveRecord::Base
13
+ # acts_as_queue
14
+ # end
15
+ #
16
+ # # Pushing new posts onto the queue.
17
+ # Post.push :name => "Hello World"
18
+ # Post.push :name => "Using Rails"
19
+ #
20
+ # # Popping the item at the front of the queue.
21
+ # Post.pop
7
22
  module ClassMethods
8
23
 
24
+ # Configuration options are:
25
+ #
26
+ # +size+ - specifies the bounded queue size.
27
+ # Example: +acts_as_queue :size => 20+
9
28
  def acts_as_queue(options = {})
10
29
  configuration = { :size => "0" }
11
30
  configuration.update(options) if options.is_a?(Hash)
@@ -18,6 +37,7 @@ module ActsAsQueue
18
37
  EOV
19
38
  end
20
39
 
40
+ # Pushes an item onto the queue.
21
41
  def push(attributes)
22
42
  if (self.queue_size > 0) && (self.count == self.queue_size)
23
43
  popped = self.pop
@@ -26,12 +46,14 @@ module ActsAsQueue
26
46
  self.create(attributes)
27
47
  end
28
48
 
49
+ # Pops the earliest item from the queue.
29
50
  def pop
30
51
  attributes = self.first.attributes
31
52
  self.first.delete
32
53
  attributes.inject({}) { |attribute,(k,v)| attribute[k.to_sym] = v; attribute }
33
54
  end
34
55
 
56
+ # Returns the number of items in the queue.
35
57
  def count
36
58
  self.find(:all).count
37
59
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_queue
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 1
9
- - 2
10
- version: 0.1.2
8
+ - 3
9
+ version: 0.1.3
11
10
  platform: ruby
12
11
  authors:
13
12
  - Matthew Lang
@@ -15,18 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-10-27 00:00:00 +01:00
17
+ date: 2010-11-06 00:00:00 +00:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: shoulda
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ">="
28
26
  - !ruby/object:Gem::Version
29
- hash: 37
30
27
  segments:
31
28
  - 2
32
29
  - 11
@@ -47,7 +44,7 @@ files:
47
44
  - .gitignore
48
45
  - Gemfile
49
46
  - MIT-LICENSE
50
- - README
47
+ - README.rdoc
51
48
  - Rakefile
52
49
  - acts_as_queue.gemspec
53
50
  - init.rb
@@ -63,27 +60,23 @@ rdoc_options: []
63
60
  require_paths:
64
61
  - lib
65
62
  required_ruby_version: !ruby/object:Gem::Requirement
66
- none: false
67
63
  requirements:
68
64
  - - ">="
69
65
  - !ruby/object:Gem::Version
70
- hash: 3
71
66
  segments:
72
67
  - 0
73
68
  version: "0"
74
69
  required_rubygems_version: !ruby/object:Gem::Requirement
75
- none: false
76
70
  requirements:
77
71
  - - ">="
78
72
  - !ruby/object:Gem::Version
79
- hash: 3
80
73
  segments:
81
74
  - 0
82
75
  version: "0"
83
76
  requirements: []
84
77
 
85
78
  rubyforge_project:
86
- rubygems_version: 1.3.7
79
+ rubygems_version: 1.3.6
87
80
  signing_key:
88
81
  specification_version: 3
89
82
  summary: Allows you to turn your ActiveRecord models into queues.
data/README DELETED
@@ -1,27 +0,0 @@
1
- = acts_as_queue
2
-
3
- acts_as_queue is a plugin for ActiveRecord that allows you to turn any of your ActiveRecord models into a queue.
4
-
5
- == Using the default queue size
6
-
7
- class Post < ActiveRecord::Base
8
- acts_as_queue
9
- end
10
-
11
- # Pushing new posts onto the queue.
12
- Post.push :name => "Hello World"
13
- Post.push :name => "Using Rails"
14
-
15
- # Popping the item at the front of the queue.
16
- Post.pop
17
-
18
- == Using a queue size
19
-
20
- class Message < ActiveRecord::Base
21
- acts_as_queue :size => 10
22
- end
23
-
24
- # Pushing 20 new messages onto the queue.
25
- (1..20).each { |i| Message.push :description => "Message #{i}" }
26
-
27
- Message.count # Just 10 messages on the queue