Я пытаюсь разделить метод между двумя службами ruby, у этих служб много общего и они находятся внутри одного модуля.
TranslatorManager
- это модуль, который включает службы: CacheEraser
и Translator
.
Общий метод - key_cache
, и мне нужно вызывать его из CacheEraser
и Translator
сервисов, только для них он связан только с TranslatorManager, поэтому я полагаю, что этот код должен быть в файле модуля translator_anager.rb
Каждый сервис имеет свой файл, и все эти файлы находятся в папке app/services/site/translator_manager/
Для меня это правильная организация файлов, не так ли?
Как я могу позвонить key_cache
из call
сервисного метода? это не работает
- Я не могу включить Site :: TranslatorManager из вложенного класса
- Нужно
key_cache
, чтобы быть методом класса? как его можно расширить , учитывая, что это разные файлы ? Я пробовал ответить и не работал.
cache_eraser.rb
module Site
module TranslatorManager
class CacheEraser < ApplicationService
def initialize(company_id, text, head_locale, locale)
@company_id, @text, @head_locale, @locale = company_id, text, head_locale, locale
end
def call
# ---> Don't work <----
Rails.cache.delete key_cache(@company_id, @text, @head_locale, @locale)
end
end
end
end
translator_manager.rb
module Site
module TranslatorManager
def key_cache(company_id, text, head_locale, locale)
# return a string
end
def translatable_key?(key)
# return true or false
end
end
end