Skip to content

Commit

Permalink
Add .rb template handler
Browse files Browse the repository at this point in the history
This handler simply allows arbitrary Ruby code as a template
  • Loading branch information
guilleiguaran committed Sep 11, 2012
1 parent 5d264f2 commit ab7ae68
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 0 deletions.
2 changes: 2 additions & 0 deletions actionpack/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
1 change: 1 addition & 0 deletions actionpack/lib/action_view/template/handlers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ def self.extended(base)
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

This comment has been minimized.

Copy link
@fxn

fxn Sep 24, 2012

Member

:source.to_proc 🤘

end

@@template_handlers = {}
Expand Down
3 changes: 3 additions & 0 deletions actionpack/test/fixtures/ruby_template.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
body = ""
body << ["Hello", "from", "Ruby", "code"].join(" ")
body
8 changes: 8 additions & 0 deletions actionpack/test/template/render_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ def test_render_raw_template_with_quotes
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")
Expand Down

5 comments on commit ab7ae68

@josh
Copy link
Contributor

@josh josh commented on ab7ae68 Sep 14, 2012

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is pretty annoying change.

If you have any .rb files under a view path, AP is going to try to precompile them.

Just put a module under app/views echo "module Foo; end" > app/views/foo.rb and your app will just crash will an error message saying "module definition in method body".

My personal usage is mustache view classes.

@guilleiguaran
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@josh I added this since @dhh asked for it after of see it in Railscasts, I will talk with him on CF to check if we can found any solution or if we should revert this

@josh
Copy link
Contributor

@josh josh commented on ab7ae68 Sep 14, 2012

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that jbuilder (and similar extensions) use its own extension, not .rb.

@dhh
Copy link
Member

@dhh dhh commented on ab7ae68 Sep 17, 2012

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll just go with .ruby for now, then.

@guilleiguaran
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in de1060f

Please sign in to comment.