From af267cc08fc63a10faaaabe367d73089e40481bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Miedes=20Garc=C3=A9s?= Date: Mon, 22 Feb 2021 11:00:36 +0100 Subject: [PATCH] Fix autoload issues in subscriber --- NEWS.md | 1 + app/models/carto/api_key.rb | 16 +--------------- lib/api_key_grants_validator.rb | 16 ++++++++++++++++ lib/tasks/central_updates_subscriber.rake | 4 ++++ 4 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 lib/api_key_grants_validator.rb diff --git a/NEWS.md b/NEWS.md index c7b5d5ac2e..ddd8bcc087 100644 --- a/NEWS.md +++ b/NEWS.md @@ -75,6 +75,7 @@ sudo make install - Added dynamic meta title and canonical link to improve SEO in public pages for the Spatial Data Catalog [#16157](https://github.com/CartoDB/cartodb/pull/16157) - Fixed error that added multiple canonical links in the Spatial Data Catalog [#16160](https://github.com/CartoDB/cartodb/pull/16160) - Modify deprecation warning for DO analysis in builder [#16163](https://github.com/CartoDB/cartodb/pull/16163) +- Fix autoload issues in subscriber [#16171](https://github.com/CartoDB/cartodb/pull/16171) 4.44.0 (2020-11-20) ------------------- diff --git a/app/models/carto/api_key.rb b/app/models/carto/api_key.rb index cceb1387a4..c71fe97598 100644 --- a/app/models/carto/api_key.rb +++ b/app/models/carto/api_key.rb @@ -1,24 +1,10 @@ require 'securerandom' +require './lib/api_key_grants_validator' require_dependency 'carto/errors' require_dependency 'carto/helpers/auth_token_generator' require_dependency 'carto/oauth_provider/scopes/scopes' require_dependency 'carto/api_key_permissions' -class ApiKeyGrantsValidator < ActiveModel::EachValidator - def validate_each(record, attribute, value) - return record.errors[attribute] = ['grants has to be an array'] unless value&.is_a?(Array) - - record.errors[attribute] << 'only one apis section is allowed' unless value.count { |v| v[:type] == 'apis' } == 1 - - max_one_sections = ['database', 'dataservices', 'user', 'data-observatory'] - max_one_sections.each do |section| - if value.count { |v| v[:type] == section } > 1 - record.errors[attribute] << "only one #{section} section is allowed" - end - end - end -end - module Carto class ApiKey < ActiveRecord::Base diff --git a/lib/api_key_grants_validator.rb b/lib/api_key_grants_validator.rb new file mode 100644 index 0000000000..34620164a5 --- /dev/null +++ b/lib/api_key_grants_validator.rb @@ -0,0 +1,16 @@ +class ApiKeyGrantsValidator < ActiveModel::EachValidator + + def validate_each(record, attribute, value) + return record.errors[attribute] = ['grants has to be an array'] unless value.is_a?(Array) + + record.errors[attribute] << 'only one apis section is allowed' unless value.count { |v| v[:type] == 'apis' } == 1 + + max_one_sections = ['database', 'dataservices', 'user', 'data-observatory'] + max_one_sections.each do |section| + if value.count { |v| v[:type] == section } > 1 + record.errors[attribute] << "only one #{section} section is allowed" + end + end + end + +end diff --git a/lib/tasks/central_updates_subscriber.rake b/lib/tasks/central_updates_subscriber.rake index 83afaf8a7c..4da8204456 100644 --- a/lib/tasks/central_updates_subscriber.rake +++ b/lib/tasks/central_updates_subscriber.rake @@ -8,6 +8,10 @@ end namespace :message_broker do desc 'Consume messages from subscription "central_cartodb_commands"' task cartodb_subscribers: [:environment] do |_task, _args| + # Eager load Ruby classes, as Rake does not do it by default + # https://github.com/rails/rails/issues/28358 + Rails.application.eager_load! + $stdout.sync = true logger = Carto::Common::Logger.new($stdout) pid_file = ENV['PIDFILE'] || Rails.root.join('tmp/pids/cartodb_subscribers.pid')