svelte-on-rails 22.5.0 → 22.5.1

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
  SHA256:
3
- metadata.gz: d9c8ad89cdeda90311d9f2f60e3620d4bd87a8e148f40b6b9226136af7400ce3
4
- data.tar.gz: cbc53e92bb4e44e97f0cd2076957618ddd8867d974490062d6ba9217930f134c
3
+ metadata.gz: 1bcf2e7619271bc0d415deb797d15d3d7625640171fa02485fedded0bb526ac6
4
+ data.tar.gz: b7c3acb70f336fb7c9ff4b203474ed584c9ba280e7a080b959d50dc73e82e9e4
5
5
  SHA512:
6
- metadata.gz: ff1bf4f5970164c5d185a3de9ea78506b16b8036dc04a8008ae020b20e6837cea4738f6d42af79aea11b563d048a4ed0c20e6d41abaddd61ff927cc6b72177ed
7
- data.tar.gz: 13af465c198de0b3e918d30f68f0874f408e4d7b96e89c9467bdf3d193a4136bcc03684af5d2091e7670723529a089faa94c106eb743df49d9eeadcd28d24647
6
+ metadata.gz: 4df7c21e84b8f1805b0e76fc11dccd5a890fc589399f7945763974f53038b6b595e3a5e834be13857ad0f1da0e20f718df0400cf3965ece7849265fe000c6e80
7
+ data.tar.gz: a7ad01afc86a956759a79d710806d162f10d7dc400fb0ab2801dd01ae5335d52976c292fb15a2c95bc18fd85dcdd0dd88ad158533c7228572f2121b479e0379d
@@ -11,13 +11,16 @@ module SvelteOnRails
11
11
  :socket_path,
12
12
  :ssr_server_bin_path,
13
13
  :node_bin,
14
- :initialized_by
14
+ :initialized_by,
15
+ :render_success_count,
16
+ :render_failure_count,
17
+ :error_log
15
18
 
16
19
  # methods
17
20
 
18
21
  def self.instance(caller: nil)
19
22
 
20
- @instance ||= new(caller: caller)
23
+ @instance ||= new(caller: caller)
21
24
  @instance
22
25
  end
23
26
 
@@ -30,11 +33,10 @@ module SvelteOnRails
30
33
  f.puts("[#{Time.now.utc.iso8601(3)} ppid:#{Process.ppid} pid:#{Process.pid}] >>> Logfile deleted on initializing SsrClient, called by #{caller} <<<")
31
34
  end
32
35
 
33
-
34
36
  @socket_namespace = [
35
37
  "svelte",
36
- Rails.application.class.module_parent_name[0..30],
37
- short_env
38
+ Rails.application.class.module_parent_name[0..15],
39
+ SsrClientControlChannel.short_env
38
40
  ].join("-")
39
41
  @socket_path = socket_path_fresh
40
42
 
@@ -44,6 +46,10 @@ module SvelteOnRails
44
46
  @ssr_server_bin_path = SvelteOnRails::Configuration.instance.ssr_server_bin_path
45
47
  @started = Time.now
46
48
 
49
+ @render_success_count = 0
50
+ @render_failure_count = 0
51
+ @error_log = []
52
+
47
53
  File.delete(restart_marker_file) if File.exist?(restart_marker_file)
48
54
 
49
55
  SvelteOnRails::SsrClientControlChannel.install_control_listener
@@ -85,6 +91,9 @@ module SvelteOnRails
85
91
  socket.close
86
92
  rescue => e
87
93
 
94
+ write_error_log(e)
95
+ @render_failure_count += 1
96
+
88
97
  restart_my_server('Restart-after-failure')
89
98
 
90
99
  SvelteOnRails::Lib::Utils.error_log(
@@ -104,6 +113,7 @@ module SvelteOnRails
104
113
 
105
114
  raw_response = parse_body_json(response)
106
115
  if raw_response['status'] == 'SUCCESS'
116
+ @render_success_count += 1
107
117
  htm = raw_response['html'].to_s
108
118
  .gsub('<!--[-->', '')
109
119
  .gsub('<!--]-->', '')
@@ -124,6 +134,10 @@ module SvelteOnRails
124
134
  else
125
135
  ''
126
136
  end
137
+
138
+ write_error_log("Render #{component[:file_basename]}.svelte")
139
+ @render_failure_count += 1
140
+
127
141
  utils = SvelteOnRails::Lib::Utils
128
142
  utils.error_log(
129
143
  :render_failed,
@@ -140,6 +154,12 @@ module SvelteOnRails
140
154
 
141
155
  end
142
156
 
157
+ def write_error_log(msg)
158
+ timestamp = Time.now.strftime('%Y-%m-%d %H:%M:%S.%3N')
159
+ @error_log << "[#{timestamp}] #{msg}"
160
+ @error_log.shift while @error_log.size > 50
161
+ end
162
+
143
163
  def parse_body_json(response_string)
144
164
  return {} unless response_string.to_s.present?
145
165
 
@@ -386,17 +406,15 @@ module SvelteOnRails
386
406
  def socket_path_fresh
387
407
  ppid = Process.ppid
388
408
  app_sock = Rails.root.join("tmp/sockets/#{@socket_namespace}-#{ppid}.sock")
389
- FileUtils.mkdir_p(File.dirname(app_sock))
390
-
391
- return app_sock if app_sock.to_s.length < 104
409
+ if app_sock.to_s.length <= 103
410
+ FileUtils.mkdir_p(File.dirname(app_sock))
411
+ return app_sock
412
+ end
392
413
 
393
- # Fallback: socket paths > 104 chars are unreliable on macOS/BSD
414
+ # Fallback: socket paths > 103 chars are unreliable on macOS/BSD
394
415
  FileUtils.rm_f(app_sock) if File.exist?(app_sock)
395
- dir = File.expand_path("/tmp/svelte")
396
- FileUtils.mkdir_p(dir)
397
- FileUtils.chmod(0777, dir)
398
- fallback = Pathname.new("#{dir}/#{@socket_namespace}-#{ppid}.sock")
399
- SvelteOnRails::Lib::Utils.ssr_server_log("sockets longer than 104 chars are risky, fallback to: #{fallback}")
416
+ fallback = Pathname.new("/tmp/#{@socket_namespace}-#{ppid}.sock")
417
+ SvelteOnRails::Lib::Utils.ssr_server_log("sockets longer than 103 chars are risky, fallback to: #{fallback}")
400
418
  fallback
401
419
  end
402
420
 
@@ -437,7 +455,7 @@ module SvelteOnRails
437
455
  end
438
456
 
439
457
  def scan_sockets
440
- dirs = [Rails.root.join("tmp/sockets").to_s, "/tmp/svelte"]
458
+ dirs = [Rails.root.join("tmp/sockets").to_s, "/tmp"]
441
459
  regex = /#{Regexp.escape(@socket_namespace)}-(\d+)\.sock\z/
442
460
 
443
461
  dirs.flat_map { |d| Dir.glob(File.join(d, "#{@socket_namespace}-*.sock")) }
@@ -446,38 +464,21 @@ module SvelteOnRails
446
464
 
447
465
  # END node process management
448
466
 
449
- def short_env
450
-
451
- name = Rails.env.to_s
452
-
453
- short = {
454
- "development" => "dev",
455
- "production" => "prod",
456
- "staging" => "stage",
457
- }[name]
458
-
459
- return name unless short
460
- return name if Rails.root.join("config", "environments", "#{short}.rb").exist?
461
- short
462
- end
463
-
464
467
  end
465
468
 
466
469
  class SsrClientControlChannel
467
470
 
468
- SOCKET_FILENAME = "svelte-ctl.sock"
469
-
470
471
  # Full path of the control socket.
471
472
  # Sits next to the SSR socket in tmp/sockets, or in the /tmp/svelte
472
- # fallback directory when Rails.root pushes total length over 104 chars.
473
+ # fallback directory when Rails.root pushes total length over 103 chars.
473
474
  def self.socket_path
474
- primary = Rails.root.join("tmp", "sockets", SOCKET_FILENAME)
475
- return primary if primary.to_s.length < 104
475
+ primary = Rails.root.join("tmp", "sockets", "svelte-ctl-#{short_env}.sock")
476
+ if primary.to_s.length <= 103
477
+ FileUtils.mkdir_p(File.dirname(primary))
478
+ return primary
479
+ end
476
480
 
477
- fallback_dir = Pathname.new('/tmp/svelte')
478
- FileUtils.mkdir_p(fallback_dir)
479
- FileUtils.chmod(0777, fallback_dir)
480
- fallback_dir.join(SOCKET_FILENAME)
481
+ Pathname.new("/tmp/svelte-#{short_env}-ctl-#{Digest::XXH64.hexdigest(Rails.root.to_s)}.sock")
481
482
  end
482
483
 
483
484
  # enable communication by rake task for admin purposes
@@ -506,7 +507,10 @@ module SvelteOnRails
506
507
  socket_path: client_instance.socket_path,
507
508
  initialized_by: client_instance.initialized_by,
508
509
  ping: client_instance.ping?,
509
- start_node_server_command: client_instance.start_node_server_command
510
+ start_node_server_command: client_instance.start_node_server_command,
511
+ render_success_count: client_instance.render_success_count,
512
+ render_failure_count: client_instance.render_failure_count,
513
+ error_log: client_instance.error_log
510
514
  }
511
515
  when :stop
512
516
  begin
@@ -544,6 +548,21 @@ module SvelteOnRails
544
548
  )
545
549
 
546
550
  end
551
+
552
+ def self.short_env
553
+
554
+ name = Rails.env.to_s
555
+
556
+ short = {
557
+ "development" => "dev",
558
+ "production" => "prod",
559
+ "staging" => "stage",
560
+ }[name]
561
+
562
+ return name unless short
563
+ return name if Rails.root.join("config", "environments", "#{short}.rb").exist?
564
+ short
565
+ end
547
566
  end
548
567
 
549
568
  class SsrError < StandardError; end
@@ -19,14 +19,15 @@ namespace :svelte_on_rails do
19
19
  puts "INFO FROM THE SSR CLIENT (Rails-side):"
20
20
  puts
21
21
  puts " Rails env : #{client_status[:env]}"
22
- puts " Uptime : #{client_status[:uptime].round(0)}sec"
23
22
  puts " Initialized by : #{client_status[:initialized_by]}"
24
- puts " Socket (Node) : #{socket_path} (#{File.socket?(socket_path) ? 'Present/OK' : 'NOT FOUND!'})"
25
- puts " Ping to Node : #{client_status[:ping] ? 'SUCCESS' : 'FAILED'}"
26
- puts ' Node bin : ' + configs.node_bin_path.to_s
23
+ puts " Uptime : #{client_status[:uptime].round(0)} sec"
27
24
  puts ' Node version : ' + configs.node_version_test
28
- puts ' SSR Server bin : ' + configs.ssr_server_bin_path.to_s
25
+ puts ' Node bin : ' + configs.node_bin_path.to_s
29
26
  puts ' NPM package version : ' + configs.npm_package_version_test.to_s
27
+ puts ' SSR Server bin : ' + configs.ssr_server_bin_path.to_s
28
+ puts " Socket (SsrServer) : #{socket_path} (#{File.socket?(socket_path) ? 'Present/OK' : 'NOT FOUND!'})"
29
+ puts " Ping to SsrServer : #{client_status[:ping] ? 'SUCCESS' : 'FAILED'}"
30
+ puts " SSR renders : #{client_status[:render_success_count]} succeeded, #{client_status[:render_failure_count]} failed"
30
31
  puts
31
32
 
32
33
  # NODE SERVER STATUS
@@ -54,6 +55,13 @@ namespace :svelte_on_rails do
54
55
  puts
55
56
  puts 'ADDITIONAL INFO:'
56
57
  puts
58
+ if client_status[:error_log] == []
59
+ puts 'No error logs on the client side (Ruby).'
60
+ else
61
+ puts "#{client_status[:error_log].length} Errors (Limited to 50):"
62
+ puts " #{client_status[:error_log].reverse.join("\n ")}"
63
+ end
64
+ puts
57
65
  puts 'How was the node bin path determined:'
58
66
  configs.instance_variable_get(:@node_bin_path_log).each_with_index do |line, index|
59
67
  puts " #{index + 1} #{line}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svelte-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 22.5.0
4
+ version: 22.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Sedlmair