dashing-rails 2.6.1 → 2.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +6 -3
- data/app/controllers/dashing/events_controller.rb +12 -7
- data/app/controllers/dashing/widgets_controller.rb +3 -1
- data/lib/dashing.rb +4 -2
- data/lib/dashing/configuration.rb +1 -1
- data/lib/dashing/railtie.rb +4 -2
- data/lib/dashing/version.rb +1 -1
- data/spec/controllers/dashing/widgets_controller_spec.rb +3 -2
- data/spec/lib/dashing/configuration_spec.rb +2 -1
- data/spec/support/controller_spec_helpers.rb +5 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06cc63083d02f095ae16feb5e29521f4b448cc97
|
4
|
+
data.tar.gz: bef8bbb5ca30a5ebe0449c3544ace81d8457017a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f940073cb5fe34b9a6b9664f893b57824309fb1a83c88a247d6e2bcb60d10f6a0e2a5f06fb1f5e06c12d809cf2346780321aeb1b20033514e52eadbd516d395
|
7
|
+
data.tar.gz: 49874d2f0102b44446b38beb7af8fa0fa3340067424838012fe8c8409bc4a6a55f3c0a09366e0693bf2c084fab753ac37be9fb22b9313615005bd99bbe7026ef
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -30,8 +30,8 @@ Key features:
|
|
30
30
|
|
31
31
|
## Requirements
|
32
32
|
|
33
|
-
* Ruby >=1.9.3
|
34
|
-
* Rails 4
|
33
|
+
* Ruby >= 1.9.3
|
34
|
+
* Rails >= 4
|
35
35
|
* Redis
|
36
36
|
* Multi Threaded server ([puma](https://github.com/puma/puma), [rainbows](http://rainbows.rubyforge.org/))
|
37
37
|
|
@@ -148,8 +148,11 @@ dashing_events.*
|
|
148
148
|
where `*` can be anything. This give you all the flexibility you need to push to redis. For example the `send_event` method provided by Dashing uses the following namespace:
|
149
149
|
|
150
150
|
```ruby
|
151
|
-
redis.
|
151
|
+
redis.with do |redis_connection|
|
152
|
+
redis_connection.publish("dashing_events.create", {})
|
153
|
+
end
|
152
154
|
```
|
155
|
+
(where `redis_connection` is a redis connection from a connection pooler.)
|
153
156
|
|
154
157
|
You can configure the redis namespace in `config/initializers/dashing.rb`:
|
155
158
|
|
@@ -3,26 +3,31 @@ module Dashing
|
|
3
3
|
include ActionController::Live
|
4
4
|
|
5
5
|
def index
|
6
|
+
@redis = Dashing.redis
|
7
|
+
|
6
8
|
response.headers['Content-Type'] = 'text/event-stream'
|
7
9
|
response.headers['X-Accel-Buffering'] = 'no'
|
8
10
|
response.stream.write latest_events
|
9
11
|
|
10
|
-
@redis
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
@redis.with do |redis_connection|
|
13
|
+
redis_connection.psubscribe("#{Dashing.config.redis_namespace}.*") do |on|
|
14
|
+
on.pmessage do |pattern, event, data|
|
15
|
+
response.stream.write("data: #{data}\n\n")
|
16
|
+
end
|
14
17
|
end
|
15
18
|
end
|
16
19
|
rescue IOError
|
17
20
|
logger.info "[Dashing][#{Time.now.utc.to_s}] Stream closed"
|
18
21
|
ensure
|
19
|
-
@redis.quit
|
22
|
+
@redis.shutdown { |redis_connection| redis_connection.quit }
|
20
23
|
response.stream.close
|
21
24
|
end
|
22
25
|
|
23
26
|
def latest_events
|
24
|
-
|
25
|
-
|
27
|
+
@redis.with do |redis_connection|
|
28
|
+
events = redis_connection.hvals("#{Dashing.config.redis_namespace}.latest")
|
29
|
+
events.map { |v| "data: #{v}\n\n" }.join
|
30
|
+
end
|
26
31
|
end
|
27
32
|
end
|
28
33
|
end
|
@@ -14,7 +14,9 @@ module Dashing
|
|
14
14
|
def update
|
15
15
|
data = params[:widget] || {}
|
16
16
|
hash = data.merge(id: params[:name], updatedAt: Time.now.utc.to_i)
|
17
|
-
Dashing.redis.
|
17
|
+
Dashing.redis.with do |redis_connection|
|
18
|
+
redis_connection.publish("#{Dashing.config.redis_namespace}.create", hash.to_json)
|
19
|
+
end
|
18
20
|
|
19
21
|
render nothing: true
|
20
22
|
end
|
data/lib/dashing.rb
CHANGED
@@ -20,8 +20,10 @@ module Dashing
|
|
20
20
|
|
21
21
|
def send_event(id, data)
|
22
22
|
event = data.merge(id: id, updatedAt: Time.now.utc.to_i).to_json
|
23
|
-
redis.
|
24
|
-
|
23
|
+
redis.with do |redis_connection|
|
24
|
+
redis_connection.hset("#{Dashing.config.redis_namespace}.latest", id, event)
|
25
|
+
redis_connection.publish("#{Dashing.config.redis_namespace}.create", event)
|
26
|
+
end
|
25
27
|
end
|
26
28
|
|
27
29
|
end
|
@@ -43,7 +43,7 @@ module Dashing
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def redis
|
46
|
-
@redis ||= ::ConnectionPool
|
46
|
+
@redis ||= ::ConnectionPool.new(size: request_thread_count, timeout: redis_timeout) { new_redis_connection }
|
47
47
|
end
|
48
48
|
|
49
49
|
def new_redis_connection
|
data/lib/dashing/railtie.rb
CHANGED
@@ -21,8 +21,10 @@ module Dashing
|
|
21
21
|
if defined?(::PhusionPassenger)
|
22
22
|
::PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
23
23
|
if forked
|
24
|
-
::Dashing.redis.
|
25
|
-
|
24
|
+
::Dashing.redis.with do |redis_connection|
|
25
|
+
redis_connection.client.disconnect
|
26
|
+
redis_connection.client.connect
|
27
|
+
end
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
data/lib/dashing/version.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
RSpec.describe Dashing::WidgetsController do
|
2
2
|
|
3
3
|
let(:redis) { double }
|
4
|
+
let(:redis_connection) { double }
|
4
5
|
|
5
6
|
before do
|
6
|
-
|
7
|
+
stub_redis_with_connection(redis, redis_connection)
|
7
8
|
@routes = Dashing::Engine.routes
|
8
9
|
end
|
9
10
|
|
@@ -49,7 +50,7 @@ RSpec.describe Dashing::WidgetsController do
|
|
49
50
|
context 'when valid' do
|
50
51
|
|
51
52
|
before do
|
52
|
-
expect(
|
53
|
+
expect(redis_connection).to receive(:publish)
|
53
54
|
end
|
54
55
|
|
55
56
|
it 'responds success' do
|
@@ -4,7 +4,8 @@ RSpec.describe Dashing::Configuration do
|
|
4
4
|
|
5
5
|
it { expect(instance.engine_path).to eq('/dashing') }
|
6
6
|
# it { expect(instance.scheduler).to be_a(::Rufus::Scheduler.new) }
|
7
|
-
it { expect(instance.redis).to be_a(::
|
7
|
+
it { expect(instance.redis).to be_a(::ConnectionPool) }
|
8
|
+
it { instance.redis.with { |r| expect(r).to be_a(::Redis) } }
|
8
9
|
|
9
10
|
# Redis
|
10
11
|
it { expect(instance.redis_host).to eq('127.0.0.1') }
|
@@ -6,4 +6,9 @@ module ControllerSpecHelpers
|
|
6
6
|
def stub_redis(stubbed_redis)
|
7
7
|
allow(Dashing.config).to receive(:redis).and_return(stubbed_redis)
|
8
8
|
end
|
9
|
+
|
10
|
+
def stub_redis_with_connection(stubbed_redis, stubbed_redis_connection)
|
11
|
+
stub_redis(stubbed_redis)
|
12
|
+
allow(stubbed_redis).to receive(:with).and_yield(stubbed_redis_connection)
|
13
|
+
end
|
9
14
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dashing-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre-Louis Gottfrois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
316
|
version: '0'
|
317
317
|
requirements: []
|
318
318
|
rubyforge_project:
|
319
|
-
rubygems_version: 2.
|
319
|
+
rubygems_version: 2.6.13
|
320
320
|
signing_key:
|
321
321
|
specification_version: 4
|
322
322
|
summary: The exceptionally handsome dashboard framework for Rails.
|