pousse 0.0.1.alpha → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in pousse.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'rspec'
8
+ end
data/README.md CHANGED
@@ -18,7 +18,42 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
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,8 @@
1
+ module Pousse
2
+ class Configuration
3
+ def initialize
4
+ redis = {}
5
+ end
6
+ attr_accessor :redis
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Pousse
2
+ class Mailer < ActionMailer::Base
3
+ default delivery_method: Pousse::RedisDelivery
4
+ end
5
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Pousse
2
- VERSION = "0.0.1.alpha"
2
+ VERSION = "0.0.2"
3
3
  end
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
- # Your code goes here...
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
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_dependency('redis', '>= 3.0.4')
24
+ spec.add_dependency('actionmailer', '>= 3.2.13')
24
25
  end
@@ -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
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'pousse'
5
+
6
+ RSpec.configure do |config|
7
+ # some (optional) config here
8
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pousse
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 0.0.1.alpha
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-18 00:00:00.000000000 Z
13
+ date: 2013-06-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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: 1.3.1
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