aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-10 23:20:12 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-09-10 23:20:12 -0700
commitdb17046bc1648a7b9e346f1d106801d09c0a1ead (patch)
tree2be6b6a5523435ef43a87d79dd9a172ef613a8ea
parentb2063f2a7aef211bed5d2014ec655b272739287f (diff)
parentab7ae689e9727781ef39b01a836a746ac75352fc (diff)
downloadrails-db17046bc1648a7b9e346f1d106801d09c0a1ead.tar.gz
rails-db17046bc1648a7b9e346f1d106801d09c0a1ead.tar.bz2
rails-db17046bc1648a7b9e346f1d106801d09c0a1ead.zip
Merge pull request #7594 from guilleiguaran/rb-template-handler
Add .rb template handler
-rw-r--r--actionpack/CHANGELOG.md2
-rw-r--r--actionpack/lib/action_view/template/handlers.rb1
-rw-r--r--actionpack/test/fixtures/ruby_template.rb3
-rw-r--r--actionpack/test/template/render_test.rb8
4 files changed, 14 insertions, 0 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index 8c7089cf57..36e8479441 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -1,5 +1,7 @@
## Rails 4.0.0 (unreleased) ##
+* Add .rb template handler, this handler simply allows arbitrary Ruby code as a template. *Guillermo Iguaran*
+
* Add `separator` option for `ActionView::Helpers::TextHelper#excerpt`:
excerpt('This is a very beautiful morning', 'very', :separator => ' ', :radius => 1)
diff --git a/actionpack/lib/action_view/template/handlers.rb b/actionpack/lib/action_view/template/handlers.rb
index 41b14373a3..52e032bbd8 100644
--- a/actionpack/lib/action_view/template/handlers.rb
+++ b/actionpack/lib/action_view/template/handlers.rb
@@ -10,6 +10,7 @@ module ActionView #:nodoc:
base.register_default_template_handler :erb, ERB.new
base.register_template_handler :builder, Builder.new
base.register_template_handler :raw, Raw.new
+ base.register_template_handler :rb, :source.to_proc
end
@@template_handlers = {}
diff --git a/actionpack/test/fixtures/ruby_template.rb b/actionpack/test/fixtures/ruby_template.rb
new file mode 100644
index 0000000000..d99833a24d
--- /dev/null
+++ b/actionpack/test/fixtures/ruby_template.rb
@@ -0,0 +1,3 @@
+body = ""
+body << ["Hello", "from", "Ruby", "code"].join(" ")
+body
diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb
index b26354e7cc..6279abaae5 100644
--- a/actionpack/test/template/render_test.rb
+++ b/actionpack/test/template/render_test.rb
@@ -97,6 +97,14 @@ module RenderTestCases
assert_equal %q;Here are some characters: !@#$%^&*()-="'}{`; + "\n", @view.render(:template => "plain_text_with_characters")
end
+ def test_render_rb_template_with_handlers
+ assert_equal "Hello from Ruby code", @view.render(:template => "ruby_template")
+ end
+
+ def test_render_rb_template_inline
+ assert_equal '4', @view.render(:inline => "(2**2).to_s", :type => :rb)
+ end
+
def test_render_file_with_localization_on_context_level
old_locale, @view.locale = @view.locale, :da
assert_equal "Hey verden", @view.render(:file => "test/hello_world")