aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-12-17 08:22:26 -0800
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2013-12-17 08:22:26 -0800
commitae196e85ee7169700afac2eecdc276bc06b10b8d (patch)
treeea504d00de22f81a34b84cd5852e5f1dd043cb7c /activesupport
parent5d77edf0cf1ed653ed3f7729d77eeb8de219d0b3 (diff)
parent7c858b03a9de3c600594ca3c88540b14d835dd91 (diff)
downloadrails-ae196e85ee7169700afac2eecdc276bc06b10b8d.tar.gz
rails-ae196e85ee7169700afac2eecdc276bc06b10b8d.tar.bz2
rails-ae196e85ee7169700afac2eecdc276bc06b10b8d.zip
Merge pull request #13341 from carlosantoniodasilva/ca-i18n
Default I18n.enforce_available_locales to true We will default this option to true from now on to ensure users properly handle their list of available locales whenever necessary. This option was added as a security measure and thus Rails will follow it defaulting to secure option. Also improve the handling of I18n config options in its railtie, taking the new enforce_available_locales option into account, by setting it as the last one in the process. This ensures no other configuration will trigger a deprecation warning due to that setting.
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/CHANGELOG.md18
-rw-r--r--activesupport/activesupport.gemspec2
-rw-r--r--activesupport/lib/active_support/i18n_railtie.rb14
-rw-r--r--activesupport/test/abstract_unit.rb3
4 files changed, 27 insertions, 10 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index 6a13db346d..c830ee61e6 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,3 +1,16 @@
+* Default the new `I18n.enforce_available_locales` config to `true`, meaning
+ `I18n` will make sure that all locales passed to it must be declared in the
+ `available_locales` list.
+
+ To disable it add the following configuration to your application:
+
+ config.i18n.enforce_available_locales = false
+
+ This also ensures I18n configuration is properly initialized taking the new
+ option into account, to avoid their deprecations while booting up the app.
+
+ *Carlos Antonio da Silva*, *Yves Senn*
+
* Introduce Module#concerning: a natural, low-ceremony way to separate
responsibilities within a class.
@@ -49,11 +62,6 @@
*Mario Visic*
-* Ensure `config.i18n.enforce_available_locales` is set before any other
- configuration option.
-
- *Yves Senn*
-
* Added `Date#all_week/month/quarter/year` for generating date ranges.
*Dmitriy Meremyanin*
diff --git a/activesupport/activesupport.gemspec b/activesupport/activesupport.gemspec
index 0427022dc6..f3625e8b79 100644
--- a/activesupport/activesupport.gemspec
+++ b/activesupport/activesupport.gemspec
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
s.rdoc_options.concat ['--encoding', 'UTF-8']
- s.add_dependency 'i18n', '~> 0.6', '>= 0.6.4'
+ s.add_dependency 'i18n', '~> 0.6', '>= 0.6.9'
s.add_dependency 'json', '~> 1.7', '>= 1.7.7'
s.add_dependency 'tzinfo', '~> 1.1'
s.add_dependency 'minitest', '~> 5.1'
diff --git a/activesupport/lib/active_support/i18n_railtie.rb b/activesupport/lib/active_support/i18n_railtie.rb
index dcdea70443..ac9bca44b6 100644
--- a/activesupport/lib/active_support/i18n_railtie.rb
+++ b/activesupport/lib/active_support/i18n_railtie.rb
@@ -8,6 +8,8 @@ module I18n
config.i18n.railties_load_path = []
config.i18n.load_path = []
config.i18n.fallbacks = ActiveSupport::OrderedOptions.new
+ # Enforce I18n to check the available locales when setting a locale.
+ config.i18n.enforce_available_locales = true
# Set the i18n configuration after initialization since a lot of
# configuration is still usually done in application initializers.
@@ -31,10 +33,11 @@ module I18n
fallbacks = app.config.i18n.delete(:fallbacks)
- if app.config.i18n.has_key?(:enforce_available_locales)
- # this option needs to be set before `default_locale=` to work properly.
- I18n.enforce_available_locales = app.config.i18n.delete(:enforce_available_locales)
- end
+ # Avoid issues with setting the default_locale by disabling available locales
+ # check while configuring.
+ enforce_available_locales = app.config.i18n.delete(:enforce_available_locales)
+ enforce_available_locales = I18n.enforce_available_locales unless I18n.enforce_available_locales.nil?
+ I18n.enforce_available_locales = false
app.config.i18n.each do |setting, value|
case setting
@@ -49,6 +52,9 @@ module I18n
init_fallbacks(fallbacks) if fallbacks && validate_fallbacks(fallbacks)
+ # Restore avalable locales check so it will take place from now on.
+ I18n.enforce_available_locales = enforce_available_locales
+
reloader = ActiveSupport::FileUpdateChecker.new(I18n.load_path.dup){ I18n.reload! }
app.reloaders << reloader
ActionDispatch::Reloader.to_prepare { reloader.execute_if_updated }
diff --git a/activesupport/test/abstract_unit.rb b/activesupport/test/abstract_unit.rb
index 4600855998..1dfa3833f0 100644
--- a/activesupport/test/abstract_unit.rb
+++ b/activesupport/test/abstract_unit.rb
@@ -24,6 +24,9 @@ Thread.abort_on_exception = true
# Show backtraces for deprecated behavior for quicker cleanup.
ActiveSupport::Deprecation.debug = true
+# Disable available locale checks to avoid warnings running the test suite.
+I18n.enforce_available_locales = false
+
# Skips the current run on Rubinius using Minitest::Assertions#skip
def rubinius_skip(message = '')
skip message if RUBY_ENGINE == 'rbx'