pousse 0.0.1.alpha → 0.0.2
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/.rspec +1 -0
- data/Gemfile +4 -0
- data/README.md +36 -1
- data/lib/pousse/configuration.rb +8 -0
- data/lib/pousse/mailer.rb +5 -0
- data/lib/pousse/redis_delivery.rb +24 -0
- data/lib/pousse/version.rb +1 -1
- data/lib/pousse.rb +17 -1
- data/pousse.gemspec +1 -0
- data/spec/pousse/pousse_spec.rb +57 -0
- data/spec/redis_delivery_spec.rb +39 -0
- data/spec/spec_helper.rb +8 -0
- metadata +48 -22
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -18,7 +18,42 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
Create an initializer config/initializer/pousse.rb
|
22
|
+
|
23
|
+
```
|
24
|
+
Pousse::configure do |config|
|
25
|
+
end
|
26
|
+
```
|
27
|
+
|
28
|
+
Add this line to your layout :
|
29
|
+
|
30
|
+
```
|
31
|
+
<div data-pousse="<%= Pousse::layout([:everybody]) %>">
|
32
|
+
```
|
33
|
+
|
34
|
+
Include the javascript :
|
35
|
+
|
36
|
+
```
|
37
|
+
//require pousse
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
Create a new mailer in app/mailer/pousse.rb
|
42
|
+
```
|
43
|
+
class AlertMailer < Pousse::Mailer
|
44
|
+
def send_alert
|
45
|
+
mail(
|
46
|
+
to: 'everybody',
|
47
|
+
body: 'alert("Hello World !")'
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
|
54
|
+
### TODO :
|
55
|
+
|
56
|
+
Should add some logging when redis is not available.
|
22
57
|
|
23
58
|
## Contributing
|
24
59
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Pousse
|
2
|
+
|
3
|
+
class RedisDelivery
|
4
|
+
def initialize values = {}
|
5
|
+
configuration = Pousse::configuration
|
6
|
+
@redis_config = configuration.redis
|
7
|
+
end
|
8
|
+
|
9
|
+
def deliver!(mail)
|
10
|
+
puts "DELIVER ??"
|
11
|
+
begin
|
12
|
+
redis = Redis.new
|
13
|
+
mail.to.each do |to|
|
14
|
+
redis.publish(to, mail.body.decoded)
|
15
|
+
end
|
16
|
+
@redis_config
|
17
|
+
rescue Exception => e
|
18
|
+
#TODO: Use a real logguer ??
|
19
|
+
puts "NOTIFICATION NOT DELIVERED: #{e.message}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/pousse/version.rb
CHANGED
data/lib/pousse.rb
CHANGED
@@ -1,5 +1,21 @@
|
|
1
|
+
require 'redis'
|
2
|
+
require 'action_mailer'
|
1
3
|
require "pousse/version"
|
4
|
+
require 'pousse/configuration'
|
5
|
+
require 'pousse/redis_delivery'
|
6
|
+
require 'pousse/mailer'
|
2
7
|
|
3
8
|
module Pousse
|
4
|
-
|
9
|
+
class << self
|
10
|
+
|
11
|
+
attr_accessor :configuration
|
12
|
+
|
13
|
+
def configuration
|
14
|
+
@configuration ||= Configuration.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def configure
|
18
|
+
yield configuration
|
19
|
+
end
|
20
|
+
end
|
5
21
|
end
|
data/pousse.gemspec
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Pousse do
|
5
|
+
|
6
|
+
|
7
|
+
describe 'Mailer' do
|
8
|
+
|
9
|
+
let :mailer do
|
10
|
+
Class.new(Pousse::Mailer) do
|
11
|
+
def send_alert
|
12
|
+
mail(
|
13
|
+
to: 'everybody',
|
14
|
+
body: 'alert("Générale !");'
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
let :redis_instance do
|
21
|
+
redis_instance = stub()
|
22
|
+
Redis.stub(new: redis_instance)
|
23
|
+
redis_instance
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'provide Pousse::Mailer' do
|
27
|
+
expect{
|
28
|
+
Class.new Pousse::Mailer
|
29
|
+
}.to_not raise_error
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'sends the message to redis' do
|
33
|
+
redis_instance
|
34
|
+
.should_receive(:publish)
|
35
|
+
.with('everybody', 'alert("Générale !");')
|
36
|
+
mailer.send_alert.deliver
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
describe '#configure' do
|
43
|
+
it 'accept redis_configuration' do
|
44
|
+
Pousse::configure do |config|
|
45
|
+
config.redis = {}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#send' do
|
51
|
+
it 'render and send a js message' do
|
52
|
+
#Pousse::pousse('test', 'mytemplate')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Pousse::RedisDelivery do
|
5
|
+
|
6
|
+
let :redis do
|
7
|
+
Pousse::RedisDelivery.new {}
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#deliver!' do
|
11
|
+
|
12
|
+
let :redis_instance do
|
13
|
+
redis_instance = stub()
|
14
|
+
Redis.stub(new: redis_instance)
|
15
|
+
redis_instance
|
16
|
+
end
|
17
|
+
|
18
|
+
let :mail do
|
19
|
+
stub(
|
20
|
+
to: 'everyone',
|
21
|
+
body: 'alert("Générale !");'
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'publish to redis' do
|
26
|
+
redis_instance
|
27
|
+
.should_receive(:publish)
|
28
|
+
.with('everyone', 'alert("Générale !");')
|
29
|
+
redis.deliver!(mail)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'does not fail when redis can not connect' do
|
33
|
+
redis_instance.should_receive :publish do
|
34
|
+
raise Redis::CannotConnectError.new 'Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)'
|
35
|
+
end
|
36
|
+
expect{ redis.deliver!(mail) }.to_not raise_error
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pousse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Julien Lerpscher
|
@@ -10,56 +10,72 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ~>
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: '1.3'
|
21
|
-
none: false
|
22
|
-
name: bundler
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
26
27
|
requirements:
|
27
28
|
- - ~>
|
28
29
|
- !ruby/object:Gem::Version
|
29
30
|
version: '1.3'
|
30
|
-
none: false
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
33
35
|
requirements:
|
34
36
|
- - ! '>='
|
35
37
|
- !ruby/object:Gem::Version
|
36
38
|
version: '0'
|
37
|
-
none: false
|
38
|
-
name: rake
|
39
39
|
type: :development
|
40
40
|
prerelease: false
|
41
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
42
43
|
requirements:
|
43
44
|
- - ! '>='
|
44
45
|
- !ruby/object:Gem::Version
|
45
46
|
version: '0'
|
46
|
-
none: false
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
|
48
|
+
name: redis
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
49
51
|
requirements:
|
50
52
|
- - ! '>='
|
51
53
|
- !ruby/object:Gem::Version
|
52
54
|
version: 3.0.4
|
53
|
-
none: false
|
54
|
-
name: redis
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
58
59
|
requirements:
|
59
60
|
- - ! '>='
|
60
61
|
- !ruby/object:Gem::Version
|
61
62
|
version: 3.0.4
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: actionmailer
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
62
66
|
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.2.13
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 3.2.13
|
63
79
|
description: Pousse, simple realtime for rails applications
|
64
80
|
email:
|
65
81
|
- julien@studyka.com
|
@@ -69,13 +85,20 @@ extensions: []
|
|
69
85
|
extra_rdoc_files: []
|
70
86
|
files:
|
71
87
|
- .gitignore
|
88
|
+
- .rspec
|
72
89
|
- Gemfile
|
73
90
|
- LICENSE.txt
|
74
91
|
- README.md
|
75
92
|
- Rakefile
|
76
93
|
- lib/pousse.rb
|
94
|
+
- lib/pousse/configuration.rb
|
95
|
+
- lib/pousse/mailer.rb
|
96
|
+
- lib/pousse/redis_delivery.rb
|
77
97
|
- lib/pousse/version.rb
|
78
98
|
- pousse.gemspec
|
99
|
+
- spec/pousse/pousse_spec.rb
|
100
|
+
- spec/redis_delivery_spec.rb
|
101
|
+
- spec/spec_helper.rb
|
79
102
|
homepage: ''
|
80
103
|
licenses:
|
81
104
|
- MIT
|
@@ -84,21 +107,24 @@ rdoc_options: []
|
|
84
107
|
require_paths:
|
85
108
|
- lib
|
86
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
87
111
|
requirements:
|
88
112
|
- - ! '>='
|
89
113
|
- !ruby/object:Gem::Version
|
90
114
|
version: '0'
|
91
|
-
none: false
|
92
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
93
117
|
requirements:
|
94
|
-
- - ! '
|
118
|
+
- - ! '>='
|
95
119
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
none: false
|
120
|
+
version: '0'
|
98
121
|
requirements: []
|
99
122
|
rubyforge_project:
|
100
123
|
rubygems_version: 1.8.23
|
101
124
|
signing_key:
|
102
125
|
specification_version: 3
|
103
126
|
summary: Pousse, simple realtime for rails applications
|
104
|
-
test_files:
|
127
|
+
test_files:
|
128
|
+
- spec/pousse/pousse_spec.rb
|
129
|
+
- spec/redis_delivery_spec.rb
|
130
|
+
- spec/spec_helper.rb
|