svelte-on-rails 20.0.16 → 20.0.17

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: 5ea741277dc8214fd9edcfdf9ebe8f22a21d80eb4023e23b1114f484c5cd012d
4
- data.tar.gz: 36841e7cbafafd290835b13fe91a265b97f69a7ce04f4d3c46e32abbb8e440e2
3
+ metadata.gz: 9144e74eeecc65734e45f39390210c62b8192b4c8fd057aef5903a84637d97e3
4
+ data.tar.gz: 4bc9d6d33e6cb7983c1c1b4e2f2c8a0c40e1065ed333ad79aecbea2e385d84e1
5
5
  SHA512:
6
- metadata.gz: '08ca11e82eca49895e9802c3fb331db0935fab58f279e170cd3d8dd53c3d1ad2818df90b797c6b53013ad3a4c691544b998c79a41b17518bea867f21298e3b8d'
7
- data.tar.gz: 30fd85219c61dd47eef56240659c35255f9f34ec284d522da75dce163150cc65070b8867ca42f971ad37bfab361a5d0471e76700a2db0dd81445718cc4807932
6
+ metadata.gz: fe98253869d4730560c194113043e04f4e8ae29abb62a1fcc6140498fb164bb0b3ee9aaddfaf539145eee955a2e99fdf808ffa8c83de7bb3a527ae333cf70008
7
+ data.tar.gz: 86ec27e42e9730ae51b3d41b4955a05113eac218074c3e2b3d55333d0aacf603f5772e1a1c373a750da6d77b7b930a58c8701443878ffe4b1dee1e3e5deaa2b2
@@ -17,31 +17,18 @@ module SvelteOnRails
17
17
  initializer "svelte-on-rails.initialize_ssr_client" do |app|
18
18
  app.config.after_initialize do
19
19
 
20
- # if SvelteOnRails::SsrServer.start_ssr_server?
21
- # if defined?(Puma::Server)
20
+ if defined?(Rake) && Rake.respond_to?(:application) && Rake.application.top_level_tasks.any?
21
+ puts "[Skipping svelte-on-rails because of top level task: #{Rake.application.top_level_tasks.join(', ')}]"
22
+ $stdout.flush
23
+ else
24
+ SvelteOnRails::Lib::Utils.secure_debug_log("Initializing SSR client")
25
+ SvelteOnRails::SsrServer.instance
26
+ SvelteOnRails::Lib::Utils.secure_debug_log("Initializing SSR client finished")
27
+ end
22
28
 
23
- # if defined?(Rake) && Rake.respond_to?(:application) && Rake.application.top_level_tasks.any?
24
- # puts "Rake top level tasks!"
25
- # else
26
- #
27
- # SvelteOnRails::Lib::Utils.secure_debug_log("Initializing SSR client")
28
- # SvelteOnRails::SsrServer.instance
29
- # SvelteOnRails::Lib::Utils.secure_debug_log("Initializing SSR client finished")
30
- #end
31
-
32
- # end
33
- # else
34
- # SvelteOnRails::Lib::Utils.secure_debug_log("Skipping SSR client (not a web server boot)")
35
- # end
36
29
  end
37
30
  end
38
31
 
39
- # initializer "svelte-on-rails.initialize_ssr_client" do
40
- # SvelteOnRails::Lib::Utils.secure_debug_log("calling Initializing SSR client")
41
- # SvelteOnRails::SsrServer.instance
42
- # SvelteOnRails::Lib::Utils.secure_debug_log("Initializing SSR client finished")
43
- # end
44
-
45
32
  initializer 'svelte_on_rails.active_record_extensions' do
46
33
  ActiveSupport.on_load(:active_record) do
47
34
 
@@ -32,22 +32,25 @@ module SvelteOnRails
32
32
  @node_bin = SvelteOnRails::Configuration.instance.node_bin_path
33
33
  @ssr_server_bin_path = SvelteOnRails::Configuration.instance.ssr_server_bin_path
34
34
 
35
- if @use_ssr_server
36
- # if !defined?(Rails::Server)
37
- # SvelteOnRails::Lib::Utils.secure_debug_log("Rails Server is not yet defined, SSR Server cannot be started because of initializing too early")
38
- # else
35
+ File.delete(restart_marker_file) if File.exist?(restart_marker_file)
39
36
 
40
- SvelteOnRails::Lib::Utils.secure_debug_log("SOR using svelte-ssr-server called, now starting node-server...")
37
+ if @use_ssr_server
38
+ # if !defined?(Rails::Server)
39
+ # SvelteOnRails::Lib::Utils.secure_debug_log("Rails Server is not yet defined, SSR Server cannot be started because of initializing too early")
40
+ # else
41
41
 
42
- start_node_server!
43
- # end
44
- at_exit do
45
- kill_my_server
46
- end
47
- else
48
- SvelteOnRails::Lib::Utils.secure_debug_log("SSR Server NOT used => @use_ssr_server #{@use_ssr_server}")
49
- SvelteOnRails::Lib::Utils.secure_debug_log("SSR Server NOT used => @use_ssr_server #{defined?(Rails::Server)}")
42
+ SvelteOnRails::Lib::Utils.secure_debug_log("SOR using svelte-ssr-server called, now starting node-server...")
43
+
44
+ start_node_server!
45
+ # end
46
+ at_exit do
47
+ kill_my_server
48
+ File.delete(restart_marker_file) if File.exist?(restart_marker_file)
50
49
  end
50
+ else
51
+ SvelteOnRails::Lib::Utils.secure_debug_log("SSR Server NOT used => @use_ssr_server #{@use_ssr_server}")
52
+ SvelteOnRails::Lib::Utils.secure_debug_log("SSR Server NOT used => @use_ssr_server #{defined?(Rails::Server)}")
53
+ end
51
54
 
52
55
  end
53
56
 
@@ -72,7 +75,9 @@ module SvelteOnRails
72
75
  response = socket.read
73
76
  socket.close
74
77
  rescue => e
75
- Thread.new { restart_my_server }
78
+ # Thread.new do
79
+ restart_my_server('Restart-after-failure')
80
+ # end
76
81
  if e.is_a?(Errno::ECONNREFUSED)
77
82
  SvelteOnRails::Lib::Utils.error_log(
78
83
  :ssr_server_unreachable,
@@ -178,7 +183,7 @@ module SvelteOnRails
178
183
 
179
184
  start = Time.now
180
185
  cmd = [
181
- "SVELTE_SSR_SERVER_STARTED_BY=r#{started_by}",
186
+ "SVELTE_SSR_SERVER_STARTED_BY=#{started_by}",
182
187
  @node_bin,
183
188
  @ssr_server_bin_path,
184
189
  @socket_path
@@ -249,19 +254,22 @@ module SvelteOnRails
249
254
 
250
255
  end
251
256
 
252
- def restart_my_server
253
- return unless @server_restarted_time > 1.minutes.ago
257
+ def restart_my_server(tag = nil)
258
+
259
+ marker = restart_marker_file
260
+ return if File.exist?(marker) && File.mtime(marker) > 1.minute.ago
254
261
 
255
- msg = "Restarting SSR server"
262
+ FileUtils.mkdir_p(marker.dirname)
263
+ File.open(marker, "a") { |f| f.puts(Time.now.utc.iso8601) }
264
+ count = File.read(marker).lines.count
265
+
266
+ msg = "Restarting SSR server (#{tag})"
256
267
  Rails.logger.error(msg)
257
268
  SvelteOnRails::Lib::Utils.secure_debug_log("[ERROR] #{msg}")
258
269
 
259
- @server_restarted_count ||= 0
260
- @server_restarted_count += 1
261
270
  kill_my_server
262
271
  begin
263
- start_node_server!("Restart-after-failure-#{@server_restarted_count}")
264
- @server_restarted_time = Time.now
272
+ start_node_server!("#{tag.gsub(' ','-')+'-' if tag}#{count}")
265
273
  rescue
266
274
  end
267
275
  end
@@ -284,6 +292,10 @@ module SvelteOnRails
284
292
 
285
293
  private
286
294
 
295
+ def restart_marker_file
296
+ Rails.root.join("tmp", "ssr_server_last_restart")
297
+ end
298
+
287
299
  def default_ssr_url
288
300
  "unix://#{socket_path}"
289
301
  end
@@ -388,24 +400,23 @@ module SvelteOnRails
388
400
  def ssr_server_ppid_file
389
401
  Rails.root.join("tmp", "pids", 'svelte_on_rails.ppid')
390
402
  end
403
+
391
404
  def socket_path(ppid: Process.ppid)
392
- app_sock = Rails.root.join("tmp/sockets/#{@socket_namespace}-#{ppid}.sock").to_s
405
+ app_sock = Rails.root.join("tmp/sockets/#{@socket_namespace}-#{ppid}.sock")
393
406
  FileUtils.mkdir_p(File.dirname(app_sock))
394
407
 
395
- return app_sock if app_sock.length < 104
408
+ return app_sock if app_sock.to_s.length < 104
396
409
 
397
410
  # Fallback: socket paths > 104 chars are unreliable on macOS/BSD
398
411
  FileUtils.rm_f(app_sock) if File.exist?(app_sock)
399
412
  dir = File.expand_path("/tmp/svelte")
400
413
  FileUtils.mkdir_p(dir)
401
414
  FileUtils.chmod(0777, dir)
402
- fallback = "#{dir}/#{@socket_namespace}-#{ppid}.sock"
415
+ fallback = Pathname.new("#{dir}/#{@socket_namespace}-#{ppid}.sock")
403
416
  start_server_log(nil, "sockets longer than 104 chars are risky, fallback to: #{fallback}")
404
417
  fallback
405
418
  end
406
419
 
407
-
408
-
409
420
  end
410
421
 
411
422
  class SsrError < StandardError; end
@@ -13,6 +13,8 @@ namespace :svelte_on_rails do
13
13
  server_helpers = SvelteOnRails::SsrServerHelpers.new
14
14
  socket_path = server_helpers.socket_path(ppid: ppid)
15
15
 
16
+ rails_env_warning(socket_path)
17
+
16
18
  puts '=' * 80
17
19
  puts "Svelte on Rails SSR Server"
18
20
  puts "Rails env: #{Rails.env.upcase}"
@@ -30,6 +32,8 @@ namespace :svelte_on_rails do
30
32
  else
31
33
  puts label('Process.ppid') + ppid.to_s
32
34
  puts label('Socket') + socket_path.to_s
35
+ puts 'Command for check the server instance:'
36
+ puts " • curl --unix-socket #{socket_path} http://localhost"
33
37
  end
34
38
  puts
35
39
  puts '=' * 80
@@ -40,16 +44,49 @@ namespace :svelte_on_rails do
40
44
  puts " • #{line}"
41
45
  end
42
46
  puts
43
- puts 'Command for check the server instance:'
44
- puts " • curl --unix-socket #{socket_path} http://localhost"
45
47
 
46
48
  end
47
49
 
50
+ def rails_env_warning(socket_path)
51
+ envs = guessed_rails_envs(socket_path.dirname)
52
+ if envs == [Rails.env]
53
+ # All good
54
+ elsif envs.include?(Rails.env)
55
+ puts '*' * 80
56
+ puts "INFO: Based on the socket paths #{socket_path.dirname},"
57
+ puts "this Rails app may run in #{envs.to_s.join(' or ')}."
58
+ puts "You are running as #{Rails.env} (Rails.env) which may be right."
59
+ puts '*' * 80
60
+ puts
61
+ else
62
+ puts '*' * 80
63
+ puts "WARNING: You are running as #{Rails.env} (Rails.env)"
64
+ puts "But the rails app seems to run in #{envs.to_s.join(' or ')}"
65
+ puts '*' * 80
66
+ puts
67
+ end
68
+ end
69
+
48
70
  def label(msg)
49
71
  l = msg.length
50
72
  " #{msg}:"[0..20] + (msg.length > 22 ? ':' : '') + ' ' * (20 - l)
51
73
  end
52
74
 
75
+ def guessed_rails_envs(dir)
76
+ envs_dir = Rails.root.join('config', 'environments')
77
+ return [] unless File.directory?(envs_dir) && File.directory?(dir)
78
+
79
+ possible_envs = Dir.children(envs_dir)
80
+ .select { |f| f.end_with?('.rb') }
81
+ .map { |f| File.basename(f, '.rb') }
82
+
83
+ entries = Dir.children(dir)
84
+
85
+ possible_envs.select do |env|
86
+ entries.any? { |entry| entry.include?("-#{env}-") }
87
+ end
88
+ end
89
+
53
90
  end
54
91
 
55
92
  Rake::Task["assets:precompile"].enhance ["svelte_on_rails:precompile"]
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: 20.0.16
4
+ version: 20.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Sedlmair