diff --git a/.ruby-version b/.ruby-version index 1effb00..8c50098 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7 +3.1 diff --git a/Gemfile b/Gemfile index 954cdd8..fafc811 100644 --- a/Gemfile +++ b/Gemfile @@ -22,7 +22,7 @@ gem 'webpacker', '~> 5.0' group :development, :test do gem 'dotenv-rails' - # disabled until a fix is available for Rails 6.1 compat gem 'pgreset' + gem 'pgreset' end group :development do @@ -31,7 +31,7 @@ group :development do gem 'guard-rubocop', require: false gem 'guard-shell', require: false gem 'invoker' - gem 'listen', '>= 3.0.5', '< 3.2' + gem 'listen', '~> 3.3' gem 'rack-toolbar', github: 'swrobel/rack-toolbar', branch: 'rails-pages' # Insert arbitrary code into Rails pages gem 'rubocop' gem 'rubocop-performance' diff --git a/Gemfile.lock b/Gemfile.lock index 1598c86..a845137 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -136,10 +136,9 @@ GEM rubydns (~> 0.8.5) thor (>= 0.19, < 2) uuid (~> 2.3) - listen (3.1.5) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) + listen (3.7.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) loofah (2.14.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -172,6 +171,7 @@ GEM parser (3.1.0.0) ast (~> 2.4.1) pg (1.3.2) + pgreset (0.3) pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) @@ -246,7 +246,6 @@ GEM rubocop (>= 1.7.0, < 2.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) - ruby_dep (1.5.0) rubydns (0.8.5) eventmachine (~> 1.0.0) safely_block (0.3.0) @@ -314,11 +313,12 @@ DEPENDENCIES guard-shell hiredis invoker - listen (>= 3.0.5, < 3.2) + listen (~> 3.3) memery newrelic_rpm oj pg + pgreset puma rack-brotli rack-toolbar! @@ -337,7 +337,7 @@ DEPENDENCIES webpacker (~> 5.0) RUBY VERSION - ruby 2.7.5p203 + ruby 3.1.0p0 BUNDLED WITH - 2.2.21 + 2.2.33 diff --git a/Procfile b/Procfile index 09ebf6e..e90357e 100644 --- a/Procfile +++ b/Procfile @@ -1,4 +1,4 @@ -web: bin/rails server -p $PORT -buoy: bin/buoys_daemon -forecast: bin/forecasts_daemon -release: bin/rails db:migrate db:seed database_views:refresh cache:prune +web: RUBY_YJIT_ENABLE=1 bin/rails server -p $PORT +buoy: RUBY_YJIT_ENABLE=1 bin/buoys_daemon +forecast: RUBY_YJIT_ENABLE=1 bin/forecasts_daemon +release: RUBY_YJIT_ENABLE=1 bin/rails db:migrate db:seed database_views:refresh cache:prune diff --git a/app/models/api_request.rb b/app/models/api_request.rb index 24d3417..13c2950 100644 --- a/app/models/api_request.rb +++ b/app/models/api_request.rb @@ -22,11 +22,11 @@ def get(retries: 0) if response.success? # Remove invalid UTF-8 chars from response, ex: Surfline v1 'S�o Jo�o' response.body.delete!("^\u{0000}-\u{007F}") - self.attributes = { response: service_class.parse(response.body), success: true, response_time: response.total_time, retries: retries } + self.attributes = { response: service_class.parse(response.body), success: true, response_time: response.total_time, retries: } save! send(service_parse_method) else - self.attributes = { response: { message: response.status_message, headers: response.headers, status: response.code }, success: false, response_time: response.total_time, retries: retries } + self.attributes = { response: { message: response.status_message, headers: response.headers, status: response.code }, success: false, response_time: response.total_time, retries: } SurflineV2.expire_access_token if service == 'SurflineV2' && [401, 403].include?(response.code) # Unauthorized get(retries: retries + 1) end diff --git a/app/models/concerns/api_requests/buoy_report.rb b/app/models/concerns/api_requests/buoy_report.rb index 1730305..073c471 100644 --- a/app/models/concerns/api_requests/buoy_report.rb +++ b/app/models/concerns/api_requests/buoy_report.rb @@ -16,7 +16,7 @@ def parse_buoy_report batch: batch_id, request: id, ndbc: ndbc_id, - line: line, + line:, }) } end diff --git a/app/models/concerns/api_requests/surfline_v1.rb b/app/models/concerns/api_requests/surfline_v1.rb index aa276ea..575cef5 100644 --- a/app/models/concerns/api_requests/surfline_v1.rb +++ b/app/models/concerns/api_requests/surfline_v1.rb @@ -59,12 +59,12 @@ def parse_surfline_v1 end forecasts.each do |surfline_v1_id, timestamps| - next unless (forecasted_spot = Spot.find_by(surfline_v1_id: surfline_v1_id)) + next unless (forecasted_spot = Spot.find_by(surfline_v1_id:)) timestamps.each do |timestamp, values| # Adjust for DST-related shifts in timestamps so they're all multiples of 3 timestamp -= (timestamp.utc.hour % 3).hours - record = service_class.unscoped.where(spot_id: forecasted_spot.id, timestamp: timestamp).first_or_initialize + record = service_class.unscoped.where(spot_id: forecasted_spot.id, timestamp:).first_or_initialize record.api_request = self values.each do |attribute, value| record[attribute] = value diff --git a/app/models/concerns/api_requests/surfline_v2.rb b/app/models/concerns/api_requests/surfline_v2.rb index bf91169..44d1c96 100644 --- a/app/models/concerns/api_requests/surfline_v2.rb +++ b/app/models/concerns/api_requests/surfline_v2.rb @@ -37,7 +37,7 @@ def parse_surfline_v2_wave end # Wind request needs to be made after wave request is completed - ApiRequest.new(batch: batch, requestable: requestable, service: service, hydra: hydra, options: options.merge(type: 'wind'), typhoeus_opts: typhoeus_opts).get + ApiRequest.new(batch:, requestable:, service:, hydra:, options: options.merge(type: 'wind'), typhoeus_opts:).get end end end diff --git a/app/models/concerns/spots/surfline_v1.rb b/app/models/concerns/spots/surfline_v1.rb index 3e740fc..e5fe26d 100644 --- a/app/models/concerns/spots/surfline_v1.rb +++ b/app/models/concerns/spots/surfline_v1.rb @@ -25,11 +25,11 @@ def surfline_v1_api_url(get_all_spots:, use_nearshore:) end def surfline_nearshore_api_url(get_all_spots: true) - surfline_v1_api_url(get_all_spots: get_all_spots, use_nearshore: true) + surfline_v1_api_url(get_all_spots:, use_nearshore: true) end def surfline_lola_api_url(get_all_spots: true) - surfline_v1_api_url(get_all_spots: get_all_spots, use_nearshore: false) + surfline_v1_api_url(get_all_spots:, use_nearshore: false) end end end diff --git a/app/models/concerns/spots/surfline_v2.rb b/app/models/concerns/spots/surfline_v2.rb index fdf0aed..ba3ff96 100644 --- a/app/models/concerns/spots/surfline_v2.rb +++ b/app/models/concerns/spots/surfline_v2.rb @@ -28,11 +28,11 @@ def surfline_v2_api_url(type:, use_lotus:) end def surfline_v2_lola_api_url(type: 'wave') - surfline_v2_api_url(type: type, use_lotus: false) + surfline_v2_api_url(type:, use_lotus: false) end def surfline_v2_lotus_api_url(type: 'wave') - surfline_v2_api_url(type: type, use_lotus: true) + surfline_v2_api_url(type:, use_lotus: true) end end end diff --git a/app/models/surfline_v2.rb b/app/models/surfline_v2.rb index e78f02e..8617e07 100644 --- a/app/models/surfline_v2.rb +++ b/app/models/surfline_v2.rb @@ -23,7 +23,7 @@ def access_token 'Authorization' => AUTH_STRING, 'Content-Type' => 'application/json', } - response = Typhoeus.post("#{SurflineV2.base_api_url}/trusted/token?isShortLived=false", headers: headers, body: body) + response = Typhoeus.post("#{SurflineV2.base_api_url}/trusted/token?isShortLived=false", headers:, body:) raise "Surfline v2 access token refresh error: #{response.body}" unless response.success? logger.info 'Surfline v2 access token refreshed!' diff --git a/config/environments/development.rb b/config/environments/development.rb index 03f656b..3915ea0 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -54,7 +54,7 @@ config.hosts << 'surf.localhost' dev_server = Webpacker.config.dev_server - WEBPACK_SCRIPT_TAG ||= "" + WEBPACK_SCRIPT_TAG ||= "".freeze config.middleware.insert_before ActionDispatch::ShowExceptions, Rack::Toolbar, snippet: WEBPACK_SCRIPT_TAG, insertion_point: '', diff --git a/config/puma.rb b/config/puma.rb index f01815e..f018d09 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -10,7 +10,7 @@ after_worker_boot do title = 'MetaSurf server started' - defined?(TerminalNotifier) && TerminalNotifier::Guard.success('', title: title) + defined?(TerminalNotifier) && TerminalNotifier::Guard.success('', title:) defined?(Libnotify) && Libnotify.show(summary: title) # Trick Webpack into reloading browser `touch config/locales/en.yml` diff --git a/lib/tasks/buoys.rake b/lib/tasks/buoys.rake index 0d17a49..79b25d9 100644 --- a/lib/tasks/buoys.rake +++ b/lib/tasks/buoys.rake @@ -9,7 +9,7 @@ namespace :buoys do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency) Buoy.all.each do |buoy| - ApiRequest.new(batch: @batch, requestable: buoy, service: BuoyReport, hydra: hydra).get + ApiRequest.new(batch: @batch, requestable: buoy, service: BuoyReport, hydra:).get end hydra.run diff --git a/lib/tasks/msw.rake b/lib/tasks/msw.rake index ffa7f73..c3c82bb 100644 --- a/lib/tasks/msw.rake +++ b/lib/tasks/msw.rake @@ -11,7 +11,7 @@ namespace :msw do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency) Spot.where.not(msw_id: nil).each do |spot| - ApiRequest.new(batch: @batch, requestable: spot, service: Msw, hydra: hydra, typhoeus_opts: { cookie: "MSW_session=#{ENV['MSW_SESSION_ID']}" }).get + ApiRequest.new(batch: @batch, requestable: spot, service: Msw, hydra:, typhoeus_opts: { cookie: "MSW_session=#{ENV['MSW_SESSION_ID']}" }).get end hydra.run diff --git a/lib/tasks/spitcast_v1.rake b/lib/tasks/spitcast_v1.rake index e4e1d16..748f613 100644 --- a/lib/tasks/spitcast_v1.rake +++ b/lib/tasks/spitcast_v1.rake @@ -11,7 +11,7 @@ namespace :spitcast_v1 do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency) Spot.where.not(spitcast_id: nil).each do |spot| - ApiRequest.new(batch: @batch, requestable: spot, service: SpitcastV1, hydra: hydra).get + ApiRequest.new(batch: @batch, requestable: spot, service: SpitcastV1, hydra:).get end hydra.run diff --git a/lib/tasks/spitcast_v2.rake b/lib/tasks/spitcast_v2.rake index ae872db..5ecc453 100644 --- a/lib/tasks/spitcast_v2.rake +++ b/lib/tasks/spitcast_v2.rake @@ -12,7 +12,7 @@ namespace :spitcast_v2 do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency, pipelining: 2) Spot.where.not(spitcast_id: nil).each do |spot| - ApiRequest.new(batch: @batch, requestable: spot, service: SpitcastV2, hydra: hydra).get + ApiRequest.new(batch: @batch, requestable: spot, service: SpitcastV2, hydra:).get end hydra.run diff --git a/lib/tasks/surfline_v1.rake b/lib/tasks/surfline_v1.rake index 96bcb82..ce1bd7f 100644 --- a/lib/tasks/surfline_v1.rake +++ b/lib/tasks/surfline_v1.rake @@ -11,8 +11,8 @@ namespace :surfline_v1 do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency) Spot.where.not(surfline_v1_id: nil).each do |spot| - ApiRequest.new(batch: @batch, requestable: spot, service: SurflineNearshore, options: { get_all_spots: false }, hydra: hydra).get - ApiRequest.new(batch: @batch, requestable: spot, service: SurflineLola, options: { get_all_spots: false }, hydra: hydra).get + ApiRequest.new(batch: @batch, requestable: spot, service: SurflineNearshore, options: { get_all_spots: false }, hydra:).get + ApiRequest.new(batch: @batch, requestable: spot, service: SurflineLola, options: { get_all_spots: false }, hydra:).get end hydra.run diff --git a/lib/tasks/surfline_v2.rake b/lib/tasks/surfline_v2.rake index 4c82dfc..ee1242b 100644 --- a/lib/tasks/surfline_v2.rake +++ b/lib/tasks/surfline_v2.rake @@ -11,8 +11,8 @@ namespace :surfline_v2 do hydra = Typhoeus::Hydra.new(max_concurrency: @batch.concurrency) Spot.where.not(surfline_v2_id: nil).each do |spot| - ApiRequest.new(batch: @batch, requestable: spot, service: SurflineV2Lola, hydra: hydra).get - ApiRequest.new(batch: @batch, requestable: spot, service: SurflineV2Lotus, hydra: hydra).get + ApiRequest.new(batch: @batch, requestable: spot, service: SurflineV2Lola, hydra:).get + ApiRequest.new(batch: @batch, requestable: spot, service: SurflineV2Lotus, hydra:).get end hydra.run