flammarion_rails 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -0
  3. data/app/assets/javascripts/flammarion_rails/actions.coffee +95 -0
  4. data/lib/flammarion/engraving.rb +62 -17
  5. data/lib/flammarion/recognize_path.rb +27 -0
  6. data/lib/flammarion_rails/engine.rb +1 -0
  7. data/lib/flammarion_rails/version.rb +1 -1
  8. data/lib/rubame/server.rb +23 -35
  9. data/public/index.html +2 -16
  10. data/public/index.js +116 -0
  11. data/spec/dummy/log/development.log +8 -0
  12. data/spec/dummy/log/test.log +8 -0
  13. metadata +61 -82
  14. data/app/assets/config/flammarion_rails_manifest.js +0 -0
  15. data/config/routes.rb +0 -2
  16. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0M/0Mg2krTmzvpvndy5rHnhuun5BBfgA8mY3nz6myP6kdQ.cache +0 -0
  17. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0P6sKgG4-T4rwdhhAvLJKqmC2XHD18DbbxM7-oLWhXA.cache +0 -1
  18. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/22/22E2TQFHi7XchzTLK5w8ZZ_iYCMIyyGwRmVazx3irqY.cache +0 -0
  19. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2R/2RUaNi4ZIYrYbhyd2C-Ww2kZHGazuNcAfrKjQoSubl4.cache +0 -0
  20. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3L/3LxcdISAk1c4X--4-sTB_h--GZF2Epue7I2gjbgvkQ4.cache +0 -1
  21. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3p/3pa5vZojTdQB44mkfj5buJFWDKREMuCNJoOEP84rcDU.cache +0 -1
  22. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/58/586fjw8FKooCH-968ZTIIrVkE9RuHmBnkYj5OYwcs9g.cache +0 -1
  23. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bu/BuE1MKiZRiA2ei8bcxwYLjyJdTpEy4wxW852s55oNNk.cache +0 -1
  24. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JD/JDCUTDoF2rC0R-NS53x4NhZ_wcTPq8E_ccURRvkjrbg.cache +0 -3
  25. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KH/KHGH8y7fyC26rhzb2-uu0cV4z5-pxa2N3NkDIL_feBk.cache +0 -1
  26. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LY/LYOt9-oLcF3-pZyrj-ObZCV5sJnzOX-ChSBrkZI72Oc.cache +0 -0
  27. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lu/LuB__cHcdlpiqGBKHUifyKQAk1Q8hYTNxvUnK1VPuJs.cache +0 -1
  28. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lv/LvkAiAXzEhMj_E-ZRx0qe2EAXBsm_M7MRf4ids1kxdw.cache +0 -0
  29. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mw/MwOabPFIFDte8ZBuoVOOtd1Qu476fF4T4E78To9L2Eo.cache +0 -1
  30. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mx/MxvaxgCXDp1kMg4ZPyEj18UaF7hti7eGd5irCjj7CYA.cache +0 -0
  31. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QF/QFvF-z4bMPE9dkk_vRFZYF8e2goQi8vWGeExjSUT92Q.cache +0 -1
  32. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Re/Red0n__pXlXNH8SzCQTdfqRmTJxrcVN9AWr1__pJFP0.cache +0 -1
  33. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SI/SI9DDWxIPbS6sVOJ772L6_Jbfq17xBHX_sJw6gutPq4.cache +0 -0
  34. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SN/SNWLiOT9nptoa_fIBzkk6rau30FCwQnjLilnZtLUWKU.cache +0 -1
  35. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TF/TFYV3Z2UC54NjsDNnfNTRAaCpEG-_o6wRVDYezsnnzk.cache +0 -0
  36. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_-4jxim1KTh1Fjxx8_IJyO-3Wzv3M4N70rE0Hi5ipY.cache +0 -2
  37. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z4/Z4xtfQJ5r3sHK5ASuH1nYxFVJM360rK3PnL_RtnWXAk.cache +0 -1
  38. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_h/_hwlFJ7l4uM_oLaUe5ZKud1WAQO5QCyqspXi5bIjitk.cache +0 -0
  39. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache +0 -2
  40. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/ctAKDrnI0EvuP7FAZXCRPZCWA3hmwlIMurxUpX4dOO8.cache +0 -0
  41. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dg/dg3wGWeFjow5LX98G4IGeWcMyoTHYsklNz3gOLQSXr8.cache +0 -0
  42. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/lVt8G4NTNqewg9C9PXeaR1Abtx7AHu0vaSkHAhGWR0M.cache +0 -1
  43. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX1nlsL_SWOB4y22W5FheRX0YEONKyOY7xUeIvRiHco.cache +0 -2
  44. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/me/me4uxBSFG-PjZ9e6iUX80JlbffE5GmRQ7Un-fsLO0QA.cache +0 -1
  45. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -2
  46. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -2
  47. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/ozK4IPJj2CBcsem3fLJx3wqcOl6mI6B91PkN0wVfkyk.cache +0 -2
  48. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pZ/pZoXZhq291Gxs21xFN0T4V1N1KwyFISSp7okEgbD7lY.cache +0 -1
  49. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +0 -2
  50. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vA/vAcjLVwbHcbzsPpYo9NmFa4oW46YZoyQRriaJNpEoqw.cache +0 -0
  51. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vu/vugy1YR_4jOXqgIEqNMSTWQ6DiSEhSEzsBTMqENWhxU.cache +0 -1
  52. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache +0 -2
  53. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1pCDnU1k4aeEb3hZmNX4QNvaCUFbtHX4L7noBd035M.cache +0 -1
  54. data/spec/dummy/tmp/pids/server.pid +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 15f7d10ed9788e61ebd810c34eeb3d67bf63ef9c
4
- data.tar.gz: 6396f3d2703750b5026fd5e560b2b0ff9dd4265e
3
+ metadata.gz: 82f678ee45aa83dc6f693ddecaf234234bd8b88b
4
+ data.tar.gz: 4f9cc9687450d7a2b97e4385e3f4915926b959a5
5
5
  SHA512:
6
- metadata.gz: 99e21f6996bf87be7d1db17b57ecc6e9349403953ab039c85ed7dd73814f183163c104d71bb603518fdd88dedfce99114853f64f9020da06e14bdeef361bb110
7
- data.tar.gz: 5c8b6fb0b2a96475dd74d278e513eeb548d55553eabdd477cd9dca47036a90a35916860c6aa6b0f0149f3a0ee11bf3084b0d4d053a3c873c8e37846dfc0f6f00
6
+ metadata.gz: 2ce96110cd29735488158aed429a3a69bb6fab4374f0dd84c7746591ffd9d2aed5786b22c69202e2c358f110a7c51fc148cdfde16fa984ff19dd17b2d42e5c4c
7
+ data.tar.gz: c8a5537202c493f4e09a261dd081b3787e32d19e9680eecee18c108c80c679cabb7e872de216f5bed5c4a8ef11a5339bddca38719f05e101e539408b760ffbcc
data/README.md CHANGED
@@ -1,3 +1,29 @@
1
1
  # FlammarionRails
2
2
 
3
+ * TODO: custom rake task actions
4
+
5
+ * TODO: app packaging / installation procedure
6
+
7
+ * TODO: modal forms
8
+
9
+ * TODO: ajax
10
+
11
+ * TODO: sortable (might be related to referer/current url)
12
+
13
+ * TODO: request.referer --> return_to
14
+
15
+ * TODO: disable refresh / reload (disable left click)
16
+
17
+ * TODO: rack integration --> railties-5.0.0.1/lib/rails/engine.rb
18
+
19
+ * TODO: 404 and errors (rotate log files)
20
+
21
+ * TODO: settings/preferences
22
+
23
+ * TODO: try if 'action_dispatch.request.path_parameters' filled could prevent rails_admin to crash in index_path
24
+
25
+ * TODO: non-blocking download
26
+
27
+ * TODO: use pjax layout instead of full layout
28
+
3
29
  This project rocks and uses MIT-LICENSE.
@@ -0,0 +1,95 @@
1
+ # Disable Back/Forward
2
+ ########################################
3
+
4
+ history.pushState(null, null, document.URL)
5
+ window.addEventListener 'popstate', ->
6
+ history.pushState(null, null, document.URL)
7
+
8
+ # NProgress
9
+ ########################################
10
+
11
+ if NProgress?
12
+ window.progress_bar_timeout = null
13
+
14
+ ws.send_before_actions.push (data) ->
15
+ unless window.progress_bar_timeout?
16
+ window.progress_bar_timeout = setTimeout(->
17
+ NProgress.start()
18
+ , 500)
19
+
20
+ ws.onmessage_before_actions.push (event) ->
21
+ NProgress.done()
22
+ clearTimeout(window.progress_bar_timeout)
23
+ window.progress_bar_timeout = null
24
+
25
+ # Pjax
26
+ ########################################
27
+ # Note: it's working for now, but it might be better to do something similar to the real pjax implementation
28
+
29
+ if $.pjax?
30
+ PROTOCOL = /^.*:\/{2}/i
31
+ $(document).on 'pjax:beforeSend', (event, xhr, settings) ->
32
+ event.preventDefault()
33
+ ws.send(action: 'pjax', url: settings.url.replace(PROTOCOL, ''))
34
+
35
+ ws.onmessage_actions.pjax = (event) ->
36
+ new_page = $("<div>")
37
+ new_page.html(ws_data.html)
38
+ container = new_page.find('[data-pjax-container]')
39
+ $('[data-pjax-container]').html(container.html())
40
+ $(document).trigger('rails_admin.dom_ready')
41
+
42
+ # Submit
43
+ ########################################
44
+
45
+ $(document).on 'submit', (event) ->
46
+ event.preventDefault()
47
+ form = $(event.target)
48
+ return if form.hasClass('pjax-form')
49
+ ws.send(action: 'submit', url: form.attr('action'), form: form.serialize(), button: document.activeElement.name)
50
+
51
+ ws.onmessage_actions.submit =
52
+ if $.pjax?
53
+ ws.onmessage_actions.pjax
54
+ else
55
+ ws.onmessage_actions.page
56
+
57
+ # File
58
+ ########################################
59
+
60
+ if saveAs?
61
+ window.ws_file = null
62
+
63
+ ws.onmessage_actions.file = (event) ->
64
+ window.ws_file = ws_data.name
65
+ document.title = 'Downloading...'
66
+
67
+ ws.send_before_actions.unshift (data) ->
68
+ if window.ws_file?
69
+ ws.send_skip_action = true
70
+
71
+ ws.onmessage_before_actions.unshift (event) ->
72
+ if window.ws_file?
73
+ saveAs(event.data, window.ws_file)
74
+ document.title = window.ws_file
75
+ window.ws_file = null
76
+ ws.onmessage_skip_action = true
77
+
78
+ # Ajax
79
+ ########################################
80
+ # Note: app specific, $.ajax must be overriden
81
+ # Ex.:
82
+ # window.ajax_handler = $.ajax
83
+ #
84
+ # $.ajax = (xhr) ->
85
+ # if xhr.type?
86
+ # return ws.ajax_handler(xhr)
87
+ #
88
+ # switch xhr.dataType
89
+ # when 'text'
90
+ # modal = $('#modal').data('ra-remoteForm')
91
+ # ...
92
+ # when 'json'
93
+ # ...
94
+ # else
95
+ # ...
@@ -1,8 +1,9 @@
1
1
  module Flammarion
2
2
  class Engraving
3
3
  include Revelator
4
+ include RecognizePath
4
5
 
5
- attr_accessor :on_disconnect, :on_connect, :sockets
6
+ attr_accessor :on_disconnect, :on_connect, :sockets, :request, :status, :headers, :response
6
7
 
7
8
  # Creates a new Engraving (i.e., a new display window)
8
9
  # @option options [Proc] :on_connect Called when the display window is
@@ -49,30 +50,67 @@ module Flammarion
49
50
  end
50
51
 
51
52
  def process_message(msg)
52
- result = dispatch(JSON.parse(msg).with_indifferent_access)
53
-
54
- send_json(document: result.last.body)
53
+ params = JSON.parse(msg).with_indifferent_access
54
+ action = params.delete(:action) || 'page'
55
+ dispatch(params)
56
+
57
+ if status == 302
58
+ params = {
59
+ url: headers['Location'].sub(/^.*:\/{2}(:\d{0,4})?/i, ''),
60
+ session: response.request.session
61
+ }.with_indifferent_access
62
+ dispatch(params)
63
+ render(action: 'page', html: response.body)
64
+ elsif headers['Content-Transfer-Encoding'] == 'binary'
65
+ filename = headers['Content-Disposition'].sub(/.*filename=/, '').gsub(/(^"|"$)/, '')
66
+ render(action: 'file', name: filename)
67
+ render(response.body)
68
+ else
69
+ render(action: action, html: response.body)
70
+ end
55
71
 
56
- rescue JSON::ParserError
57
- Rails.logger.debug "Invalid JSON String #{msg}"
72
+ rescue => e
73
+ Rails.logger.error "[EXCEPTION][#{msg}]"
74
+ Rails.logger.error " [#{e.class}]\n#{e.message}\n" << e.backtrace.first(20).join("\n")
75
+ Rails.logger.error "[END]"
76
+ render(action: 'error', title: "#{e.class}: #{e.message}")
58
77
  end
59
78
 
60
79
  def dispatch(params)
61
- http_method = params.delete(:method) || :get
62
- mapping = Rails.application.routes.recognize_path(params.delete(:url), method: http_method, **params)
80
+ session = params.delete(:session)
81
+ url = params.delete(:url)
82
+ uri = URI.parse(url)
83
+ query_params = Rack::Utils.parse_nested_query(uri.query)
84
+
85
+ if params.key?(:form)
86
+ params[:method] = 'post'
87
+ params[params.delete(:button)] = ''
88
+ params.merge!(Rack::Utils.parse_nested_query(params.delete(:form)))
89
+ end
90
+ if params.key?(:_method)
91
+ params[:method] = params[:_method]
92
+ end
93
+ params[:method] ||= :get
63
94
 
64
- unless mapping.key?(:controller)
65
- Rails.logger.debug "Path not found"
66
- return ActionDispatch::Request::PASS_NOT_FOUND
95
+ path_params = recognize_path(url, params)
96
+ unless path_params.key?(:controller)
97
+ raise ActionController::RoutingError, "No route matches [#{url}]#{params.inspect}"
67
98
  end
68
99
 
69
- controller_name = "#{mapping[:controller].underscore.camelize}Controller"
100
+ controller_name = "#{path_params[:controller].underscore.camelize}Controller"
70
101
  controller = ActiveSupport::Dependencies.constantize(controller_name)
71
- action = mapping[:action] || 'index'
72
- request = ActionDispatch::Request.new('rack.input' => '', 'REQUEST_METHOD' => http_method.to_s.upcase!)
102
+ action = path_params[:action] || 'index'
103
+ request_env = {
104
+ 'rack.input' => '',
105
+ 'REQUEST_METHOD' => params[:method].to_s.upcase,
106
+ 'action_dispatch.request.parameters' => path_params.merge!(params).merge!(query_params),
107
+ }
108
+ request_env['rack.session'] = session if session
109
+ self.request = ActionDispatch::Request.new(request_env)
73
110
  response = controller.make_response! request
74
111
 
75
- controller.dispatch(action, request, response)
112
+ self.status, self.headers, body = controller.dispatch(action, request, response)
113
+ self.response = body.instance_variable_get(:@response)
76
114
  end
77
115
 
78
116
  def start_server
@@ -83,12 +121,19 @@ module Flammarion
83
121
  @@server
84
122
  end
85
123
 
86
- def send_json(val)
124
+ def render(body)
87
125
  if @sockets.empty?
88
126
  open_a_window
89
127
  wait_for_a_connection
90
128
  end
91
- @sockets.each{ |ws| ws.send val.to_json }
129
+ if body.is_a? Hash
130
+ body = body.to_json
131
+ else
132
+ binary = true
133
+ end
134
+ @sockets.each do |ws|
135
+ ws.send_data(body, binary)
136
+ end
92
137
  nil
93
138
  end
94
139
  end
@@ -0,0 +1,27 @@
1
+ module Flammarion
2
+ module RecognizePath
3
+ def recognize_path(path, options)
4
+ recognized_path = Rails.application.routes.recognize_path(path, options)
5
+
6
+ rescue ActionController::RoutingError => e
7
+ unless e.message.start_with? 'No route matches'
8
+ raise e
9
+ end
10
+
11
+ Rails::Engine.subclasses.each do |engine|
12
+ mounted_engine = Rails.application.routes.routes.find{ |r| r.app.app == engine }
13
+ next unless mounted_engine
14
+
15
+ path_for_engine = path.sub(/^#{mounted_engine.path.spec}/, '')
16
+ begin
17
+ recognized_path = engine.routes.recognize_path(path_for_engine, options)
18
+ break
19
+ rescue ActionController::RoutingError => e
20
+ # do nothing
21
+ end
22
+ end
23
+
24
+ recognized_path
25
+ end
26
+ end
27
+ end
@@ -3,6 +3,7 @@ require "flammarion_rails/configuration"
3
3
  require 'open3'
4
4
  require "rubame/server"
5
5
  require "flammarion/server"
6
+ require "flammarion/recognize_path"
6
7
  require "flammarion/revelator"
7
8
  require "flammarion/engraving"
8
9
 
@@ -1,3 +1,3 @@
1
1
  module FlammarionRails
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/rubame/server.rb CHANGED
@@ -62,11 +62,10 @@ module Rubame
62
62
  def close(client)
63
63
  @reading.delete client.socket
64
64
  @clients.delete client.socket
65
- begin
66
- client.socket.close
67
- rescue
68
- # do nothing
69
- end
65
+ client.socket.close
66
+ rescue
67
+ # do nothing
68
+ ensure
70
69
  client.closed = true
71
70
  end
72
71
 
@@ -110,46 +109,35 @@ module Rubame
110
109
  @socket.write data
111
110
  end
112
111
 
113
- def send(data)
114
- frame = WebSocket::Frame::Outgoing::Server.new(version: @handshake.version, data: data, type: :text)
115
- begin
116
- @socket.write frame
117
- @socket.flush
118
- rescue
119
- @server.close(self) unless @closed
120
- end
112
+ def send_data(data, binary = false)
113
+ type = binary ? :binary : :text
114
+ frame = WebSocket::Frame::Outgoing::Server.new(version: @handshake.version, data: data, type: type)
115
+ @socket.write frame
116
+ @socket.flush
117
+ rescue
118
+ @server.close(self) unless @closed
121
119
  end
122
120
 
123
121
  def onopen(&blk)
124
- if @opened
125
- begin
126
- blk.call
127
- ensure
128
- @opened = false
129
- end
130
- end
122
+ return unless @opened
123
+ blk.call
124
+ ensure
125
+ @opened = false
131
126
  end
132
127
 
133
128
  def onmessage(&blk)
134
- if @messaged.size > 0
135
- begin
136
- @messaged.each do |x|
137
- blk.call(x.to_s)
138
- end
139
- ensure
140
- @messaged = []
141
- end
129
+ @messaged.each do |x|
130
+ blk.call(x.to_s)
142
131
  end
132
+ ensure
133
+ @messaged = []
143
134
  end
144
135
 
145
136
  def onclose(&blk)
146
- if @closed
147
- begin
148
- blk.call
149
- ensure
150
- # do nothing
151
- end
152
- end
137
+ return unless @closed
138
+ blk.call
139
+ ensure
140
+ # do nothing
153
141
  end
154
142
  end
155
143
  end
data/public/index.html CHANGED
@@ -1,23 +1,9 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <script>
5
- window.qs = new URLSearchParams(location.search);
6
- window.ws = new WebSocket("ws://localhost:" + qs.get("port") + "/" + qs.get("path"));
7
-
8
- ws.onopen = function(event) {
9
- ws.send(JSON.stringify({url: qs.get("boot")}));
10
- };
11
-
12
- ws.onmessage = function(event) {
13
- var data = JSON.parse(event.data);
14
- var boot_page = document.open("text/html", "replace");
15
- boot_page.write(data.document);
16
- boot_page.close();
17
- };
18
- </script>
4
+ <title>...</title>
5
+ <script src="index.js"></script>
19
6
  </head>
20
7
  <body>
21
- <!-- Loader -->
22
8
  </body>
23
9
  </html>
data/public/index.js ADDED
@@ -0,0 +1,116 @@
1
+ window.qs = new URLSearchParams(location.search);
2
+ window.ws = new WebSocket("ws://localhost:" + qs.get("port") + "/" + qs.get("path"));
3
+ window.ws_data = null;
4
+
5
+ ws.onopen = function(event) {
6
+ ws.send({url: qs.get("boot")});
7
+ };
8
+
9
+ ws.onclose = function(event) {
10
+ var reason;
11
+ // See http://tools.ietf.org/html/rfc6455#section-7.4.1
12
+ if (event.code == 1000) {
13
+ reason = "Normal closure, meaning that the purpose for which the connection was established has been fulfilled.";
14
+ } else if (event.code == 1001) {
15
+ reason = "An endpoint is \"going away\", such as a server going down or a browser having navigated away from a page.";
16
+ } else if (event.code == 1002) {
17
+ reason = "An endpoint is terminating the connection due to a protocol error";
18
+ } else if (event.code == 1003) {
19
+ reason = "An endpoint is terminating the connection because it has received a type of data it cannot accept (e.g., an endpoint that understands only text data MAY send this if it receives a binary message).";
20
+ } else if (event.code == 1004) {
21
+ reason = "Reserved. The specific meaning might be defined in the future.";
22
+ } else if (event.code == 1005) {
23
+ reason = "No status code was actually present.";
24
+ } else if (event.code == 1006) {
25
+ reason = "The connection was closed abnormally, e.g., without sending or receiving a Close control frame";
26
+ } else if (event.code == 1007) {
27
+ reason = "An endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [http://tools.ietf.org/html/rfc3629] data within a text message).";
28
+ } else if (event.code == 1008) {
29
+ reason = "An endpoint is terminating the connection because it has received a message that \"violates its policy\". This reason is given either if there is no other sutible reason, or if there is a need to hide specific details about the policy.";
30
+ } else if (event.code == 1009) {
31
+ reason = "An endpoint is terminating the connection because it has received a message that is too big for it to process.";
32
+ } else if (event.code == 1010) { // Note that this status code is not used by the server, because it can fail the WebSocket handshake instead.
33
+ reason = "An endpoint (client) is terminating the connection because it has expected the server to negotiate one or more extension, but the server didn't return them in the response message of the WebSocket handshake. <br /> Specifically, the extensions that are needed are: " + event.reason;
34
+ } else if (event.code == 1011) {
35
+ reason = "A server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request.";
36
+ } else if (event.code == 1015) {
37
+ reason = "The connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified).";
38
+ } else {
39
+ reason = "Unknown reason";
40
+ }
41
+ console.log(reason);
42
+ document.title = "Disconnected: " + reason;
43
+ };
44
+
45
+ ws.onerror = function(event) {
46
+ console.log(event);
47
+ };
48
+
49
+ ws.send_before_actions = [];
50
+ ws.send_skip_action = false;
51
+ ws.send_actions = {};
52
+ ws.send_handler = ws.send;
53
+
54
+ ws.send = function send(data) {
55
+ try {
56
+ ws.send_before_actions.forEach(function (before_action) {
57
+ if (!ws.send_skip_action) {
58
+ before_action(event);
59
+ }
60
+ });
61
+ if (!ws.send_skip_action) {
62
+ var action = ws.send_actions[data.action];
63
+ if (action) {
64
+ action(data);
65
+ }
66
+ ws.send_handler(JSON.stringify(data));
67
+ }
68
+ }
69
+ catch(error) {
70
+ console.log(data);
71
+ console.log(error);
72
+ document.title = 'Error on message sent...';
73
+ }
74
+ finally {
75
+ ws.send_skip_action = false;
76
+ }
77
+ };
78
+
79
+ ws.onmessage_before_actions = [];
80
+ ws.onmessage_skip_action = false;
81
+ ws.onmessage_actions = {
82
+ page: function (event) {
83
+ var page = document.open("text/html", "replace");
84
+ page.write(ws_data.html);
85
+ page.close();
86
+ },
87
+ error: function (event) {
88
+ console.log(ws_data.title);
89
+ document.title = ws_data.title;
90
+ }
91
+ };
92
+
93
+ ws.onmessage = function(event) {
94
+ try {
95
+ ws.onmessage_before_actions.forEach(function (before_action) {
96
+ if (!ws.onmessage_skip_action) {
97
+ before_action(event);
98
+ }
99
+ });
100
+ if (!ws.onmessage_skip_action) {
101
+ ws_data = JSON.parse(event.data);
102
+ var action = ws.onmessage_actions[ws_data.action];
103
+ if (action) {
104
+ action(event);
105
+ }
106
+ }
107
+ }
108
+ catch(error) {
109
+ console.log(event);
110
+ console.log(error);
111
+ document.title = 'Error on message received...';
112
+ }
113
+ finally {
114
+ ws.onmessage_skip_action = false;
115
+ }
116
+ };
@@ -816,4 +816,12 @@ Processing by ProductsController#index as HTML
816
816
  Completed 200 OK in 192ms (Views: 12.9ms)
817
817
 
818
818
 
819
+ Connection closed
820
+ Connection open
821
+ Processing by ProductsController#index as HTML
822
+ Rendering products/index.html.erb within layouts/application
823
+ Rendered products/index.html.erb within layouts/application (1.4ms)
824
+ Completed 200 OK in 327ms (Views: 191.4ms)
825
+
826
+
819
827
  Connection closed
@@ -14,3 +14,11 @@
14
14
   (0.2ms) rollback transaction
15
15
   (0.2ms) begin transaction
16
16
   (0.1ms) rollback transaction
17
+  (0.1ms) begin transaction
18
+  (0.1ms) rollback transaction
19
+  (0.1ms) begin transaction
20
+  (0.1ms) rollback transaction
21
+  (0.1ms) begin transaction
22
+  (0.1ms) rollback transaction
23
+  (0.1ms) begin transaction
24
+  (0.2ms) rollback transaction
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flammarion_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrice Lebel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-06 00:00:00.000000000 Z
11
+ date: 2016-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,6 +66,62 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ext_rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: jquery-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: nprogress-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pjax_rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.4'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.4'
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: sqlite3
71
127
  requirement: !ruby/object:Gem::Requirement
@@ -174,9 +230,9 @@ files:
174
230
  - MIT-LICENSE
175
231
  - README.md
176
232
  - Rakefile
177
- - app/assets/config/flammarion_rails_manifest.js
178
- - config/routes.rb
233
+ - app/assets/javascripts/flammarion_rails/actions.coffee
179
234
  - lib/flammarion/engraving.rb
235
+ - lib/flammarion/recognize_path.rb
180
236
  - lib/flammarion/revelator.rb
181
237
  - lib/flammarion/server.rb
182
238
  - lib/flammarion_rails.rb
@@ -186,6 +242,7 @@ files:
186
242
  - lib/rubame/server.rb
187
243
  - lib/tasks/flammarion_rails_tasks.rake
188
244
  - public/index.html
245
+ - public/index.js
189
246
  - spec/dummy/Rakefile
190
247
  - spec/dummy/app/assets/config/manifest.js
191
248
  - spec/dummy/app/assets/javascripts/application.js
@@ -244,45 +301,6 @@ files:
244
301
  - spec/dummy/public/apple-touch-icon-precomposed.png
245
302
  - spec/dummy/public/apple-touch-icon.png
246
303
  - spec/dummy/public/favicon.ico
247
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/0M/0Mg2krTmzvpvndy5rHnhuun5BBfgA8mY3nz6myP6kdQ.cache
248
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0P6sKgG4-T4rwdhhAvLJKqmC2XHD18DbbxM7-oLWhXA.cache
249
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/22/22E2TQFHi7XchzTLK5w8ZZ_iYCMIyyGwRmVazx3irqY.cache
250
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/2R/2RUaNi4ZIYrYbhyd2C-Ww2kZHGazuNcAfrKjQoSubl4.cache
251
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/3L/3LxcdISAk1c4X--4-sTB_h--GZF2Epue7I2gjbgvkQ4.cache
252
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/3p/3pa5vZojTdQB44mkfj5buJFWDKREMuCNJoOEP84rcDU.cache
253
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/58/586fjw8FKooCH-968ZTIIrVkE9RuHmBnkYj5OYwcs9g.cache
254
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bu/BuE1MKiZRiA2ei8bcxwYLjyJdTpEy4wxW852s55oNNk.cache
255
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/JD/JDCUTDoF2rC0R-NS53x4NhZ_wcTPq8E_ccURRvkjrbg.cache
256
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/KH/KHGH8y7fyC26rhzb2-uu0cV4z5-pxa2N3NkDIL_feBk.cache
257
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/LY/LYOt9-oLcF3-pZyrj-ObZCV5sJnzOX-ChSBrkZI72Oc.cache
258
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Lu/LuB__cHcdlpiqGBKHUifyKQAk1Q8hYTNxvUnK1VPuJs.cache
259
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Lv/LvkAiAXzEhMj_E-ZRx0qe2EAXBsm_M7MRf4ids1kxdw.cache
260
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mw/MwOabPFIFDte8ZBuoVOOtd1Qu476fF4T4E78To9L2Eo.cache
261
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mx/MxvaxgCXDp1kMg4ZPyEj18UaF7hti7eGd5irCjj7CYA.cache
262
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/QF/QFvF-z4bMPE9dkk_vRFZYF8e2goQi8vWGeExjSUT92Q.cache
263
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Re/Red0n__pXlXNH8SzCQTdfqRmTJxrcVN9AWr1__pJFP0.cache
264
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/SI/SI9DDWxIPbS6sVOJ772L6_Jbfq17xBHX_sJw6gutPq4.cache
265
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/SN/SNWLiOT9nptoa_fIBzkk6rau30FCwQnjLilnZtLUWKU.cache
266
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/TF/TFYV3Z2UC54NjsDNnfNTRAaCpEG-_o6wRVDYezsnnzk.cache
267
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_-4jxim1KTh1Fjxx8_IJyO-3Wzv3M4N70rE0Hi5ipY.cache
268
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Z4/Z4xtfQJ5r3sHK5ASuH1nYxFVJM360rK3PnL_RtnWXAk.cache
269
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/_h/_hwlFJ7l4uM_oLaUe5ZKud1WAQO5QCyqspXi5bIjitk.cache
270
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache
271
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/ctAKDrnI0EvuP7FAZXCRPZCWA3hmwlIMurxUpX4dOO8.cache
272
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/dg/dg3wGWeFjow5LX98G4IGeWcMyoTHYsklNz3gOLQSXr8.cache
273
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/lVt8G4NTNqewg9C9PXeaR1Abtx7AHu0vaSkHAhGWR0M.cache
274
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX1nlsL_SWOB4y22W5FheRX0YEONKyOY7xUeIvRiHco.cache
275
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/me/me4uxBSFG-PjZ9e6iUX80JlbffE5GmRQ7Un-fsLO0QA.cache
276
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache
277
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache
278
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/ozK4IPJj2CBcsem3fLJx3wqcOl6mI6B91PkN0wVfkyk.cache
279
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/pZ/pZoXZhq291Gxs21xFN0T4V1N1KwyFISSp7okEgbD7lY.cache
280
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache
281
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/vA/vAcjLVwbHcbzsPpYo9NmFa4oW46YZoyQRriaJNpEoqw.cache
282
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/vu/vugy1YR_4jOXqgIEqNMSTWQ6DiSEhSEzsBTMqENWhxU.cache
283
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache
284
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1pCDnU1k4aeEb3hZmNX4QNvaCUFbtHX4L7noBd035M.cache
285
- - spec/dummy/tmp/pids/server.pid
286
304
  - spec/rails_helper.rb
287
305
  - spec/rubame/server_spec.rb
288
306
  - spec/spec_helper.rb
@@ -371,44 +389,5 @@ test_files:
371
389
  - spec/dummy/config/initializers/inflections.rb
372
390
  - spec/dummy/db/test.sqlite3
373
391
  - spec/dummy/db/development.sqlite3
374
- - spec/dummy/tmp/pids/server.pid
375
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/0P/0P6sKgG4-T4rwdhhAvLJKqmC2XHD18DbbxM7-oLWhXA.cache
376
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache
377
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/JD/JDCUTDoF2rC0R-NS53x4NhZ_wcTPq8E_ccURRvkjrbg.cache
378
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/ct/ctAKDrnI0EvuP7FAZXCRPZCWA3hmwlIMurxUpX4dOO8.cache
379
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/TF/TFYV3Z2UC54NjsDNnfNTRAaCpEG-_o6wRVDYezsnnzk.cache
380
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/ozK4IPJj2CBcsem3fLJx3wqcOl6mI6B91PkN0wVfkyk.cache
381
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/lVt8G4NTNqewg9C9PXeaR1Abtx7AHu0vaSkHAhGWR0M.cache
382
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/dg/dg3wGWeFjow5LX98G4IGeWcMyoTHYsklNz3gOLQSXr8.cache
383
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX1nlsL_SWOB4y22W5FheRX0YEONKyOY7xUeIvRiHco.cache
384
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/SI/SI9DDWxIPbS6sVOJ772L6_Jbfq17xBHX_sJw6gutPq4.cache
385
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/22/22E2TQFHi7XchzTLK5w8ZZ_iYCMIyyGwRmVazx3irqY.cache
386
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/KH/KHGH8y7fyC26rhzb2-uu0cV4z5-pxa2N3NkDIL_feBk.cache
387
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/SN/SNWLiOT9nptoa_fIBzkk6rau30FCwQnjLilnZtLUWKU.cache
388
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/vu/vugy1YR_4jOXqgIEqNMSTWQ6DiSEhSEzsBTMqENWhxU.cache
389
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/2R/2RUaNi4ZIYrYbhyd2C-Ww2kZHGazuNcAfrKjQoSubl4.cache
390
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mx/MxvaxgCXDp1kMg4ZPyEj18UaF7hti7eGd5irCjj7CYA.cache
391
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_-4jxim1KTh1Fjxx8_IJyO-3Wzv3M4N70rE0Hi5ipY.cache
392
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache
393
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/3p/3pa5vZojTdQB44mkfj5buJFWDKREMuCNJoOEP84rcDU.cache
394
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/me/me4uxBSFG-PjZ9e6iUX80JlbffE5GmRQ7Un-fsLO0QA.cache
395
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Z4/Z4xtfQJ5r3sHK5ASuH1nYxFVJM360rK3PnL_RtnWXAk.cache
396
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache
397
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache
398
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/_h/_hwlFJ7l4uM_oLaUe5ZKud1WAQO5QCyqspXi5bIjitk.cache
399
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1pCDnU1k4aeEb3hZmNX4QNvaCUFbtHX4L7noBd035M.cache
400
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Lv/LvkAiAXzEhMj_E-ZRx0qe2EAXBsm_M7MRf4ids1kxdw.cache
401
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/QF/QFvF-z4bMPE9dkk_vRFZYF8e2goQi8vWGeExjSUT92Q.cache
402
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/vA/vAcjLVwbHcbzsPpYo9NmFa4oW46YZoyQRriaJNpEoqw.cache
403
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/LY/LYOt9-oLcF3-pZyrj-ObZCV5sJnzOX-ChSBrkZI72Oc.cache
404
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/3L/3LxcdISAk1c4X--4-sTB_h--GZF2Epue7I2gjbgvkQ4.cache
405
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bu/BuE1MKiZRiA2ei8bcxwYLjyJdTpEy4wxW852s55oNNk.cache
406
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/0M/0Mg2krTmzvpvndy5rHnhuun5BBfgA8mY3nz6myP6kdQ.cache
407
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache
408
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/pZ/pZoXZhq291Gxs21xFN0T4V1N1KwyFISSp7okEgbD7lY.cache
409
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/58/586fjw8FKooCH-968ZTIIrVkE9RuHmBnkYj5OYwcs9g.cache
410
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Lu/LuB__cHcdlpiqGBKHUifyKQAk1Q8hYTNxvUnK1VPuJs.cache
411
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mw/MwOabPFIFDte8ZBuoVOOtd1Qu476fF4T4E78To9L2Eo.cache
412
- - spec/dummy/tmp/cache/assets/sprockets/v3.0/Re/Red0n__pXlXNH8SzCQTdfqRmTJxrcVN9AWr1__pJFP0.cache
413
392
  - spec/rails_helper.rb
414
393
  has_rdoc:
File without changes
data/config/routes.rb DELETED
@@ -1,2 +0,0 @@
1
- Rails.application.routes.draw do
2
- end
@@ -1 +0,0 @@
1
- I"�app/assets/javascripts/cable.js?type=application/javascript&pipeline=self&id=07fc84e79b4b423bec27adcdf83ecf6b7d1fde1f094c6d70689ce54e82b6556c:ET
@@ -1 +0,0 @@
1
- "%��B�����șo�$'�A�d��L���xR�U
@@ -1 +0,0 @@
1
- "%�<������X���̀#+�����,�(o���
@@ -1 +0,0 @@
1
- I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=00059d7cf94df38bef86c0af478e6a352b63415a36441f87f88e3746abca0638:ET
@@ -1 +0,0 @@
1
- "%A�>��N�6�n���f��9��V�~K��
@@ -1,3 +0,0 @@
1
- [o:Set:
2
- @hash}
3
- I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable.js;TTF
@@ -1 +0,0 @@
1
- "%:c�b��d����R��Uqf�ֿS��i�]ýb%
@@ -1 +0,0 @@
1
- I"}app/assets/stylesheets/application.css?type=text/css&id=28bbb8e4d6c5443630a95612faef5ea8450d300fddbae3e12baec82dda68b71b:ET
@@ -1 +0,0 @@
1
- "%A��G �{h t�l�m�V���NE���f���
@@ -1 +0,0 @@
1
- "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -1 +0,0 @@
1
- "%�aY}�)�vH`�=�T��y��-��0�@��g~�
@@ -1 +0,0 @@
1
- "%��B�����șo�$'�A�d��L���xR�U
@@ -1,2 +0,0 @@
1
- "%��T���l�
2
- %�`H�!o��"��}�M�g�
@@ -1 +0,0 @@
1
- I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=7465908afe1bca24341fa75dab41af69147019f26d86f7ea19bd4ed9c9ad0068:ET
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash} I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable.js;TTI"2file-digest://app/assets/javascripts/cable.js;TTI"$file-digest://app/assets/config;TTI"1file-digest://app/assets/config/action_cable;TTI"$file-digest://app/assets/images;TTI"1file-digest://app/assets/images/action_cable;TTI")file-digest://app/assets/javascripts;TTI"6file-digest://app/assets/javascripts/action_cable;TTI")file-digest://app/assets/stylesheets;TTI"6file-digest://app/assets/stylesheets/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets/action_cable;TTI"vfile-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled;TTI"~file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable;TTI"2file-digest://app/assets/javascripts/channels;TTF
@@ -1 +0,0 @@
1
- "%�d�-�K���`���8Y��3�͹/Y����a~K
@@ -1 +0,0 @@
1
- I"�app/assets/stylesheets/application.css?type=text/css&pipeline=debug&id=c5f58bf7086aae7e53090bd8aaa30482edd727a2d0f5e3d9ea216e496bee82b4:ET
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash} I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TTF
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash} I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"0processors:type=text/css&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TTF
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash} I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"[processors:type=application/javascript&file_type=application/javascript&pipeline=debug;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable.js;TTI"2file-digest://app/assets/javascripts/cable.js;TTI"$file-digest://app/assets/config;TTI"1file-digest://app/assets/config/action_cable;TTI"$file-digest://app/assets/images;TTI"1file-digest://app/assets/images/action_cable;TTI")file-digest://app/assets/javascripts;TTI"6file-digest://app/assets/javascripts/action_cable;TTI")file-digest://app/assets/stylesheets;TTI"6file-digest://app/assets/stylesheets/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets/action_cable;TTI"vfile-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled;TTI"~file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable;TTI"2file-digest://app/assets/javascripts/channels;TTF
@@ -1 +0,0 @@
1
- I"�/home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable.js?type=application/javascript&pipeline=self&id=f7ff668800d895169dace5e2621f0bd28edc32838958f88b6079c1bdb1b3228d:ET
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash} I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"?processors:type=text/css&file_type=text/css&pipeline=debug;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI")file-digest://app/assets/stylesheets;TTF
@@ -1 +0,0 @@
1
- I"�app/assets/javascripts/application.js?type=application/javascript&id=8f538a62ba0103f13349670f24de20d0808a7a7ed93bc8e1515960fec5c886e6:ET
@@ -1,2 +0,0 @@
1
- [o:Set:
2
- @hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"2file-digest://app/assets/javascripts/cable.js;TTI"$file-digest://app/assets/config;TTI"1file-digest://app/assets/config/action_cable;TTI"$file-digest://app/assets/images;TTI"1file-digest://app/assets/images/action_cable;TTI")file-digest://app/assets/javascripts;TTI"6file-digest://app/assets/javascripts/action_cable;TTI")file-digest://app/assets/stylesheets;TTI"6file-digest://app/assets/stylesheets/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/config/action_cable;TTI"Qfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images;TTI"^file-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/images/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/javascripts/action_cable;TTI"Vfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets;TTI"cfile-digest:///home/plebel/Desktop/patleb/flammarion_rails/app/assets/stylesheets/action_cable;TTI"vfile-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled;TTI"~file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable;TTI"�file-digest:///home/plebel/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.1/lib/assets/compiled/action_cable.js;TTI"2file-digest://app/assets/javascripts/channels;TTF
@@ -1 +0,0 @@
1
- I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=debug&id=ec30881bee5d364566d5f9647047319525c0c4cae285862dd246e60b76730f5b:ET
@@ -1 +0,0 @@
1
- 8880