aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-04-07 02:24:29 +0200
committerJosé Valim <jose.valim@gmail.com>2010-04-07 02:25:36 +0200
commitec73710c79c5e1587b489b2ce05cc34138acf071 (patch)
tree392de31a689ee63a30be491cf1f006ae91b4bd0b /railties
parent48634bf59a0ed89cddd4a539c08866c9e025c5e3 (diff)
downloadrails-ec73710c79c5e1587b489b2ce05cc34138acf071.tar.gz
rails-ec73710c79c5e1587b489b2ce05cc34138acf071.tar.bz2
rails-ec73710c79c5e1587b489b2ce05cc34138acf071.zip
Alleviate the pain in working with utf8 templates by setting a default encoding.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/application/configuration.rb22
-rw-r--r--railties/lib/rails/generators/rails/app/templates/config/application.rb3
-rw-r--r--railties/test/application/configuration_test.rb12
3 files changed, 30 insertions, 7 deletions
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"