Skip to content

Commit

Permalink
dev-ruby/actionview: fix bug with url_helper and ruby 2.0
Browse files Browse the repository at this point in the history
Also backport the fix for actionview 4.2.x.

Package-Manager: portage-2.2.20.1
  • Loading branch information
graaff committed Oct 14, 2015
1 parent a0072d7 commit fe7fb5d
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
52 changes: 52 additions & 0 deletions dev-ruby/actionview/actionview-4.2.4-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

USE_RUBY="ruby19 ruby20 ruby21"

RUBY_FAKEGEM_TASK_DOC=""
RUBY_FAKEGEM_DOCDIR="doc"
RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.rdoc"

RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"

inherit ruby-fakegem versionator

DESCRIPTION="Simple, battle-tested conventions and helpers for building web pages"
HOMEPAGE="https://github.com/rails/rails/"
SRC_URI="https://github.com/rails/rails/archive/v${PV}.tar.gz -> rails-${PV}.tgz"

LICENSE="MIT"
SLOT="$(get_version_component_range 1-2)"
KEYWORDS="~amd64 ~arm ~ppc ~ppc64"
IUSE=""

RUBY_S="rails-${PV}/${PN}"

RUBY_PATCHES=( ${P}-url-helper.patch )

ruby_add_rdepend "
~dev-ruby/activesupport-${PV}
>=dev-ruby/builder-3.1:* =dev-ruby/builder-3*:*
>=dev-ruby/erubis-2.7.0
>=dev-ruby/rails-html-sanitizer-1.0.1:1
>=dev-ruby/rails-dom-testing-1.0.5:1
"

ruby_add_bdepend "
test? (
dev-ruby/mocha:0.14
~dev-ruby/actionpack-${PV}
~dev-ruby/activemodel-${PV}
)"

all_ruby_prepare() {
# Remove items from the common Gemfile that we don't need for this
# test run. This also requires handling some gemspecs.
sed -i -e "/\(system_timer\|sdoc\|w3c_validators\|pg\|jquery-rails\|'mysql'\|journey\|ruby-prof\|stackprof\|benchmark-ips\|kindlerb\|turbolinks\|coffee-rails\|debugger\|sprockets-rails\|redcarpet\|bcrypt\|uglifier\|minitest\|sprockets\|stackprof\)/ s:^:#:" \
-e '/:job/,/end/ s:^:#:' \
-e '/group :doc/,/^end/ s:^:#:' ../Gemfile || die
rm ../Gemfile.lock || die
}
43 changes: 43 additions & 0 deletions dev-ruby/actionview/files/actionview-4.2.4-url-helper.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
From 253ba56f5639ffb5ebe98d01c3515604c756a96a Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <[email protected]>
Date: Thu, 27 Aug 2015 21:40:11 +0900
Subject: [PATCH] Fix mail_to to work well with Ruby 2.0

Ruby 2.0's ERB::Util.url_encode crashes ActiveSupport::SafeBuffer.
Related to 0789e06
---
actionview/lib/action_view/helpers/url_helper.rb | 2 +-
actionview/test/template/url_helper_test.rb | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/actionview/lib/action_view/helpers/url_helper.rb b/actionview/lib/action_view/helpers/url_helper.rb
index b724b9c..7485fc0 100644
--- a/actionview/lib/action_view/helpers/url_helper.rb
+++ b/actionview/lib/action_view/helpers/url_helper.rb
@@ -463,7 +463,7 @@ def mail_to(email_address, name = nil, html_options = {}, &block)
}.compact
extras = extras.empty? ? '' : '?' + extras.join('&')

- encoded_email_address = ERB::Util.url_encode(email_address).gsub("%40", "@")
+ encoded_email_address = ERB::Util.url_encode(email_address.to_str).gsub("%40", "@")
html_options["href"] = "mailto:#{encoded_email_address}#{extras}"

content_tag(:a, name || email_address, html_options, &block)
diff --git a/actionview/test/template/url_helper_test.rb b/actionview/test/template/url_helper_test.rb
index 6ca937a..9e09490 100644
--- a/actionview/test/template/url_helper_test.rb
+++ b/actionview/test/template/url_helper_test.rb
@@ -515,6 +515,13 @@ def test_mail_with_options
)
end

+ def test_mail_to_with_html_safe_string
+ assert_dom_equal(
+ %{<a href="mailto:[email protected]">[email protected]</a>},
+ mail_to("[email protected]".html_safe)
+ )
+ end
+
def test_mail_to_with_img
assert_dom_equal %{<a href="mailto:[email protected]"><img src="/feedback.png" /></a>},
mail_to('[email protected]', '<img src="/feedback.png" />'.html_safe)

0 comments on commit fe7fb5d

Please sign in to comment.