dial 0.3.1 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c57fbfd8d0f023bcfd0606a5d61cfe84dd7b93d618dd844d50332b576dcce3d5
4
- data.tar.gz: 27db795cf357bd7c878ea939c9c66374cc50f54e304466f91b9add37e0535a95
3
+ metadata.gz: 1cf2ace9f735e0ffd4c290b742bbf7f89f322babb96636e942fe1faaf92a8e45
4
+ data.tar.gz: '06279e4a580959080df277abe1a8488bca20f50276d9221ca399366f570e1426'
5
5
  SHA512:
6
- metadata.gz: ea4ba198fd052cdfed3a35d95a5424f6da32c94da85dec1cad9d78edd6b92e336d35afa76704349c5ef0475ac8a60f9ba90026b753109f4a0cea8caba994d3c4
7
- data.tar.gz: 4d1578a97dd8439a4e6060698d24a0605f9747fd471d47844dd5f981f257790a00ecd4a5ed097377ef3af6d61062dd0b76d6023f5fd5dca0990a8f2642421c5a
6
+ metadata.gz: bde524497181a25dbeddc54f8f04ff128714844a5f2b6d8c84ae569bf4d45cb39942dddbe0d687e63c7b3c23f590410128de4abfffa69e5ee41923be4a73b6c1
7
+ data.tar.gz: e2bd5aef0ee0975a8e9c227a77296f40811d558251035771177c11f2128b599d905644186237280b3718f64ff65b31b834e01cfd222e5baba0077a53ee631451
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.2] - 2025-05-14
4
+
5
+ - Consolidate railtie initializers
6
+
3
7
  ## [0.3.1] - 2025-05-03
4
8
 
5
9
  - Only show truncated summary + one full query in N+1 logs
@@ -31,6 +31,7 @@ module Dial
31
31
 
32
32
  def freeze
33
33
  @options.freeze
34
+
34
35
  super
35
36
  end
36
37
  end
@@ -21,6 +21,7 @@ module Dial
21
21
  VERNIER_INTERVAL = 200
22
22
  VERNIER_ALLOCATION_INTERVAL = 2_000
23
23
  VERNIER_PROFILE_OUT_RELATIVE_DIRNAME = "tmp/dial/profiles"
24
+ VERNIER_PROFILE_OUT_FILE_EXTENSION = ".json.gz"
24
25
  VERNIER_VIEWER_URL = "https://vernier.prof"
25
26
 
26
27
  PROSOPITE_IGNORE_QUERIES = [/schema_migrations/i].freeze
@@ -4,7 +4,7 @@ Dial::Engine.routes.draw do
4
4
  scope path: "/dial", as: "dial" do
5
5
  get "profile", to: lambda { |env|
6
6
  uuid = env[::Rack::QUERY_STRING].sub "uuid=", ""
7
- path = String ::Rails.root.join Dial::VERNIER_PROFILE_OUT_RELATIVE_DIRNAME, "#{uuid}.json.gz"
7
+ path = String ::Rails.root.join Dial::VERNIER_PROFILE_OUT_RELATIVE_DIRNAME, (uuid + VERNIER_PROFILE_OUT_FILE_EXTENSION)
8
8
 
9
9
  if File.exist? path
10
10
  [
@@ -192,7 +192,7 @@ module Dial
192
192
  def formatted_profile_output env, profile_out_filename
193
193
  url_base = ::Rails.application.routes.url_helpers.dial_url host: env[::Rack::HTTP_HOST]
194
194
  prefix = "/" unless url_base.end_with? "/"
195
- uuid = profile_out_filename.delete_suffix ".json.gz"
195
+ uuid = profile_out_filename.delete_suffix VERNIER_PROFILE_OUT_FILE_EXTENSION
196
196
  profile_out_url = URI.encode_www_form_component url_base + "#{prefix}dial/profile?uuid=#{uuid}"
197
197
 
198
198
  "<a href='https://vernier.prof/from-url/#{profile_out_url}' target='_blank'>View profile</a>"
@@ -3,6 +3,7 @@
3
3
  require "vernier"
4
4
  require "prosopite"
5
5
 
6
+ require_relative "prosopite"
6
7
  require_relative "middleware/panel"
7
8
  require_relative "middleware/ruby_stat"
8
9
  require_relative "middleware/rails_stat"
@@ -23,7 +24,7 @@ module Dial
23
24
 
24
25
  start_time = Process.clock_gettime Process::CLOCK_MONOTONIC
25
26
 
26
- profile_out_filename = "#{Util.uuid}_vernier.json.gz"
27
+ profile_out_filename = "#{Util.uuid}_vernier" + VERNIER_PROFILE_OUT_FILE_EXTENSION
27
28
  profile_out_pathname = "#{profile_out_dir_pathname}/#{profile_out_filename}"
28
29
 
29
30
  status, headers, rack_body, ruby_vm_stat, gc_stat, gc_stat_heap, vernier_result = nil
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_support/core_ext/string/filters"
4
+
3
5
  module Dial
4
6
  module Prosopite
5
7
  def send_notifications
data/lib/dial/railtie.rb CHANGED
@@ -4,42 +4,32 @@ require "rails"
4
4
  require "active_record"
5
5
  require "prosopite"
6
6
 
7
- require_relative "prosopite"
8
7
  require_relative "middleware"
9
8
  require_relative "prosopite_logger"
10
9
 
11
10
  module Dial
12
11
  class Railtie < ::Rails::Railtie
13
- initializer "dial.use_middleware", after: :load_config_initializers do |app|
12
+ initializer "dial.setup", after: :load_config_initializers do |app|
13
+ # use middleware
14
14
  app.middleware.insert_before 0, Middleware
15
- end
16
-
17
- initializer "dial.set_up_vernier", after: :load_config_initializers do |app|
18
- app.config.after_initialize do
19
- FileUtils.mkdir_p ::Rails.root.join VERNIER_PROFILE_OUT_RELATIVE_DIRNAME
20
- end
21
- end
22
15
 
23
- initializer "dial.clean_up_vernier_profile_out_files", after: :load_config_initializers do |app|
24
- stale_files("#{profile_out_dir_pathname}/*.json.gz").each do |profile_out_file|
16
+ # clean up stale vernier profile output files
17
+ stale_files("#{profile_out_dir_pathname}/*" + VERNIER_PROFILE_OUT_FILE_EXTENSION).each do |profile_out_file|
25
18
  File.delete profile_out_file rescue nil
26
19
  end
27
- end
28
20
 
29
- initializer "dial.set_up_prosopite", after: :load_config_initializers do |app|
30
21
  app.config.after_initialize do
22
+ # set up vernier
23
+ FileUtils.mkdir_p ::Rails.root.join VERNIER_PROFILE_OUT_RELATIVE_DIRNAME
24
+
25
+ # set up prosopite
31
26
  if ::ActiveRecord::Base.configurations.configurations.any? { |config| config.adapter == "postgresql" }
32
27
  require "pg_query"
33
28
  end
34
-
35
29
  ::Prosopite.custom_logger = ProsopiteLogger.new PROSOPITE_LOG_IO
36
- end
37
- end
38
30
 
39
- initializer "dial.setup", after: :load_config_initializers do |app|
40
- app.config.after_initialize do
31
+ # finalize configuration
41
32
  Dial._configuration.freeze
42
-
43
33
  ::Prosopite.ignore_queries = Dial._configuration.prosopite_ignore_queries
44
34
  end
45
35
  end
data/lib/dial/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dial
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.2"
5
5
  end
data/lib/dial.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "dial/util"
4
3
  require_relative "dial/constants"
4
+ require_relative "dial/util"
5
5
 
6
6
  require_relative "dial/configuration"
7
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dial
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Young
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubygems_version: 3.6.7
141
+ rubygems_version: 3.6.9
142
142
  specification_version: 4
143
143
  summary: A modern profiler for your Rails application
144
144
  test_files: []