pusherable 1.0.4 → 1.1.0

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/.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