From ec73710c79c5e1587b489b2ce05cc34138acf071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 7 Apr 2010 02:24:29 +0200 Subject: Alleviate the pain in working with utf8 templates by setting a default encoding. --- railties/lib/rails/application/configuration.rb | 22 +++++++++++++++------- .../rails/app/templates/config/application.rb | 3 +++ railties/test/application/configuration_test.rb | 12 ++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index d3e4742e8a..f9f47ef679 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -6,21 +6,29 @@ module Rails include ::Rails::Configuration::Deprecated attr_accessor :allow_concurrency, :cache_classes, :cache_store, - :secret_token, :consider_all_requests_local, :dependency_loading, + :encoding, :consider_all_requests_local, :dependency_loading, :filter_parameters, :log_level, :logger, :metals, :plugins, :preload_frameworks, :reload_engines, :reload_plugins, - :serve_static_assets, :time_zone, :whiny_nils + :secret_token, :serve_static_assets, :time_zone, :whiny_nils def initialize(*) super - @allow_concurrency = false - @filter_parameters = [] - @dependency_loading = true + @allow_concurrency = false + @consider_all_requests_local = false + @encoding = "utf-8" + @filter_parameters = [] + @dependency_loading = true @serve_static_assets = true - @time_zone = "UTC" - @consider_all_requests_local = true @session_store = :cookie_store @session_options = {} + @time_zone = "UTC" + end + + def encoding=(value) + @encoding = value + if defined?(Encoding) && Encoding.respond_to?(:default_external=) + Encoding.default_external = value + end end def middleware diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index bd4fedcdec..377e607d2b 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -46,6 +46,9 @@ module <%= app_const_base %> # g.test_framework :test_unit, :fixture => true # end + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters << :password end diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 90f2e2b370..97d5f64708 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -172,6 +172,18 @@ module ApplicationTests assert $prepared end + test "config.encoding sets the default encoding" do + add_to_config <<-RUBY + config.encoding = "utf-8" + RUBY + + require "#{app_path}/config/application" + + unless RUBY_VERSION < '1.9' + assert_equal Encoding.find("utf-8"), Encoding.default_external + end + end + def make_basic_app require "rails" require "action_controller/railtie" -- cgit v1.2.3