У меня есть система перевода на базе базы данных для моего приложения Rails, которое отлично работает, за исключением того факта, что он, очевидно, отправляет много запросов в базу данных. Я могу использовать кеш только для определенного количества запросов, но подходящим вариантом для меня является экспорт таблицы перевода в YAML-файл, который может быть прочитан системой.Внешний локальный путь I18n (AWS)
Проблема у меня в том, что мое приложение находится на Heroku, и вы не можете писать в эту файловую систему, я должен использовать AWS (используя Carrierwave) для хранения локальных файлов. Я могу писать в AWS, но я не могу заставить приложение Rails читать локальные файлы из своего AWS-хранилища.
Я пробовал установку ниже (это просто пробная версия и ошибка), но она не работает.
Application.rb
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.load_path += Dir["https://s3-eu-west-1.amazonaws.com/myapp/locales/", '*.{rb,yml}'.to_s]
config.i18n.available_locales = [:en, :se]
Edit: Мой текущий (утомительно) рабочий процесс, чтобы создать все переводы в базе данных (с использованием базы данных переводов является обязательным для Absolut меня кстати). Затем я экспортирую таблицу в yaml в мое хранилище AWS. Оттуда я загружаю файлы локали в свое локальное приложение и в папку locale. Я загружаю все это обратно Heroku снова. Все потому, что я не могу писать в файловую систему Heroku.
Как настроить мое приложение так, чтобы локальные файлы (например, https://s3-eu-west-1.amazonaws.com/myapp/locales/en.yml) считывались из этого внешнего источника? Возможно ли это? Если нет, есть ли обходной путь?
Почему вы не развертываете файлы локали как часть приложения и не ссылаетесь на них из эфемерной файловой системы? –
Кажется, мой ответ на вас исчез. В принципе, я уже делаю то, что вы предлагаете (как в моем текстовом редакторе), но я часто создаю новые элементы, которые нуждаются в новых переводах, и мне нужно сделать это в живой версии. Это означает, что мне нужно делать всю цепочку DB-> Yaml-> AWS-> local-> Heroku каждый раз. – Christoffer