Skip to content

Commit a706476

Browse files
upgrade ruby to 4.0.5 (#2065)
* upgrade ruby to 4.0.5 * use local variable for CDR string_filters
2 parents 1d5a84d + 7e96f62 commit a706476

7 files changed

Lines changed: 36 additions & 30 deletions

File tree

.rubocop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins:
88
AllCops:
99
DisplayCopNames: true
1010
DisabledByDefault: true
11-
TargetRubyVersion: 3.3
11+
TargetRubyVersion: 4.0
1212
Exclude:
1313
- 'db/migrate/**/*'
1414
- 'db/cdr_migrate/**/*'

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.4.10
1+
4.0.5

Gemfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ gem 'webrick', require: false
145145

146146
gem 'cronex'
147147

148+
# Ruby 4.0 dropped cgi from the default gems (only cgi/escape survives), but
149+
# click_house's logging middleware still calls CGI.parse and upstream is unmaintained.
150+
gem 'cgi'
148151
gem 'click_house'
149152

150153
gem 'aws-sdk-s3', require: false

Gemfile.lock

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ GEM
267267
capybara-screenshot (1.0.27)
268268
capybara (>= 1.0, < 4)
269269
launchy
270+
cgi (0.5.2)
270271
click_house (2.1.2)
271272
activesupport
272273
faraday (>= 1.7, < 3)
@@ -525,7 +526,7 @@ GEM
525526
matrix (0.4.3)
526527
mini_mime (1.1.5)
527528
mini_portile2 (2.8.9)
528-
mini_racer (0.21.2)
529+
mini_racer (0.21.4)
529530
libv8-node (~> 24.12.0.1)
530531
minitest (6.0.6)
531532
drb (~> 2.0)
@@ -869,7 +870,7 @@ GEM
869870
logger
870871
prism (>= 1.6.0)
871872
tsort
872-
rbtree (0.4.6)
873+
rbtree (0.4.7)
873874
rchardet (1.10.2)
874875
rdoc (8.0.0)
875876
erb
@@ -1084,6 +1085,7 @@ DEPENDENCIES
10841085
capybara
10851086
capybara-screenshot
10861087
capybara_active_admin!
1088+
cgi
10871089
click_house
10881090
config
10891091
cronex

app/admin/cdr/cdrs.rb

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# frozen_string_literal: true
22

33
# ActiveAdmin's default string predicates, with "equals" first instead of "contains".
4-
STRING_FILTERS = %i[eq cont start end].freeze
4+
# A local, not a constant: app/admin is reloaded on every delayed_job poll in
5+
# development, and a top-level constant warns "already initialized" on each reload.
6+
string_filters = %i[eq cont start end].freeze
57

68
ActiveAdmin.register Cdr::Cdr, as: 'CDR' do
79
menu parent: 'CDR', priority: 95, label: 'CDR history'
@@ -85,9 +87,9 @@ def try_cdr_replica(&)
8587
label: 'Customer Auth',
8688
scope: -> { CustomersAuth.order(:name) },
8789
path: '/customers_auths/search'
88-
filter :src_prefix_routing, filters: STRING_FILTERS
90+
filter :src_prefix_routing, filters: string_filters
8991
filter :src_area, collection: proc { Routing::Area.select(%i[id name]) }, input_html: { class: 'tom-select' }
90-
filter :dst_prefix_routing, filters: STRING_FILTERS
92+
filter :dst_prefix_routing, filters: string_filters
9193
filter :dst_area, collection: proc { Routing::Area.select(%i[id name]) }, input_html: { class: 'tom-select' }
9294

9395
country_filter :src_country_id_eq, label: 'SRC Country'
@@ -154,47 +156,47 @@ def try_cdr_replica(&)
154156
multiple: true,
155157
'data-path': '/disconnect_codes/search'
156158
}
157-
filter :internal_disconnect_reason, filters: STRING_FILTERS
159+
filter :internal_disconnect_reason, filters: string_filters
158160
filter :lega_disconnect_code
159-
filter :lega_disconnect_reason, filters: STRING_FILTERS
161+
filter :lega_disconnect_reason, filters: string_filters
160162
filter :lega_q850_cause_eq, label: 'LegA Q.850 cause', as: :select, collection: System::Q850::CAUSES.invert, input_html: { class: 'tom-select' }
161163

162164
filter :legb_disconnect_code
163-
filter :legb_disconnect_reason, filters: STRING_FILTERS
165+
filter :legb_disconnect_reason, filters: string_filters
164166
filter :legb_q850_cause_eq, label: 'LegB Q.850 cause', as: :select, collection: System::Q850::CAUSES.invert, input_html: { class: 'tom-select' }
165167

166-
filter :src_prefix_in, filters: STRING_FILTERS
167-
filter :dst_prefix_in, filters: STRING_FILTERS
168-
filter :src_prefix_out, filters: STRING_FILTERS
169-
filter :dst_prefix_out, filters: STRING_FILTERS
170-
filter :lrn, filters: STRING_FILTERS
171-
filter :diversion_in, filters: STRING_FILTERS
172-
filter :diversion_out, filters: STRING_FILTERS
173-
filter :src_name_in, filters: STRING_FILTERS
174-
filter :src_name_out, filters: STRING_FILTERS
168+
filter :src_prefix_in, filters: string_filters
169+
filter :dst_prefix_in, filters: string_filters
170+
filter :src_prefix_out, filters: string_filters
171+
filter :dst_prefix_out, filters: string_filters
172+
filter :lrn, filters: string_filters
173+
filter :diversion_in, filters: string_filters
174+
filter :diversion_out, filters: string_filters
175+
filter :src_name_in, filters: string_filters
176+
filter :src_name_out, filters: string_filters
175177
filter :node, input_html: { class: 'tom-select' }
176178
filter :pop, input_html: { class: 'tom-select' }
177-
filter :local_tag, filters: STRING_FILTERS
178-
filter :legb_local_tag, filters: STRING_FILTERS
179-
filter :orig_call_id, as: :string, filters: STRING_FILTERS
180-
filter :term_call_id, as: :string, filters: STRING_FILTERS
179+
filter :local_tag, filters: string_filters
180+
filter :legb_local_tag, filters: string_filters
181+
filter :orig_call_id, as: :string, filters: string_filters
182+
filter :term_call_id, as: :string, filters: string_filters
181183
filter :routing_attempt
182184
filter :customer_price
183185
filter :vendor_price
184186
filter :profit
185187
filter :routing_delay
186188
filter :pdd
187189
filter :rtt
188-
filter :p_charge_info_in, filters: STRING_FILTERS
190+
filter :p_charge_info_in, filters: string_filters
189191
filter :uuid_equals, label: 'UUID'
190192
filter :auth_orig_ip_covers,
191193
as: :string,
192194
input_html: { class: 'search_filter_string' },
193195
label: I18n.t('activerecord.attributes.cdr.auth_orig_ip')
194-
filter :sign_orig_ip, filters: STRING_FILTERS
195-
filter :sign_orig_local_ip, filters: STRING_FILTERS
196-
filter :sign_term_local_ip, filters: STRING_FILTERS
197-
filter :sign_term_ip, filters: STRING_FILTERS
196+
filter :sign_orig_ip, filters: string_filters
197+
filter :sign_orig_local_ip, filters: string_filters
198+
filter :sign_term_local_ip, filters: string_filters
199+
filter :sign_term_ip, filters: string_filters
198200
filter :customer_auth_external_type_eq, as: :string, label: 'CUSTOMER AUTH EXTERNAL TYPE'
199201
filter :lega_ss_status_id_eq, label: 'LegA SS status', as: :select, collection: Cdr::Cdr::SS_STATUSES.invert, input_html: { class: 'tom-select' }
200202
filter :legb_ss_status_id_eq, label: 'LegB SS status', as: :select, collection: Cdr::Cdr::SS_STATUSES.invert, input_html: { class: 'tom-select' }

bin/prometheus_exporter

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
# this file is here to facilitate running it.
99
#
1010

11-
require 'pathname'
1211
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', Pathname.new(__FILE__).realpath)
1312

1413
bundle_binstub = File.expand_path('bundle', __dir__)

spec/features/ajax_filters_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
customer_filter.dropdown.select_option(customer.display_name)
3535
page.find('.filter_form input[type=submit]').click
3636

37-
expect(CGI.unescape(page.current_url)).to include("q[customer_id_eq]=#{customer.id}")
37+
expect(Rack::Utils.unescape(page.current_url)).to include("q[customer_id_eq]=#{customer.id}")
3838
# expect(page).to have_field_tom_select('Customer', with: customer.display_name)
3939
parent = find('.filter_form')
4040
new_customer_filter = Section::TomSelect.by_label('CUSTOMER', exact: true, parent:)

0 commit comments

Comments
 (0)