```shell
❯ bundle exec rubocop -A
Inspecting 1856 files
Offenses:
app/controllers/admin/settings/mandatory_settings_controller.rb:17:57: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
settings_model.public_send("#{key}=", value.reject(&:blank?)) if value.present?
^^^^^^^^^^^^^^^^
app/controllers/users_controller.rb:66:58: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
Honeycomb.add_field("error", @user.errors.messages.reject { |_, v| v.empty? })
^^^^^^^^^^^^^^^^^^^^^^^^^^
app/controllers/users_controller.rb:280:58: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
Honeycomb.add_field("error", @user.errors.messages.reject { |_, v| v.empty? })
^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/settings/base.rb:111:54: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
value.split(separator || SEPARATOR_REGEXP).reject(&:empty?).map(&:strip)
^^^^^^^^^^^^^^^^
app/services/articles/feeds/weighted_query_strategy.rb:269:121: C: Layout/LineLength: Line is too long. [126/120] (https://rubystyle.guide#max-line-length)
def initialize(user: nil, number_of_articles: 50, page: 1, tag: nil, strategy: AbExperiment::ORIGINAL_VARIANT, **config)
^^^^^^
app/services/images/optimizer.rb:27:50: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
options = DEFAULT_CL_OPTIONS.merge(kwargs).reject { |_, v| v.blank? }
^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/images/optimizer.rb:46:68: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
options = DEFAULT_IMGPROXY_OPTIONS.merge(translated_options).reject { |_, v| v.blank? }
^^^^^^^^^^^^^^^^^^^^^^^^^^
app/services/settings/upsert.rb:30:55: C: [Corrected] Rails/CompactBlank: Use compact_blank instead.
settings_class.public_send("#{key}=", value.reject(&:blank?))
^^^^^^^^^^^^^^^^
1856 files inspected, 8 offenses detected, 7 offenses corrected
```
After this commit:
```shell
❯ bundle exec rubocop
Inspecting 1856 files
1856 files inspected, no offenses detected
```
1856 files inspected, no offenses detected
44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
module Settings
|
|
# This service ensures that settings upserts to the database happen in a
|
|
# standardized way. Instead of subclassing this service I recommend wrapping
|
|
# it, see e.g. Settings::General::Upsert.
|
|
class Upsert
|
|
attr_reader :errors, :settings_class
|
|
|
|
def self.call(settings, settings_class)
|
|
new(settings, settings_class).call
|
|
end
|
|
|
|
def initialize(settings, settings_class)
|
|
@settings = settings
|
|
@settings_class = settings_class
|
|
@errors = []
|
|
end
|
|
|
|
def call
|
|
upsert_settings
|
|
self
|
|
end
|
|
|
|
def success?
|
|
@errors.none?
|
|
end
|
|
|
|
def upsert_settings
|
|
@settings.each do |key, value|
|
|
if value.is_a?(Array) && value.any?
|
|
settings_class.public_send("#{key}=", value.compact_blank)
|
|
elsif value.respond_to?(:to_h) && value.present?
|
|
settings_class.public_send("#{key}=", value.to_h)
|
|
elsif value.present?
|
|
settings_class.public_send("#{key}=", value.strip)
|
|
elsif value.blank?
|
|
settings_class.public_send("#{key}=", nil)
|
|
end
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
@errors << e.message
|
|
next
|
|
end
|
|
end
|
|
end
|
|
end
|