middleman-dato 0.5.24 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ea2407f7c1f9ac3fcaca5adcb47bc2f6ac3785f
4
- data.tar.gz: 98d081e1bb716dad649277d023d8acb389b1e1ff
3
+ metadata.gz: fccad677bb46da054f82c529dc8110920e000eaf
4
+ data.tar.gz: c7e2494548c6bd5b2df136be13c07cfe5bce10ee
5
5
  SHA512:
6
- metadata.gz: ca3280632ab6d349820407a098d57a53369a7e142dedeabc6009109104c55582da26f9c15fd9104711c1f8e61f1c71d80678baaed1fcd3700d47d13e8ffe7885
7
- data.tar.gz: 58f973e3e4490aa575518e4b86f006bf940a9daf3397d701f00292531774d1596ecfa95c9e96e1396dff73b3d79d634f12367e22e55c594a85bf2a92b4d7deb2
6
+ metadata.gz: 62252d9f6e85a376f73a453a55ea1b054194903ca50fd54400082264c063d3490900ddab413c68f518731291f355c801368150940b02d41a176513ea3ac39aa5
7
+ data.tar.gz: 8d3b64ca62c474b8b44fb38447d363eb699308e3fe23835c5efd6a4dc122956a763849be2098925a993b870fbef2cd0dd3b14d0f21d674fbfead1866ddda0d25
@@ -1,13 +1,57 @@
1
1
  # frozen_string_literal: true
2
2
  require 'middleman-core'
3
3
  require 'middleman-core/version'
4
- require 'semantic'
5
4
  require 'dato/site/client'
6
5
  require 'dato/local/loader'
7
6
  require 'middleman_dato/meta_tags_builder'
8
7
  require 'middleman_dato/meta_tags/favicon'
8
+ require 'pusher-client'
9
9
 
10
10
  module MiddlemanDato
11
+ class Watcher
12
+ include Singleton
13
+ attr_reader :event_queue
14
+
15
+ def initialize
16
+ PusherClient.logger.level = Logger::WARN
17
+ @site_id = nil
18
+ @apps = []
19
+ end
20
+
21
+ def watch(app, loader, site_id)
22
+ @app = app
23
+ @loader = loader
24
+
25
+ if site_id != @site_id
26
+ if @socket && @socket.connected
27
+ @apps = []
28
+ @socket.disconnect
29
+ end
30
+
31
+ @apps = [ app.object_id ]
32
+ @site_id = site_id
33
+ @socket = PusherClient::Socket.new('75e6ef0fe5d39f481626', secure: true)
34
+ @socket.subscribe("site-#{site_id}")
35
+ @socket.bind('site:change') do
36
+ print "DatoCMS content changed, refreshing data..."
37
+ @loader.load
38
+ puts " done!"
39
+ @app.sitemap.rebuild_resource_list!(:touched_dato_content)
40
+ end
41
+ @socket.connect(true)
42
+ else
43
+ @apps[@apps.size - 1] = app.object_id
44
+ end
45
+ end
46
+
47
+ def shutdown(app)
48
+ if @socket && @socket.connected && @apps == [ app.object_id ]
49
+ @socket.disconnect
50
+ end
51
+ @apps.delete(app.object_id)
52
+ end
53
+ end
54
+
11
55
  class MiddlemanExtension < ::Middleman::Extension
12
56
  attr_reader :loader
13
57
 
@@ -16,9 +60,8 @@ module MiddlemanDato
16
60
  option :api_base_url, 'https://site-api.datocms.com', 'Site API host'
17
61
  option :base_url, nil, 'Website base URL'
18
62
 
19
- if Semantic::Version.new(Middleman::VERSION).major >= 4
20
- expose_to_config dato: :dato
21
- end
63
+ expose_to_config dato: :dato_collector
64
+ expose_to_application dato_items_repo: :items_repo
22
65
 
23
66
  def initialize(app, options_hash = {}, &block)
24
67
  super
@@ -26,13 +69,16 @@ module MiddlemanDato
26
69
  @loader = loader = Dato::Local::Loader.new(client)
27
70
  @loader.load
28
71
 
29
- app.before do
30
- loader.load if !build? && !ENV.fetch('DISABLE_DATO_REFRESH', false)
31
- true
72
+ app.after_configuration do
73
+ if !app.build?
74
+ Watcher.instance.watch(app, loader, loader.items_repo.site.id)
75
+ end
32
76
  end
33
77
 
34
- if Semantic::Version.new(Middleman::VERSION).major <= 3
35
- app.send :include, InstanceMethods
78
+ app.before_shutdown do
79
+ if !app.build?
80
+ Watcher.instance.shutdown(app)
81
+ end
36
82
  end
37
83
  end
38
84
 
@@ -47,7 +93,13 @@ module MiddlemanDato
47
93
  )
48
94
  end
49
95
 
50
- def dato
96
+ def dato_collector
97
+ app.extensions[:collections].live_collector do |app, resources|
98
+ app.dato_items_repo
99
+ end
100
+ end
101
+
102
+ def items_repo
51
103
  loader.items_repo
52
104
  end
53
105
 
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module MiddlemanDato
3
- VERSION = '0.5.24'
3
+ VERSION = '0.6.0'
4
4
  end
@@ -22,8 +22,8 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.add_development_dependency('coveralls')
24
24
 
25
- s.add_runtime_dependency('middleman-core', ['>= 3.3.12'])
26
- s.add_runtime_dependency('dato', ['>= 0.1.22'])
27
- s.add_runtime_dependency('semantic')
25
+ s.add_runtime_dependency('middleman-core', ['>= 4.1.10'])
26
+ s.add_runtime_dependency('dato', ['>= 0.2.4'])
28
27
  s.add_runtime_dependency('activesupport')
28
+ s.add_runtime_dependency('pusher-client')
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-dato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.24
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coveralls
@@ -30,30 +30,30 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.3.12
33
+ version: 4.1.10
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 3.3.12
40
+ version: 4.1.10
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: dato
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.22
47
+ version: 0.2.4
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.22
54
+ version: 0.2.4
55
55
  - !ruby/object:Gem::Dependency
56
- name: semantic
56
+ name: activesupport
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: activesupport
70
+ name: pusher-client
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="