bustle 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -99,7 +99,10 @@ When activities occur:
99
99
  #### Register a Subscriber
100
100
 
101
101
  ```ruby
102
+ # returns a subscriber instance upon duplicated entry
102
103
  Bustle::Subscribers.add subscriber
104
+ # raises error upon duplicated entry
105
+ Bustle::Subscribers.add! subscriber
103
106
 
104
107
  # example
105
108
  user = User.find(1)
@@ -109,7 +112,10 @@ Bustle::Subscribers.add user
109
112
  #### Register a Publisher
110
113
 
111
114
  ```ruby
115
+ # returns a publisher instance upon duplicated entry
112
116
  Bustle::Publishers.add publisher
117
+ # raises error upon duplicated entry
118
+ Bustle::Publishers.add! publisher
113
119
 
114
120
  # example
115
121
  post = Post.find(1)
@@ -175,8 +181,8 @@ Bustle::Publishers.add post
175
181
  publisher = Bustle::Publishers.get post
176
182
  publisher.publish({
177
183
  :resource => comment,
178
- :action => 'new,
179
- :data => 'a new comment has been posted'
184
+ :action => 'new',
185
+ :data => 'useful for putting serialized data or JSON here'
180
186
  })
181
187
  ```
182
188
 
@@ -4,6 +4,12 @@ module Bustle::Concern
4
4
 
5
5
  module ClassMethods
6
6
  def add(resource)
7
+ add!(resource)
8
+ rescue
9
+ get(resource)
10
+ end
11
+
12
+ def add!(resource)
7
13
  self::RESOURCE_NAME.constantize.to_adapter.create!(
8
14
  :resource_class => resource.class.name,
9
15
  :resource_id => resource.id
@@ -1,3 +1,3 @@
1
1
  module Bustle
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -42,5 +42,12 @@ ActiveRecord::Migration.suppress_messages do
42
42
  t.integer :subscriber_id
43
43
  t.timestamps
44
44
  end
45
+
46
+ add_index :bustle_activities, :publisher_id
47
+ add_index :bustle_publishers, [:resource_class, :resource_id], :unique => true
48
+ add_index :bustle_subscribers, [:resource_class, :resource_id], :unique => true
49
+ add_index :bustle_subscriptions, :publisher_id
50
+ add_index :bustle_subscriptions, :subscriber_id
51
+ add_index :bustle_subscriptions, [:publisher_id, :subscriber_id], :unique => true
45
52
  end
46
53
  end
@@ -1,24 +1,46 @@
1
1
  shared_examples 'resource_collection' do
2
2
  let(:resource_class) { described_class::RESOURCE_NAME.constantize.to_adapter }
3
3
 
4
- before do
5
- described_class.add user
6
- end
4
+ context "#add" do
5
+ it "adds a model record" do
6
+ described_class.add(user).resource_class.should == 'Bustle::Dummy::User'
7
+ end
7
8
 
8
- it "adds a model record" do
9
- model = resource_class.get(1)
10
- model.resource_class.should == 'Bustle::Dummy::User'
11
- model.resource_id.should == 42
12
- end
9
+ it "gets the model if it already exists" do
10
+ described_class.add(user)
11
+ described_class.add(user).resource_class.should == 'Bustle::Dummy::User'
12
+ end
13
+
14
+ it "explicitly adds a model record" do
15
+ described_class.add!(user).resource_class.should == 'Bustle::Dummy::User'
16
+ end
13
17
 
14
- it "finds a model record" do
15
- model = described_class.get user
16
- model.resource_class.should == 'Bustle::Dummy::User'
17
- model.resource_id.should == 42
18
+ it "raises error if the model already exists" do
19
+ described_class.add(user)
20
+ expect { described_class.add!(user) }.to raise_error
21
+ end
18
22
  end
19
23
 
20
- it "removes a model record" do
21
- described_class.remove(user)
22
- resource_class.find_all({}).count.should == 0
24
+ context "get/remove" do
25
+ before do
26
+ described_class.add user
27
+ end
28
+
29
+ it "adds a model record" do
30
+ model = resource_class.get(1)
31
+ model.resource_class.should == 'Bustle::Dummy::User'
32
+ model.resource_id.should == 42
33
+ end
34
+
35
+ it "finds a model record" do
36
+ model = described_class.get user
37
+ model.resource_class.should == 'Bustle::Dummy::User'
38
+ model.resource_id.should == 42
39
+ end
40
+
41
+ it "removes a model record" do
42
+ described_class.remove(user)
43
+ resource_class.find_all({}).count.should == 0
44
+ end
23
45
  end
24
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bustle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
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-06-13 00:00:00.000000000 Z
12
+ date: 2012-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -234,7 +234,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
234
234
  version: '0'
235
235
  segments:
236
236
  - 0
237
- hash: -534014299533993721
237
+ hash: 1375749694743315937
238
238
  required_rubygems_version: !ruby/object:Gem::Requirement
239
239
  none: false
240
240
  requirements:
@@ -243,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
243
  version: '0'
244
244
  segments:
245
245
  - 0
246
- hash: -534014299533993721
246
+ hash: 1375749694743315937
247
247
  requirements: []
248
248
  rubyforge_project:
249
249
  rubygems_version: 1.8.24