pusherable 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .DS_Store
data/.travis.yml CHANGED
@@ -1,7 +1,9 @@
1
1
  language: ruby
2
2
  script: "bundle install && bundle exec rake"
3
3
  rvm:
4
- - 1.9.2
5
4
  - 1.9.3
5
+ - 2.0.0
6
6
  env:
7
7
  - DB=sqlite3
8
+ services:
9
+ - mongodb
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in pusherable.gemspec
3
+ # Specify your gem"s dependencies in pusherable.gemspec
4
4
  gemspec
5
5
 
6
6
  group :test do
7
- gem 'rake'
7
+ gem "rake"
8
8
  end
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/tonycoco/pusherable.png)](https://travis-ci.org/tonycoco/pusherable)
4
4
 
5
- Adds callback hooks for your _ActiveRecord_ models for sending messages to a _Pusher_ channel.
5
+ Adds callback hooks for your _ActiveModel_ models for sending messages to a _Pusher_ channel.
6
6
 
7
7
  ## Installation
8
8
 
@@ -10,7 +10,7 @@ Install and configure _Pusher_ to work on your application by following the [pus
10
10
 
11
11
  Then, add this line to your application's _Gemfile_:
12
12
 
13
- gem 'pusherable'
13
+ gem "pusherable"
14
14
 
15
15
  And then execute:
16
16
 
@@ -22,17 +22,17 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- Add in the following lines to any _ActiveRecord_ model class:
25
+ Add in the following lines to any _ActiveModel_ model class:
26
26
 
27
- pusherable('some_channel')
27
+ pusherable("some_channel")
28
28
 
29
29
  _Pusherable_ has a default channel of `test_channel`, just like the _Pusher_ example docs, that it will publish to.
30
30
 
31
- On your subscribed client(s), events will be triggered by _Pusher_ reflecting your _ActiveRecord_ create/update/destroy actions.
31
+ On your subscribed client(s), events will be triggered by _Pusher_ reflecting your ActiveModel_ create/update/destroy actions.
32
32
 
33
- Here is a list of the _ActiveRecord_ callbacks that trigger _Pusher_ events...
33
+ Here is a list of the _ActiveModel_ callbacks that trigger _Pusher_ events...
34
34
 
35
- ActiveRecord Callback => Triggered Event
35
+ ActiveModel Callback => Triggered Event
36
36
  ----------------------------------------
37
37
  after_create => "model.create"
38
38
  after_update => "model.update"
@@ -40,17 +40,23 @@ Here is a list of the _ActiveRecord_ callbacks that trigger _Pusher_ events...
40
40
 
41
41
  ### Example
42
42
 
43
- If you have an _ActiveRecord_ model called, _Post_, and you create a new record, _Pusher_ will receive an event called, "post.create".
43
+ If you have an _ActiveModel_ model called, _Post_, and you create a new record, _Pusher_ will receive an event called, "post.create".
44
44
  It will also carry a payload of data containing a _JSON_ representation of the record (literally calling `to_json` on the record).
45
45
 
46
46
  The following callbacks that trigger _Pusher_ events in this _Post_ example will then be...
47
47
 
48
- ActiveRecord Callback => Triggered Event
48
+ ActiveModel Callback => Triggered Event
49
49
  ----------------------------------------
50
50
  after_create => "post.create"
51
51
  after_update => "post.update"
52
52
  before_destroy => "post.destroy"
53
53
 
54
+ Currently this gem extends `ActiveRecord::Base` and `Mongoid::Document` if defined.
55
+
56
+ `ActiveRecord::Base.extend Pusherable`
57
+
58
+ For any other `ActiveModel` compliant "Data store", simply mirror this statement.
59
+
54
60
  ## Contributing
55
61
 
56
62
  1. Fork it
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new
5
5
 
@@ -1,3 +1,3 @@
1
1
  module Pusherable
2
- VERSION = '1.0.4'
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/pusherable.rb CHANGED
@@ -1,46 +1,54 @@
1
- require 'pusherable/version'
1
+ require "pusherable/version"
2
2
 
3
3
  module Pusherable
4
- def pusherable?
5
- false
6
- end
4
+ extend ActiveSupport::Concern
7
5
 
8
- def pusherable(pusherable_channel='test_channel')
9
- raise "Please `gem install pusher` and configure it to run in your app!" if Pusher.app_id.blank? || Pusher.key.blank? || Pusher.secret.blank?
6
+ module ClassMethods
7
+ def pusherable?
8
+ false
9
+ end
10
10
 
11
- class_attribute :pusherable_channel
12
- self.pusherable_channel = pusherable_channel
11
+ def pusherable(pusherable_channel = "test_channel")
12
+ raise "Please `gem install pusher` and configure it to run in your app!" if Pusher.app_id.blank? || Pusher.key.blank? || Pusher.secret.blank?
13
13
 
14
- class_eval do
15
- after_create :pusherable_trigger_create
16
- after_update :pusherable_trigger_update
17
- before_destroy :pusherable_trigger_destroy
14
+ class_attribute :pusherable_channel
15
+ self.pusherable_channel = pusherable_channel
18
16
 
19
- def self.pusherable?
20
- true
21
- end
17
+ class_eval do
18
+ after_create :pusherable_trigger_create
19
+ after_update :pusherable_trigger_update
20
+ before_destroy :pusherable_trigger_destroy
22
21
 
23
- private
22
+ def self.pusherable?
23
+ true
24
+ end
24
25
 
25
- def pusherable_class_name
26
- self.class.name.underscore
27
- end
26
+ private
28
27
 
29
- def pusherable_trigger_create
30
- Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.create", self.to_json)
31
- end
28
+ def pusherable_class_name
29
+ self.class.name.underscore
30
+ end
32
31
 
33
- def pusherable_trigger_update
34
- Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.update", self.to_json)
35
- end
32
+ def pusherable_trigger_create
33
+ Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.create", self.to_json)
34
+ end
35
+
36
+ def pusherable_trigger_update
37
+ Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.update", self.to_json)
38
+ end
36
39
 
37
- def pusherable_trigger_destroy
38
- Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.destroy", self.to_json)
40
+ def pusherable_trigger_destroy
41
+ Pusher.trigger(pusherable_channel, "#{pusherable_class_name}.destroy", self.to_json)
42
+ end
39
43
  end
40
44
  end
41
45
  end
42
46
  end
43
47
 
44
- if defined?(ActiveRecord::Base)
45
- ActiveRecord::Base.extend Pusherable
48
+ if defined?(ActiveRecord) && defined?(ActiveRecord::Base)
49
+ ActiveRecord::Base.send :include, Pusherable
50
+ end
51
+
52
+ if defined?(Mongoid) && defined?(Mongoid::Document)
53
+ Mongoid::Document.send :include, Pusherable
46
54
  end
data/pusherable.gemspec CHANGED
@@ -1,27 +1,28 @@
1
1
  # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'pusherable/version'
4
+ require "pusherable/version"
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = 'pusherable'
7
+ gem.name = "pusherable"
8
8
  gem.version = Pusherable::VERSION
9
- gem.authors = ['Tony Coconate']
10
- gem.email = ['me@tonycoconate.com']
11
- gem.description = %q{Adds callback hooks for your ActiveRecord models for sending messages to a Pusher channel.}
12
- gem.summary = %q{Adds callback hooks for your ActiveRecord models for sending messages to a Pusher channel.}
13
- gem.homepage = 'https://github.com/tonycoco/pusherable'
9
+ gem.authors = ["Tony Coconate"]
10
+ gem.email = ["me@tonycoconate.com"]
11
+ gem.description = %q{Adds callback hooks for your ActiveModel models for sending messages to a Pusher channel.}
12
+ gem.summary = %q{Adds callback hooks to your models for sending messages to a Pusher channel.}
13
+ gem.homepage = "https://github.com/tonycoco/pusherable"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ['lib']
18
+ gem.require_paths = ["lib"]
19
19
 
20
- gem.add_development_dependency 'activerecord', '~> 3.2.0'
21
- gem.add_development_dependency 'pusher', '~> 0.11.0'
22
- gem.add_development_dependency 'sqlite3'
23
- gem.add_development_dependency 'rspec', '~> 2.13.0'
24
- gem.add_development_dependency 'acts_as_fu'
25
- gem.add_development_dependency 'database_cleaner'
26
- gem.add_development_dependency 'rake'
20
+ gem.add_development_dependency "activerecord", ">= 3.2.0"
21
+ gem.add_development_dependency "activesupport", ">= 3.2.0"
22
+ gem.add_development_dependency "mongoid", ">= 3"
23
+ gem.add_development_dependency "mongoid-rspec", ">= 1.6"
24
+ gem.add_development_dependency "pusher", "~> 0.11.0"
25
+ gem.add_development_dependency "rake"
26
+ gem.add_development_dependency "rspec", ">= 2.12.0"
27
+ gem.add_development_dependency "sqlite3"
27
28
  end
@@ -0,0 +1,60 @@
1
+ require "spec_helper"
2
+
3
+ describe Pusherable do
4
+ before do
5
+ Pusher.stub(:trigger).and_return true
6
+ end
7
+
8
+ describe "mongoid setup" do
9
+ it "should make Mongoid::Document models pusherable" do
10
+ expect(MongoidNonPusherableModel.pusherable?).to be_false
11
+ expect(MongoidPusherableModel.pusherable?).to be_true
12
+ end
13
+ end
14
+
15
+ describe "callbacks" do
16
+ let(:pusherable_model) { MongoidPusherableModel.new }
17
+ let(:non_pusherable_model) { MongoidNonPusherableModel.new }
18
+
19
+ it "should trigger after create" do
20
+ pusherable_model.should_receive(:pusherable_trigger_create).once
21
+ pusherable_model.save
22
+ end
23
+
24
+ it "should trigger after update" do
25
+ pusherable_model.should_receive(:pusherable_trigger_create).once
26
+ pusherable_model.save
27
+ pusherable_model.should_receive(:pusherable_trigger_update).once
28
+ pusherable_model.save!
29
+ end
30
+
31
+ it "should trigger after update" do
32
+ pusherable_model.should_receive(:pusherable_trigger_create).once
33
+ pusherable_model.save
34
+ pusherable_model.should_receive(:pusherable_trigger_destroy).once
35
+ pusherable_model.destroy
36
+ end
37
+
38
+ it "should not trigger events on a regular Mongoid model" do
39
+ non_pusherable_model.should_not_receive(:pusherable_trigger_create)
40
+ non_pusherable_model.save
41
+ non_pusherable_model.should_not_receive(:pusherable_trigger_update)
42
+ non_pusherable_model.save
43
+ non_pusherable_model.should_not_receive(:pusherable_trigger_destroy)
44
+ non_pusherable_model.destroy
45
+ end
46
+ end
47
+
48
+ describe "channels" do
49
+ let(:default_model) { MongoidDefaultedPusherableModel.new }
50
+ let(:setup_model) { MongoidPusherableModel.new }
51
+
52
+ it "should get and set the channel to push to" do
53
+ expect(MongoidDefaultedPusherableModel.pusherable_channel).to eq("test_channel")
54
+ expect(MongoidPusherableModel.pusherable_channel).to eq("our_channel")
55
+
56
+ expect(default_model.pusherable_channel).to eq("test_channel")
57
+ expect(setup_model.pusherable_channel).to eq("our_channel")
58
+ end
59
+ end
60
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,31 +1,21 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- require 'active_record'
4
- require 'database_cleaner'
5
- require 'pusher'
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require "pusher"
4
+ require "mongoid"
5
+ require "mongoid-rspec"
6
+ require "active_record"
6
7
 
7
- Pusher.app_id = '123456'
8
- Pusher.secret = 'FAKE'
9
- Pusher.key = 'FAKE'
8
+ Pusher.app_id = "123456"
9
+ Pusher.secret = "FAKE"
10
+ Pusher.key = "FAKE"
10
11
 
11
- require 'pusherable'
12
+ require "pusherable"
12
13
 
13
- ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
14
-
15
- load File.dirname(__FILE__) + '/support/schema.rb'
16
- load File.dirname(__FILE__) + '/support/models.rb'
17
-
18
- RSpec.configure do |config|
19
- config.before(:suite) do
20
- DatabaseCleaner.strategy = :transaction
21
- DatabaseCleaner.clean_with(:truncation)
22
- end
23
-
24
- config.before(:each) do
25
- DatabaseCleaner.start
26
- end
27
-
28
- config.after(:each) do
29
- DatabaseCleaner.clean
30
- end
14
+ Mongoid.configure do |config|
15
+ config.connect_to("pusherable_test")
31
16
  end
17
+ load File.dirname(__FILE__) + "/support/models/mongoid.rb"
18
+
19
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
20
+ load File.dirname(__FILE__) + "/support/schema.rb"
21
+ load File.dirname(__FILE__) + "/support/models/sqlite.rb"
@@ -0,0 +1,60 @@
1
+ require "spec_helper"
2
+
3
+ describe Pusherable do
4
+ before do
5
+ Pusher.stub(:trigger).and_return true
6
+ end
7
+
8
+ describe "setup" do
9
+ it "should make ActiveRecord models pusherable" do
10
+ expect(NonPusherableModel.pusherable?).to be_false
11
+ expect(PusherableModel.pusherable?).to be_true
12
+ end
13
+ end
14
+
15
+ describe "callbacks" do
16
+ let(:pusherable_model) { PusherableModel.new }
17
+ let(:non_pusherable_model) { NonPusherableModel.new }
18
+
19
+ it "should trigger after create" do
20
+ pusherable_model.should_receive(:pusherable_trigger_create).once
21
+ pusherable_model.save
22
+ end
23
+
24
+ it "should trigger after update" do
25
+ pusherable_model.should_receive(:pusherable_trigger_create).once
26
+ pusherable_model.save
27
+ pusherable_model.should_receive(:pusherable_trigger_update).once
28
+ pusherable_model.save!
29
+ end
30
+
31
+ it "should trigger after update" do
32
+ pusherable_model.should_receive(:pusherable_trigger_create).once
33
+ pusherable_model.save
34
+ pusherable_model.should_receive(:pusherable_trigger_destroy).once
35
+ pusherable_model.destroy
36
+ end
37
+
38
+ it "should not trigger events on a regular ActiveRecord model" do
39
+ non_pusherable_model.should_not_receive(:pusherable_trigger_create)
40
+ non_pusherable_model.save
41
+ non_pusherable_model.should_not_receive(:pusherable_trigger_update)
42
+ non_pusherable_model.save
43
+ non_pusherable_model.should_not_receive(:pusherable_trigger_destroy)
44
+ non_pusherable_model.destroy
45
+ end
46
+ end
47
+
48
+ describe "channels" do
49
+ let(:default_model) { DefaultedPusherableModel.new }
50
+ let(:setup_model) { PusherableModel.new }
51
+
52
+ it "should get and set the channel to push to" do
53
+ expect(DefaultedPusherableModel.pusherable_channel).to eq("test_channel")
54
+ expect(PusherableModel.pusherable_channel).to eq("our_channel")
55
+
56
+ expect(default_model.pusherable_channel).to eq("test_channel")
57
+ expect(setup_model.pusherable_channel).to eq("our_channel")
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,13 @@
1
+ class MongoidNonPusherableModel
2
+ include Mongoid::Document
3
+ end
4
+
5
+ class MongoidDefaultedPusherableModel
6
+ include Mongoid::Document
7
+ pusherable
8
+ end
9
+
10
+ class MongoidPusherableModel
11
+ include Mongoid::Document
12
+ pusherable("our_channel")
13
+ end
@@ -6,5 +6,5 @@ class DefaultedPusherableModel < ActiveRecord::Base
6
6
  end
7
7
 
8
8
  class PusherableModel < ActiveRecord::Base
9
- pusherable('our_channel')
9
+ pusherable("our_channel")
10
10
  end
metadata CHANGED
@@ -2,128 +2,144 @@
2
2
  name: pusherable
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.4
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Tony Coconate
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-01 00:00:00.000000000 Z
12
+ date: 2013-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
+ type: :development
16
17
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: 3.2.0
22
- type: :development
23
- version_requirements: !ruby/object:Gem::Requirement
24
22
  none: false
23
+ version_requirements: !ruby/object:Gem::Requirement
25
24
  requirements:
26
- - - ~>
25
+ - - ! '>='
27
26
  - !ruby/object:Gem::Version
28
27
  version: 3.2.0
28
+ none: false
29
29
  prerelease: false
30
30
  - !ruby/object:Gem::Dependency
31
- name: pusher
31
+ name: activesupport
32
+ type: :development
32
33
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
34
  requirements:
35
- - - ~>
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 0.11.0
38
- type: :development
39
- version_requirements: !ruby/object:Gem::Requirement
37
+ version: 3.2.0
40
38
  none: false
39
+ version_requirements: !ruby/object:Gem::Requirement
41
40
  requirements:
42
- - - ~>
41
+ - - ! '>='
43
42
  - !ruby/object:Gem::Version
44
- version: 0.11.0
43
+ version: 3.2.0
44
+ none: false
45
45
  prerelease: false
46
46
  - !ruby/object:Gem::Dependency
47
- name: sqlite3
47
+ name: mongoid
48
+ type: :development
48
49
  requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '3'
49
54
  none: false
55
+ version_requirements: !ruby/object:Gem::Requirement
50
56
  requirements:
51
57
  - - ! '>='
52
58
  - !ruby/object:Gem::Version
53
- version: '0'
59
+ version: '3'
60
+ none: false
61
+ prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: mongoid-rspec
54
64
  type: :development
55
- version_requirements: !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '1.6'
56
70
  none: false
71
+ version_requirements: !ruby/object:Gem::Requirement
57
72
  requirements:
58
73
  - - ! '>='
59
74
  - !ruby/object:Gem::Version
60
- version: '0'
75
+ version: '1.6'
76
+ none: false
61
77
  prerelease: false
62
78
  - !ruby/object:Gem::Dependency
63
- name: rspec
79
+ name: pusher
80
+ type: :development
64
81
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
82
  requirements:
67
83
  - - ~>
68
84
  - !ruby/object:Gem::Version
69
- version: 2.13.0
70
- type: :development
71
- version_requirements: !ruby/object:Gem::Requirement
85
+ version: 0.11.0
72
86
  none: false
87
+ version_requirements: !ruby/object:Gem::Requirement
73
88
  requirements:
74
89
  - - ~>
75
90
  - !ruby/object:Gem::Version
76
- version: 2.13.0
91
+ version: 0.11.0
92
+ none: false
77
93
  prerelease: false
78
94
  - !ruby/object:Gem::Dependency
79
- name: acts_as_fu
95
+ name: rake
96
+ type: :development
80
97
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
98
  requirements:
83
99
  - - ! '>='
84
100
  - !ruby/object:Gem::Version
85
101
  version: '0'
86
- type: :development
87
- version_requirements: !ruby/object:Gem::Requirement
88
102
  none: false
103
+ version_requirements: !ruby/object:Gem::Requirement
89
104
  requirements:
90
105
  - - ! '>='
91
106
  - !ruby/object:Gem::Version
92
107
  version: '0'
108
+ none: false
93
109
  prerelease: false
94
110
  - !ruby/object:Gem::Dependency
95
- name: database_cleaner
111
+ name: rspec
112
+ type: :development
96
113
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
114
  requirements:
99
115
  - - ! '>='
100
116
  - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- version_requirements: !ruby/object:Gem::Requirement
117
+ version: 2.12.0
104
118
  none: false
119
+ version_requirements: !ruby/object:Gem::Requirement
105
120
  requirements:
106
121
  - - ! '>='
107
122
  - !ruby/object:Gem::Version
108
- version: '0'
123
+ version: 2.12.0
124
+ none: false
109
125
  prerelease: false
110
126
  - !ruby/object:Gem::Dependency
111
- name: rake
127
+ name: sqlite3
128
+ type: :development
112
129
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
130
  requirements:
115
131
  - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '0'
118
- type: :development
119
- version_requirements: !ruby/object:Gem::Requirement
120
134
  none: false
135
+ version_requirements: !ruby/object:Gem::Requirement
121
136
  requirements:
122
137
  - - ! '>='
123
138
  - !ruby/object:Gem::Version
124
139
  version: '0'
140
+ none: false
125
141
  prerelease: false
126
- description: Adds callback hooks for your ActiveRecord models for sending messages
142
+ description: Adds callback hooks for your ActiveModel models for sending messages
127
143
  to a Pusher channel.
128
144
  email:
129
145
  - me@tonycoconate.com
@@ -140,9 +156,11 @@ files:
140
156
  - lib/pusherable.rb
141
157
  - lib/pusherable/version.rb
142
158
  - pusherable.gemspec
143
- - spec/pusherable_spec.rb
159
+ - spec/mongoid_pusherable_spec.rb
144
160
  - spec/spec_helper.rb
145
- - spec/support/models.rb
161
+ - spec/sqlite_pusherable_spec.rb
162
+ - spec/support/models/mongoid.rb
163
+ - spec/support/models/sqlite.rb
146
164
  - spec/support/schema.rb
147
165
  homepage: https://github.com/tonycoco/pusherable
148
166
  licenses: []
@@ -151,32 +169,33 @@ rdoc_options: []
151
169
  require_paths:
152
170
  - lib
153
171
  required_ruby_version: !ruby/object:Gem::Requirement
154
- none: false
155
172
  requirements:
156
173
  - - ! '>='
157
174
  - !ruby/object:Gem::Version
158
175
  segments:
159
176
  - 0
160
- hash: 4238303825927332364
177
+ hash: 3897461447202856770
161
178
  version: '0'
162
- required_rubygems_version: !ruby/object:Gem::Requirement
163
179
  none: false
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
181
  requirements:
165
182
  - - ! '>='
166
183
  - !ruby/object:Gem::Version
167
184
  segments:
168
185
  - 0
169
- hash: 4238303825927332364
186
+ hash: 3897461447202856770
170
187
  version: '0'
188
+ none: false
171
189
  requirements: []
172
190
  rubyforge_project:
173
191
  rubygems_version: 1.8.23
174
192
  signing_key:
175
193
  specification_version: 3
176
- summary: Adds callback hooks for your ActiveRecord models for sending messages to
177
- a Pusher channel.
194
+ summary: Adds callback hooks to your models for sending messages to a Pusher channel.
178
195
  test_files:
179
- - spec/pusherable_spec.rb
196
+ - spec/mongoid_pusherable_spec.rb
180
197
  - spec/spec_helper.rb
181
- - spec/support/models.rb
198
+ - spec/sqlite_pusherable_spec.rb
199
+ - spec/support/models/mongoid.rb
200
+ - spec/support/models/sqlite.rb
182
201
  - spec/support/schema.rb
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Pusherable do
4
- before do
5
- Pusher.stub(:trigger).and_return true
6
- end
7
-
8
- describe 'setup' do
9
- it 'should make ActiveRecord models pusherable' do
10
- NonPusherableModel.pusherable?.should == false
11
- PusherableModel.pusherable?.should == true
12
- end
13
- end
14
-
15
- describe 'callbacks' do
16
- before(:each) do
17
- @pusherable_model = PusherableModel.new
18
- @non_pusherable_model = NonPusherableModel.new
19
- end
20
-
21
- it 'should trigger after create' do
22
- @pusherable_model.should_receive(:pusherable_trigger_create).once
23
- @pusherable_model.save
24
- end
25
-
26
- it 'should trigger after update' do
27
- @pusherable_model.should_receive(:pusherable_trigger_create).once
28
- @pusherable_model.save
29
- @pusherable_model.should_receive(:pusherable_trigger_update).once
30
- @pusherable_model.save!
31
- end
32
-
33
- it 'should trigger after update' do
34
- @pusherable_model.should_receive(:pusherable_trigger_create).once
35
- @pusherable_model.save
36
- @pusherable_model.should_receive(:pusherable_trigger_destroy).once
37
- @pusherable_model.destroy
38
- end
39
-
40
- it 'should not trigger events on a regular ActiveRecord model' do
41
- @non_pusherable_model.should_not_receive(:pusherable_trigger_create)
42
- @non_pusherable_model.save
43
- @non_pusherable_model.should_not_receive(:pusherable_trigger_update)
44
- @non_pusherable_model.save
45
- @non_pusherable_model.should_not_receive(:pusherable_trigger_destroy)
46
- @non_pusherable_model.destroy
47
- end
48
- end
49
-
50
- describe 'channels' do
51
- it 'should get and set the channel to push to' do
52
- DefaultedPusherableModel.pusherable_channel.should == 'test_channel'
53
- PusherableModel.pusherable_channel.should == 'our_channel'
54
-
55
- default_model = DefaultedPusherableModel.new
56
- setup_model = PusherableModel.new
57
-
58
- default_model.pusherable_channel.should == 'test_channel'
59
- setup_model.pusherable_channel.should == 'our_channel'
60
- end
61
- end
62
- end