From 06c3e072beef20b36aad2b272980017d99f25f89 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 3 Mar 2025 14:45:13 +0700 Subject: [PATCH] Update dependencies and improve localization messages Updated several dependencies, including "servactory" to version 2.12 and "rubocop" to version 1.73.1, ensuring compatibility and stability. Improved localization message structure, adding more detailed validation error messages for attributes and internal types across supported languages. --- Gemfile.lock | 29 ++++++++++++----------- config/locales/en.yml | 54 ++++++++++++++++++++++++++++--------------- config/locales/ru.yml | 54 ++++++++++++++++++++++++++++--------------- datory.gemspec | 4 ++-- 4 files changed, 89 insertions(+), 52 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 758e5de..5b30539 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ PATH datory (2.2.1) activesupport (>= 5.1, < 8.1) i18n (~> 1.14) - servactory (>= 2.9.0) + servactory (>= 2.12) terminal-table (>= 3.0) zeitwerk (~> 2.6) @@ -68,7 +68,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.2) - rubocop (1.72.2) + rubocop (1.73.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -79,7 +79,7 @@ GEM rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.38.0) + rubocop-ast (1.38.1) parser (>= 3.3.1.0) rubocop-factory_bot (2.26.1) rubocop (~> 1.61) @@ -87,7 +87,7 @@ GEM lint_roller (~> 1.1) rubocop (>= 1.72.1, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rails (2.30.1) + rubocop-rails (2.30.3) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) @@ -104,14 +104,15 @@ GEM rubocop-rspec (~> 3, >= 3.0.1) ruby-progressbar (1.13.0) securerandom (0.4.1) - servactory (2.11.0) + servactory (2.12.0) activesupport (>= 5.1, < 8.1) - base64 (~> 0.2) - bigdecimal (~> 3.0) - i18n (~> 1.14) - mutex_m (~> 0.2) - zeitwerk (~> 2.6) - servactory-rubocop (0.6.1) + base64 (>= 0.2) + bigdecimal (>= 3.1) + i18n (>= 1.14) + mutex_m (>= 0.3) + zeitwerk (>= 2.6) + servactory-rubocop (0.7.0) + rubocop (>= 1.73) rubocop-factory_bot (>= 2.26) rubocop-performance (>= 1.24) rubocop-rails (>= 2.30) @@ -126,7 +127,7 @@ GEM unicode-display_width (3.1.4) unicode-emoji (~> 4.0, >= 4.0.4) unicode-emoji (4.0.4) - uri (1.0.2) + uri (1.0.3) zeitwerk (2.7.2) PLATFORMS @@ -148,7 +149,7 @@ DEPENDENCIES rake (~> 13.0) rbs (>= 3.1.3) rspec (~> 3.12) - servactory-rubocop (>= 0.5) + servactory-rubocop (>= 0.7) BUNDLED WITH - 2.6.4 + 2.6.5 diff --git a/config/locales/en.yml b/config/locales/en.yml index cf85b5c..652c7dd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -9,11 +9,9 @@ en: cannot_be_overwritten: "[%{service_class_name}] The following methods cannot be overwritten: %{list_of_methods}" inputs: undefined: - getter: "[%{service_class_name}] Undefined attribute `%{input_name}`" - setter: "[%{service_class_name}] Undefined attribute `%{input_name}`" + for_fetch: "[%{service_class_name}] Undefined attribute `%{input_name}`" + for_assign: "[%{service_class_name}] Undefined attribute `%{input_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Wrong value in `%{input_name}`, must be one of `%{input_inclusion}`" must: default_error: "[%{service_class_name}] Attribute `%{input_name}` must \"%{code}\"" syntax_error: "[%{service_class_name}] Syntax error inside `%{code}` of `%{input_name}` attribute: %{exception_message}" @@ -26,18 +24,26 @@ en: default: "[%{service_class_name}] Attribute `%{input_name}` does not match `%{format_name}` format" wrong_pattern: "[%{service_class_name}] Attribute `%{input_name}` does not match `%{format_name}` format" unknown: "[%{service_class_name}] Unknown `%{format_name}` format specified for attribute `%{input_name}`" + inclusion: + default: "[%{service_class_name}] Wrong value in `%{input_name}`, must be one of `%{input_inclusion}`, got `%{value}`" min: default: "[%{service_class_name}] Attribute `%{input_name}` received value `%{value}`, which is less than `%{option_value}`" max: default: "[%{service_class_name}] Attribute `%{input_name}` received value `%{value}`, which is greater than `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Attribute `%{input_name}` has the value `%{value}`, which is not a multiple of `%{option_value}`" + blank: "[%{service_class_name}] Attribute `%{input_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + divided_by_0: "[%{service_class_name}] Attribute `%{input_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Wrong type of attribute `%{input_name}`, expected `%{expected_type}`, got `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Wrong type in attribute hash `%{input_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Wrong value in attribute hash `%{input_name}`, expected value of type `%{expected_type}` for `%{key_name}`, got `%{given_type}`" required: default_error: default: "[%{service_class_name}] Required attribute `%{input_name}` is missing" type: default_error: default: "[%{service_class_name}] Wrong type of attribute `%{input_name}`, expected `%{expected_type}`, got `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Wrong type in attribute hash `%{input_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" tools: find_unnecessary: error: "[%{service_class_name}] Unexpected attributes: `%{unnecessary_attributes}`" @@ -45,11 +51,9 @@ en: error: "[%{service_class_name}] Conflict in `%{input_name}` attribute options: `%{conflict_code}`" internals: undefined: - getter: "[%{service_class_name}] Undefined internal attribute `%{internal_name}`" - setter: "[%{service_class_name}] Undefined internal attribute `%{internal_name}`" + for_fetch: "[%{service_class_name}] Undefined internal attribute `%{internal_name}`" + for_assign: "[%{service_class_name}] Undefined internal attribute `%{internal_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Wrong value in `%{internal_name}`, must be one of `%{internal_inclusion}`" must: default_error: "[%{service_class_name}] Internal attribute `%{internal_name}` must \"%{code}\"" syntax_error: "[%{service_class_name}] Syntax error inside `%{code}` of `%{internal_name}` internal attribute: %{exception_message}" @@ -62,22 +66,28 @@ en: default: "[%{service_class_name}] Internal attribute `%{internal_name}` does not match `%{format_name}` format" wrong_pattern: "[%{service_class_name}] Internal attribute `%{internal_name}` does not match `%{format_name}` format" unknown: "[%{service_class_name}] Unknown `%{format_name}` format specified for internal attribute `%{internal_name}`" + inclusion: + default: "[%{service_class_name}] Wrong value in `%{internal_name}`, must be one of `%{internal_inclusion}`, got `%{value}`" min: default: "[%{service_class_name}] Internal attribute `%{internal_name}` received value `%{value}`, which is less than `%{option_value}`" max: default: "[%{service_class_name}] Internal attribute `%{internal_name}` received value `%{value}`, which is greater than `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Internal attribute `%{internal_name}` has the value `%{value}`, which is not a multiple of `%{option_value}`" + blank: "[%{service_class_name}] Internal attribute `%{internal_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + divided_by_0: "[%{service_class_name}] Internal attribute `%{internal_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Wrong type of internal attribute `%{internal_name}`, expected `%{expected_type}`, got `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Wrong type in internal attribute hash `%{internal_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Wrong value in internal attribute hash `%{internal_name}`, expected value of type `%{expected_type}` for `%{key_name}`, got `%{given_type}`" type: default_error: default: "[%{service_class_name}] Wrong type of internal attribute `%{internal_name}`, expected `%{expected_type}`, got `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Wrong type in internal attribute hash `%{internal_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" outputs: undefined: - getter: "[%{service_class_name}] Undefined attribute `%{output_name}`" - setter: "[%{service_class_name}] Undefined attribute `%{output_name}`" + for_fetch: "[%{service_class_name}] Undefined attribute `%{output_name}`" + for_assign: "[%{service_class_name}] Undefined attribute `%{output_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Wrong value in `%{output_name}`, must be one of `%{output_inclusion}`" must: default_error: "[%{service_class_name}] Attribute `%{output_name}` must \"%{code}\"" syntax_error: "[%{service_class_name}] Syntax error inside `%{code}` of `%{output_name}` attribute: %{exception_message}" @@ -90,12 +100,20 @@ en: default: "[%{service_class_name}] Attribute `%{output_name}` does not match `%{format_name}` format" wrong_pattern: "[%{service_class_name}] Attribute `%{output_name}` does not match `%{format_name}` format" unknown: "[%{service_class_name}] Unknown `%{format_name}` format specified for attribute `%{output_name}`" + inclusion: + default: "[%{service_class_name}] Wrong value in `%{output_name}`, must be one of `%{output_inclusion}`, got `%{value}`" min: default: "[%{service_class_name}] Attribute `%{output_name}` received value `%{value}`, which is less than `%{option_value}`" max: default: "[%{service_class_name}] Attribute `%{output_name}` received value `%{value}`, which is greater than `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Attribute `%{output_name}` has the value `%{value}`, which is not a multiple of `%{option_value}`" + blank: "[%{service_class_name}] Attribute `%{output_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + divided_by_0: "[%{service_class_name}] Attribute `%{output_name}` has an invalid value `%{option_value}` in option `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Wrong type of attribute `%{output_name}`, expected `%{expected_type}`, got `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Wrong type in attribute hash `%{output_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Wrong value in attribute hash `%{output_name}`, expected value of type `%{expected_type}` for `%{key_name}`, got `%{given_type}`" type: default_error: default: "[%{service_class_name}] Wrong type of attribute `%{output_name}`, expected `%{expected_type}`, got `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Wrong type in attribute hash `%{output_name}`, expected `%{expected_type}` for `%{key_name}`, got `%{given_type}`" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 8a2c87c..92d1781 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -9,11 +9,9 @@ ru: cannot_be_overwritten: "[%{service_class_name}] Нельзя перезаписать следующие методы: %{list_of_methods}" inputs: undefined: - getter: "[%{service_class_name}] Неизвестный атрибут `%{input_name}`" - setter: "[%{service_class_name}] Неизвестный атрибут `%{input_name}`" + for_fetch: "[%{service_class_name}] Неизвестный атрибут `%{input_name}`" + for_assign: "[%{service_class_name}] Неизвестный атрибут `%{input_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Неправильное значение в `%{input_name}`, должно быть одним из `%{input_inclusion}`" must: default_error: "[%{service_class_name}] Атрибут `%{input_name}` должен \"%{code}\"" syntax_error: "[%{service_class_name}] Синтаксическая ошибка внутри `%{code}` атрибута `%{input_name}`: %{exception_message}" @@ -26,18 +24,26 @@ ru: default: "[%{service_class_name}] Атрибут `%{input_name}` не соответствует формату `%{format_name}`" wrong_pattern: "[%{service_class_name}] Атрибут `%{input_name}` не соответствует формату `%{format_name}`" unknown: "[%{service_class_name}] Указан неизвестный формат `%{format_name}` у атрибута `%{input_name}`" + inclusion: + default: "[%{service_class_name}] Неправильное значение в `%{input_name}`, должно быть одним из `%{input_inclusion}`, получено `%{value}`" min: default: "[%{service_class_name}] Атрибут `%{input_name}` получил значение `%{value}`, которое меньше `%{option_value}`" max: default: "[%{service_class_name}] Атрибут `%{input_name}` получил значение `%{value}`, которое больше `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Атрибут `%{input_name}` имеет значение `%{value}`, которое не кратно `%{option_value}`" + blank: "[%{service_class_name}] Атрибут `%{input_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + divided_by_0: "[%{service_class_name}] Атрибут `%{input_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Неправильный тип атрибута `%{input_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше атрибута `%{input_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Неправильное значение в хеше атрибута `%{input_name}`, для `%{key_name}` ожидалось значение с типом `%{expected_type}`, получено `%{given_type}`" required: default_error: default: "[%{service_class_name}] Обязательный атрибут `%{input_name}` отсутствует" type: default_error: default: "[%{service_class_name}] Неправильный тип атрибута `%{input_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше атрибута `%{input_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" tools: find_unnecessary: error: "[%{service_class_name}] Неожиданные атрибуты: `%{unnecessary_attributes}`" @@ -45,11 +51,9 @@ ru: error: "[%{service_class_name}] Конфликт в опциях атрибута `%{input_name}`: `%{conflict_code}`" internals: undefined: - getter: "[%{service_class_name}] Неизвестный внутренний атрибут `%{internal_name}`" - setter: "[%{service_class_name}] Неизвестный внутренний атрибут `%{internal_name}`" + for_fetch: "[%{service_class_name}] Неизвестный внутренний атрибут `%{internal_name}`" + for_assign: "[%{service_class_name}] Неизвестный внутренний атрибут `%{internal_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Неправильное значение в `%{internal_name}`, должно быть одним из `%{internal_inclusion}`" must: default_error: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` должен \"%{code}\"" syntax_error: "[%{service_class_name}] Синтаксическая ошибка внутри `%{code}` внутреннего атрибута `%{internal_name}`: %{exception_message}" @@ -62,22 +66,28 @@ ru: default: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` не соответствует формату `%{format_name}`" wrong_pattern: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` не соответствует формату `%{format_name}`" unknown: "[%{service_class_name}] Указан неизвестный формат `%{format_name}` у внутреннего атрибута `%{internal_name}`" + inclusion: + default: "[%{service_class_name}] Неправильное значение в `%{internal_name}`, должно быть одним из `%{internal_inclusion}`, получено `%{value}`" min: default: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` получил значение `%{value}`, которое меньше `%{option_value}`" max: default: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` получил значение `%{value}`, которое больше `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` имеет значение `%{value}`, которое не кратно `%{option_value}`" + blank: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + divided_by_0: "[%{service_class_name}] Внутренний атрибут `%{internal_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Неправильный тип внутреннего атрибута `%{internal_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше внутреннего атрибута `%{internal_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Неправильное значение в хеше внутреннего атрибута `%{internal_name}`, для `%{key_name}` ожидалось значение с типом `%{expected_type}`, получено `%{given_type}`" type: default_error: default: "[%{service_class_name}] Неправильный тип внутреннего атрибута `%{internal_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше внутреннего атрибута `%{internal_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" outputs: undefined: - getter: "[%{service_class_name}] Неизвестный атрибут `%{output_name}`" - setter: "[%{service_class_name}] Неизвестный атрибут `%{output_name}`" + for_fetch: "[%{service_class_name}] Неизвестный атрибут `%{output_name}`" + for_assign: "[%{service_class_name}] Неизвестный атрибут `%{output_name}`" validations: - inclusion: - default_error: "[%{service_class_name}] Неправильное значение в `%{output_name}`, должно быть одним из `%{output_inclusion}`" must: default_error: "[%{service_class_name}] Атрибут `%{output_name}` должен \"%{code}\"" syntax_error: "[%{service_class_name}] Синтаксическая ошибка внутри `%{code}` атрибута `%{output_name}`: %{exception_message}" @@ -90,12 +100,20 @@ ru: default: "[%{service_class_name}] Атрибут `%{output_name}` не соответствует формату `%{format_name}`" wrong_pattern: "[%{service_class_name}] Атрибут `%{output_name}` не соответствует формату `%{format_name}`" unknown: "[%{service_class_name}] Указан неизвестный формат `%{format_name}` у атрибута `%{output_name}`" + inclusion: + default: "[%{service_class_name}] Неправильное значение в `%{output_name}`, должно быть одним из `%{output_inclusion}`, получено `%{value}`" min: default: "[%{service_class_name}] Атрибут `%{output_name}` получил значение `%{value}`, которое меньше `%{option_value}`" max: default: "[%{service_class_name}] Атрибут `%{output_name}` получил значение `%{value}`, которое больше `%{option_value}`" + multiple_of: + default: "[%{service_class_name}] Атрибут `%{output_name}` имеет значение `%{value}`, которое не кратно `%{option_value}`" + blank: "[%{service_class_name}] Атрибут `%{output_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + divided_by_0: "[%{service_class_name}] Атрибут `%{output_name}` имеет недопустимое значение `%{option_value}` в опции `%{option_name}`" + schema: + wrong_type: "[%{service_class_name}] Неправильный тип атрибута `%{output_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше атрибута `%{output_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" + wrong_element_value: "[%{service_class_name}] Неправильное значение в хеше атрибута `%{output_name}`, для `%{key_name}` ожидалось значение с типом `%{expected_type}`, получено `%{given_type}`" type: default_error: default: "[%{service_class_name}] Неправильный тип атрибута `%{output_name}`, ожидалось `%{expected_type}`, получено `%{given_type}`" - for_hash: - wrong_element_type: "[%{service_class_name}] Неправильный тип в хеше атрибута `%{output_name}`, для `%{key_name}` ожидалось `%{expected_type}`, получено `%{given_type}`" diff --git a/datory.gemspec b/datory.gemspec index 5ac3b77..2c30afb 100644 --- a/datory.gemspec +++ b/datory.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |spec| spec.add_dependency "activesupport", ">= 5.1", "< 8.1" spec.add_dependency "i18n", "~> 1.14" - spec.add_dependency "servactory", ">= 2.9.0" + spec.add_dependency "servactory", ">= 2.12" spec.add_dependency "terminal-table", ">= 3.0" spec.add_dependency "zeitwerk", "~> 2.6" @@ -39,5 +39,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake", "~> 13.0" spec.add_development_dependency "rbs", ">= 3.1.3" spec.add_development_dependency "rspec", "~> 3.12" - spec.add_development_dependency "servactory-rubocop", ">= 0.5" + spec.add_development_dependency "servactory-rubocop", ">= 0.7" end