From 3569588bcefd3075ebd88608e1a396e3a7cfdf74 Mon Sep 17 00:00:00 2001 From: An Date: Tue, 8 Oct 2019 16:01:59 +0700 Subject: [PATCH 1/6] [#117] Revert to Ruby Slim image --- rails_docker/Dockerfile.tt | 2 -- 1 file changed, 2 deletions(-) diff --git a/rails_docker/Dockerfile.tt b/rails_docker/Dockerfile.tt index 967a7836..0a6b9bd2 100644 --- a/rails_docker/Dockerfile.tt +++ b/rails_docker/Dockerfile.tt @@ -85,13 +85,11 @@ RUN mkdir -p /usr/local/etc \ # Install Ruby gems RUN if [ "$BUILD_ENV" = "production" ]; then \ - gem install bundler && \ bundle install --jobs $BUNDLE_JOBS \ --path $BUNDLE_PATH \ --without development test \ --deployment ; \ else \ - gem install bundler && \ bundle install --jobs $BUNDLE_JOBS \ --path $BUNDLE_PATH ; \ fi From 801a4f8115eda25a89f81bc0a33b5ad3cbe7c523 Mon Sep 17 00:00:00 2001 From: An Date: Sun, 10 Nov 2019 21:11:39 +0700 Subject: [PATCH 2/6] Using around_action to swith locale --- shared/app/controllers/concerns/localization.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/shared/app/controllers/concerns/localization.rb b/shared/app/controllers/concerns/localization.rb index 45abb77d..e77e8389 100644 --- a/shared/app/controllers/concerns/localization.rb +++ b/shared/app/controllers/concerns/localization.rb @@ -2,12 +2,18 @@ module Localization extend ActiveSupport::Concern included do - before_action :set_locale + around_action :switch_locale protected - def set_locale - I18n.locale = params[:locale] || I18n.default_locale + def switch_locale(&action) + locale = extract_locale_from_param || I18n.default_locale + + I18n.with_locale(locale, &action) + end + + def extract_locale_from_param + I18n.available_locales.include?(params[:locale]&.to_sym) ? params[:locale].to_sym : nil end private From d4db80ac3fc02e2e038c60d9031e3bf9e82e8da6 Mon Sep 17 00:00:00 2001 From: An Date: Mon, 11 Nov 2019 08:53:28 +0700 Subject: [PATCH 3/6] Adding the I18n configuration --- rails_docker.rb | 15 ++++++++++++--- rails_docker/Dockerfile.tt | 3 +++ rails_docker/docker-compose.yml.tt | 3 +++ shared/config/application.yml.tt | 3 +++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/rails_docker.rb b/rails_docker.rb index 95cdd34c..56890af4 100644 --- a/rails_docker.rb +++ b/rails_docker.rb @@ -65,7 +65,7 @@ def source_paths <<~EOT import 'translations/translations'; - + import 'initializers/'; import 'screens/'; EOT @@ -175,14 +175,14 @@ def source_paths insert_into_file 'config/webpack/environment.js', after: "const { environment } = require('@rails/webpacker')\n" do <<~EOT const webpack = require('webpack'); - + const plugins = [ new webpack.ProvidePlugin({ // Translations I18n: 'i18n-js', }) ] - + environment.config.set('plugins', plugins); EOT end @@ -195,4 +195,13 @@ def source_paths EOT end + + environment do + <<~EOT + config.i18n.available_locales = ENV.fetch('AVAILABLE_LOCALES').split(', ') + config.i18n.default_locale = ENV.fetch('DEFAULT_LOCALE') + config.i18n.fallbacks = ENV.fetch('FALLBACK_LOCALES').split(', ') + + EOT + end end diff --git a/rails_docker/Dockerfile.tt b/rails_docker/Dockerfile.tt index 0a6b9bd2..f3bc734d 100644 --- a/rails_docker/Dockerfile.tt +++ b/rails_docker/Dockerfile.tt @@ -4,6 +4,9 @@ ARG RUBY_ENV=development ARG NODE_ENV=development ARG BUILD_ENV=development ARG ASSET_HOST=http://localhost +ARG AVAILABLE_LOCALES +ARG DEFAULT_LOCALE +ARG FALLBACK_LOCALES # Define all the envs here ENV RACK_ENV=$RUBY_ENV \ diff --git a/rails_docker/docker-compose.yml.tt b/rails_docker/docker-compose.yml.tt index d76fa54a..157c79a1 100644 --- a/rails_docker/docker-compose.yml.tt +++ b/rails_docker/docker-compose.yml.tt @@ -25,6 +25,9 @@ services: - NODE_ENV=production - BUILD_ENV=production - ASSET_HOST= + - AVAILABLE_LOCALES + - DEFAULT_LOCALE + - FALLBACK_LOCALES image: ${DOCKER_IMAGE}:${BRANCH_TAG} container_name: <%= APP_NAME %>_web command: bin/start.sh diff --git a/shared/config/application.yml.tt b/shared/config/application.yml.tt index 685621fe..243c2b92 100644 --- a/shared/config/application.yml.tt +++ b/shared/config/application.yml.tt @@ -6,6 +6,9 @@ default: &default MAILER_DEFAULT_HOST: "localhost" MAILER_DEFAULT_PORT: "3000" MAILER_SENDER: "Test " + AVAILABLE_LOCALES: "en" + DEFAULT_LOCALE: "en" + FALLBACK_LOCALES: "en" development: <<: *default From c9c736c732ced63e3f24da2d2d98c3b232d8646b Mon Sep 17 00:00:00 2001 From: An Date: Mon, 11 Nov 2019 09:08:20 +0700 Subject: [PATCH 4/6] Remove the incorrect I18n fallback configuration --- rails_docker.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rails_docker.rb b/rails_docker.rb index 56890af4..69e07e0d 100644 --- a/rails_docker.rb +++ b/rails_docker.rb @@ -196,6 +196,11 @@ def source_paths EOT end + # I18n configuration + # Remove the incorrect fallback configuration (was generated by Rails) - https://github.com/ruby-i18n/i18n/releases/tag/v1.1.0 + gsub_file('config/environments/production.rb', 'config.i18n.fallbacks = true', '') + + # Adding the correct fallback configuration along with default locale and available locales environment do <<~EOT config.i18n.available_locales = ENV.fetch('AVAILABLE_LOCALES').split(', ') From 38095ae7266026fe9e9a5f1a0233f2d7ca70e8f9 Mon Sep 17 00:00:00 2001 From: An Date: Mon, 11 Nov 2019 20:15:29 +0700 Subject: [PATCH 5/6] Fix conflict --- rails_docker/Dockerfile.tt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rails_docker/Dockerfile.tt b/rails_docker/Dockerfile.tt index f3bc734d..49ae7ba5 100644 --- a/rails_docker/Dockerfile.tt +++ b/rails_docker/Dockerfile.tt @@ -88,11 +88,13 @@ RUN mkdir -p /usr/local/etc \ # Install Ruby gems RUN if [ "$BUILD_ENV" = "production" ]; then \ + gem install bundler && \ bundle install --jobs $BUNDLE_JOBS \ --path $BUNDLE_PATH \ --without development test \ --deployment ; \ else \ + gem install bundler && \ bundle install --jobs $BUNDLE_JOBS \ --path $BUNDLE_PATH ; \ fi From ce2e1197b9a4f21f1fdd47d258e27cf90fc58964 Mon Sep 17 00:00:00 2001 From: An Date: Mon, 10 Feb 2020 22:21:44 +0700 Subject: [PATCH 6/6] Using I18n.locale_available? --- shared/app/controllers/concerns/localization.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/app/controllers/concerns/localization.rb b/shared/app/controllers/concerns/localization.rb index e77e8389..586e10d6 100644 --- a/shared/app/controllers/concerns/localization.rb +++ b/shared/app/controllers/concerns/localization.rb @@ -13,7 +13,7 @@ def switch_locale(&action) end def extract_locale_from_param - I18n.available_locales.include?(params[:locale]&.to_sym) ? params[:locale].to_sym : nil + I18n.locale_available?(params[:locale]) ? params[:locale].to_sym : nil end private