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