Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
3f840919
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3f840919
编写于
1月 29, 2010
作者:
J
José Valim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ActionMailer should depend just on AbstractController.
上级
29600774
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
200 addition
and
198 deletion
+200
-198
actionmailer/lib/action_mailer.rb
actionmailer/lib/action_mailer.rb
+9
-1
actionmailer/lib/action_mailer/base.rb
actionmailer/lib/action_mailer/base.rb
+0
-6
actionmailer/lib/action_mailer/railtie.rb
actionmailer/lib/action_mailer/railtie.rb
+4
-0
actionmailer/test/base_test.rb
actionmailer/test/base_test.rb
+17
-16
actionmailer/test/old_base/url_test.rb
actionmailer/test/old_base/url_test.rb
+3
-0
actionpack/lib/abstract_controller.rb
actionpack/lib/abstract_controller.rb
+1
-1
actionpack/lib/abstract_controller/url_for.rb
actionpack/lib/abstract_controller/url_for.rb
+0
-156
actionpack/lib/action_controller.rb
actionpack/lib/action_controller.rb
+4
-6
actionpack/lib/action_controller/base.rb
actionpack/lib/action_controller/base.rb
+8
-0
actionpack/lib/action_controller/deprecated.rb
actionpack/lib/action_controller/deprecated.rb
+1
-1
actionpack/lib/action_controller/metal/url_for.rb
actionpack/lib/action_controller/metal/url_for.rb
+145
-4
actionpack/lib/action_dispatch.rb
actionpack/lib/action_dispatch.rb
+1
-0
actionpack/test/controller/url_for_test.rb
actionpack/test/controller/url_for_test.rb
+7
-7
未找到文件。
actionmailer/lib/action_mailer.rb
浏览文件 @
3f840919
...
...
@@ -24,9 +24,17 @@
actionpack_path
=
File
.
expand_path
(
'../../../actionpack/lib'
,
__FILE__
)
$:
.
unshift
(
actionpack_path
)
if
File
.
directory?
(
actionpack_path
)
&&
!
$:
.
include?
(
actionpack_path
)
require
'a
ction
_controller'
require
'a
bstract
_controller'
require
'action_view'
# Common ActiveSupport usage in ActionMailer
require
'active_support/core_ext/class'
require
'active_support/core_ext/object/blank'
require
'active_support/core_ext/array/uniq_by'
require
'active_support/core_ext/module/attr_internal'
require
'active_support/core_ext/module/delegation'
require
'active_support/core_ext/string/inflections'
module
ActionMailer
extend
::
ActiveSupport
::
Autoload
...
...
actionmailer/lib/action_mailer/base.rb
浏览文件 @
3f840919
require
'active_support/core_ext/class'
require
'active_support/core_ext/object/blank'
require
'active_support/core_ext/array/uniq_by'
require
'active_support/core_ext/module/delegation'
require
'active_support/core_ext/string/inflections'
require
'mail'
require
'action_mailer/tmail_compat'
require
'action_mailer/collector'
...
...
@@ -254,7 +249,6 @@ class Base < AbstractController::Base
include
AbstractController
::
LocalizedCache
include
AbstractController
::
Layouts
include
AbstractController
::
Helpers
include
AbstractController
::
UrlFor
include
AbstractController
::
Translation
helper
ActionMailer
::
MailHelper
...
...
actionmailer/lib/action_mailer/railtie.rb
浏览文件 @
3f840919
...
...
@@ -17,5 +17,9 @@ class Railtie < Rails::Railtie
ActionMailer
::
Base
.
send
"
#{
k
}
="
,
v
end
end
initializer
"action_mailer.url_for"
do
|
app
|
ActionMailer
::
Base
.
send
(
:include
,
ActionController
::
UrlFor
)
if
defined?
(
ActionController
)
end
end
end
\ No newline at end of file
actionmailer/test/base_test.rb
浏览文件 @
3f840919
...
...
@@ -415,6 +415,21 @@ def different_layout(layout_name='')
assert_equal
(
"7bit"
,
email
.
parts
[
1
].
content_transfer_encoding
)
end
test
"explicit multipart should be multipart"
do
mail
=
BaseMailer
.
explicit_multipart
assert_not_nil
(
mail
.
content_type_parameters
[
:boundary
])
end
test
"should set a content type if only has an html part"
do
mail
=
BaseMailer
.
html_only
assert_equal
(
'text/html'
,
mail
.
mime_type
)
end
test
"should set a content type if only has an plain text part"
do
mail
=
BaseMailer
.
plain_text_only
assert_equal
(
'text/plain'
,
mail
.
mime_type
)
end
test
"explicit multipart with one part is rendered as body"
do
email
=
BaseMailer
.
custom_block
assert_equal
(
0
,
email
.
parts
.
size
)
...
...
@@ -456,22 +471,8 @@ def different_layout(layout_name='')
BaseMailer
.
expects
(
:welcome
).
returns
(
mail
)
BaseMailer
.
welcome
.
deliver
end
test
"explicit multipart should be multipart"
do
mail
=
BaseMailer
.
explicit_multipart
assert_not_nil
(
mail
.
content_type_parameters
[
:boundary
])
end
test
"should set a content type if only has an html part"
do
mail
=
BaseMailer
.
html_only
assert_equal
(
'text/html'
,
mail
.
mime_type
)
end
test
"should set a content type if only has an plain text part"
do
mail
=
BaseMailer
.
plain_text_only
assert_equal
(
'text/plain'
,
mail
.
mime_type
)
end
# Rendering
test
"that you can specify a different template"
do
mail
=
BaseMailer
.
different_template
(
'explicit_multipart_templates'
)
assert_equal
(
"HTML Explicit Multipart Templates"
,
mail
.
html_part
.
body
.
decoded
)
...
...
actionmailer/test/old_base/url_test.rb
浏览文件 @
3f840919
require
'abstract_unit'
require
'action_controller'
class
WelcomeController
<
ActionController
::
Base
end
class
TestMailer
<
ActionMailer
::
Base
include
ActionController
::
UrlFor
default_url_options
[
:host
]
=
'www.basecamphq.com'
def
signed_up_with_url
(
recipient
)
...
...
actionpack/lib/abstract_controller.rb
浏览文件 @
3f840919
...
...
@@ -2,6 +2,7 @@
$:
.
unshift
(
activesupport_path
)
if
File
.
directory?
(
activesupport_path
)
&&
!
$:
.
include?
(
activesupport_path
)
require
'active_support/ruby/shim'
require
'active_support/dependencies/autoload'
require
'active_support/core_ext/module/attr_internal'
require
'active_support/core_ext/module/delegation'
...
...
@@ -17,5 +18,4 @@ module AbstractController
autoload
:Logger
autoload
:Rendering
autoload
:Translation
autoload
:UrlFor
end
actionpack/lib/abstract_controller/url_for.rb
已删除
100644 → 0
浏览文件 @
29600774
module
AbstractController
# In <b>routes.rb</b> one defines URL-to-controller mappings, but the reverse
# is also possible: an URL can be generated from one of your routing definitions.
# URL generation functionality is centralized in this module.
#
# See AbstractController::Routing and AbstractController::Resources for general
# information about routing and routes.rb.
#
# <b>Tip:</b> If you need to generate URLs from your models or some other place,
# then AbstractController::UrlFor is what you're looking for. Read on for
# an introduction.
#
# == URL generation from parameters
#
# As you may know, some functions - such as AbstractController::Base#url_for
# and ActionView::Helpers::UrlHelper#link_to, can generate URLs given a set
# of parameters. For example, you've probably had the chance to write code
# like this in one of your views:
#
# <%= link_to('Click here', :controller => 'users',
# :action => 'new', :message => 'Welcome!') %>
#
# #=> Generates a link to: /users/new?message=Welcome%21
#
# link_to, and all other functions that require URL generation functionality,
# actually use AbstractController::UrlFor under the hood. And in particular,
# they use the AbstractController::UrlFor#url_for method. One can generate
# the same path as the above example by using the following code:
#
# include UrlFor
# url_for(:controller => 'users',
# :action => 'new',
# :message => 'Welcome!',
# :only_path => true)
# # => "/users/new?message=Welcome%21"
#
# Notice the <tt>:only_path => true</tt> part. This is because UrlFor has no
# information about the website hostname that your Rails app is serving. So if you
# want to include the hostname as well, then you must also pass the <tt>:host</tt>
# argument:
#
# include UrlFor
# url_for(:controller => 'users',
# :action => 'new',
# :message => 'Welcome!',
# :host => 'www.example.com') # Changed this.
# # => "http://www.example.com/users/new?message=Welcome%21"
#
# By default, all controllers and views have access to a special version of url_for,
# that already knows what the current hostname is. So if you use url_for in your
# controllers or your views, then you don't need to explicitly pass the <tt>:host</tt>
# argument.
#
# For convenience reasons, mailers provide a shortcut for AbstractController::UrlFor#url_for.
# So within mailers, you only have to type 'url_for' instead of 'AbstractController::UrlFor#url_for'
# in full. However, mailers don't have hostname information, and what's why you'll still
# have to specify the <tt>:host</tt> argument when generating URLs in mailers.
#
#
# == URL generation for named routes
#
# UrlFor also allows one to access methods that have been auto-generated from
# named routes. For example, suppose that you have a 'users' resource in your
# <b>routes.rb</b>:
#
# map.resources :users
#
# This generates, among other things, the method <tt>users_path</tt>. By default,
# this method is accessible from your controllers, views and mailers. If you need
# to access this auto-generated method from other places (such as a model), then
# you can do that by including AbstractController::UrlFor in your class:
#
# class User < ActiveRecord::Base
# include AbstractController::UrlFor
#
# def base_uri
# user_path(self)
# end
# end
#
# User.find(1).base_uri # => "/users/1"
#
module
UrlFor
extend
ActiveSupport
::
Concern
included
do
ActionController
::
Routing
::
Routes
.
install_helpers
(
self
)
extlib_inheritable_accessor
:default_url_options
,
:instance_writer
=>
false
,
:instance_reader
=>
false
self
.
default_url_options
||=
{}
end
# Overwrite to implement a number of default options that all url_for-based methods will use. The default options should come in
# the form of a hash, just like the one you would use for url_for directly. Example:
#
# def default_url_options(options)
# { :project => @project.active? ? @project.url_name : "unknown" }
# end
#
# As you can infer from the example, this is mostly useful for situations where you want to centralize dynamic decisions about the
# urls as they stem from the business domain. Please note that any individual url_for call can always override the defaults set
# by this method.
def
default_url_options
(
options
=
nil
)
self
.
class
.
default_url_options
end
def
rewrite_options
(
options
)
#:nodoc:
if
options
.
delete
(
:use_defaults
)
!=
false
&&
(
defaults
=
default_url_options
(
options
))
defaults
.
merge
(
options
)
else
options
end
end
# Generate a url based on the options provided, default_url_options and the
# routes defined in routes.rb. The following options are supported:
#
# * <tt>:only_path</tt> - If true, the relative url is returned. Defaults to +false+.
# * <tt>:protocol</tt> - The protocol to connect to. Defaults to 'http'.
# * <tt>:host</tt> - Specifies the host the link should be targeted at.
# If <tt>:only_path</tt> is false, this option must be
# provided either explicitly, or via +default_url_options+.
# * <tt>:port</tt> - Optionally specify the port to connect to.
# * <tt>:anchor</tt> - An anchor name to be appended to the path.
# * <tt>:skip_relative_url_root</tt> - If true, the url is not constructed using the
# +relative_url_root+ set in AbstractController::Base.relative_url_root.
# * <tt>:trailing_slash</tt> - If true, adds a trailing slash, as in "/archive/2009/"
#
# Any other key (<tt>:controller</tt>, <tt>:action</tt>, etc.) given to
# +url_for+ is forwarded to the Routes module.
#
# Examples:
#
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :port=>'8080' # => 'http://somehost.org:8080/tasks/testing'
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :anchor => 'ok', :only_path => true # => '/tasks/testing#ok'
# url_for :controller => 'tasks', :action => 'testing', :trailing_slash=>true # => 'http://somehost.org/tasks/testing/'
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
def
url_for
(
options
=
{})
options
||=
{}
case
options
when
String
options
when
Hash
_url_rewriter
.
rewrite
(
rewrite_options
(
options
))
else
polymorphic_url
(
options
)
end
end
protected
def
_url_rewriter
ActionController
::
UrlRewriter
end
end
end
actionpack/lib/action_controller.rb
浏览文件 @
3f840919
activesupport_path
=
File
.
expand_path
(
'../../../activesupport/lib'
,
__FILE__
)
$:
.
unshift
(
activesupport_path
)
if
File
.
directory?
(
activesupport_path
)
&&
!
$:
.
include?
(
activesupport_path
)
require
'active_support/ruby/shim'
require
'abstract_controller'
require
'action_dispatch'
module
ActionController
extend
ActiveSupport
::
Autoload
...
...
@@ -41,6 +40,7 @@ module ActionController
autoload
:Integration
,
'action_controller/deprecated/integration_test'
autoload
:IntegrationTest
,
'action_controller/deprecated/integration_test'
autoload
:PerformanceTest
,
'action_controller/deprecated/performance_test'
autoload
:UrlWriter
,
'action_controller/deprecated'
autoload
:Routing
,
'action_controller/deprecated'
autoload
:TestCase
,
'action_controller/test_case'
...
...
@@ -66,13 +66,11 @@ module ActionController
end
# All of these simply register additional autoloads
require
'abstract_controller'
require
'action_dispatch'
require
'action_view'
require
'action_controller/vendor/html-scanner'
# Common ActiveSupport usage in ActionController
require
"active_support/concern"
require
'active_support/concern'
require
'active_support/core_ext/class/attribute_accessors'
require
'active_support/core_ext/load_error'
require
'active_support/core_ext/module/attr_internal'
...
...
actionpack/lib/action_controller/base.rb
浏览文件 @
3f840919
...
...
@@ -81,5 +81,13 @@ def self.filter_parameter_logging(*args, &block)
filter
<<
block
if
block
filter
end
protected
# Overwrite url rewriter to use request.
def
_url_rewriter
return
ActionController
::
UrlRewriter
unless
request
@_url_rewriter
||=
ActionController
::
UrlRewriter
.
new
(
request
,
params
)
end
end
end
actionpack/lib/action_controller/deprecated.rb
浏览文件 @
3f840919
...
...
@@ -2,4 +2,4 @@
ActionController
::
AbstractResponse
=
ActionController
::
Response
=
ActionDispatch
::
Response
ActionController
::
Routing
=
ActionDispatch
::
Routing
ActionController
::
Routing
::
Routes
=
ActionDispatch
::
Routing
::
RouteSet
.
new
ActionController
::
UrlWriter
=
A
bstract
Controller
::
UrlFor
ActionController
::
UrlWriter
=
A
ction
Controller
::
UrlFor
actionpack/lib/action_controller/metal/url_for.rb
浏览文件 @
3f840919
module
ActionController
# In <b>routes.rb</b> one defines URL-to-controller mappings, but the reverse
# is also possible: an URL can be generated from one of your routing definitions.
# URL generation functionality is centralized in this module.
#
# See ActionController::Routing and ActionController::Resources for general
# information about routing and routes.rb.
#
# <b>Tip:</b> If you need to generate URLs from your models or some other place,
# then ActionController::UrlFor is what you're looking for. Read on for
# an introduction.
#
# == URL generation from parameters
#
# As you may know, some functions - such as ActionController::Base#url_for
# and ActionView::Helpers::UrlHelper#link_to, can generate URLs given a set
# of parameters. For example, you've probably had the chance to write code
# like this in one of your views:
#
# <%= link_to('Click here', :controller => 'users',
# :action => 'new', :message => 'Welcome!') %>
#
# #=> Generates a link to: /users/new?message=Welcome%21
#
# link_to, and all other functions that require URL generation functionality,
# actually use ActionController::UrlFor under the hood. And in particular,
# they use the ActionController::UrlFor#url_for method. One can generate
# the same path as the above example by using the following code:
#
# include UrlFor
# url_for(:controller => 'users',
# :action => 'new',
# :message => 'Welcome!',
# :only_path => true)
# # => "/users/new?message=Welcome%21"
#
# Notice the <tt>:only_path => true</tt> part. This is because UrlFor has no
# information about the website hostname that your Rails app is serving. So if you
# want to include the hostname as well, then you must also pass the <tt>:host</tt>
# argument:
#
# include UrlFor
# url_for(:controller => 'users',
# :action => 'new',
# :message => 'Welcome!',
# :host => 'www.example.com') # Changed this.
# # => "http://www.example.com/users/new?message=Welcome%21"
#
# By default, all controllers and views have access to a special version of url_for,
# that already knows what the current hostname is. So if you use url_for in your
# controllers or your views, then you don't need to explicitly pass the <tt>:host</tt>
# argument.
#
# For convenience reasons, mailers provide a shortcut for ActionController::UrlFor#url_for.
# So within mailers, you only have to type 'url_for' instead of 'ActionController::UrlFor#url_for'
# in full. However, mailers don't have hostname information, and what's why you'll still
# have to specify the <tt>:host</tt> argument when generating URLs in mailers.
#
#
# == URL generation for named routes
#
# UrlFor also allows one to access methods that have been auto-generated from
# named routes. For example, suppose that you have a 'users' resource in your
# <b>routes.rb</b>:
#
# map.resources :users
#
# This generates, among other things, the method <tt>users_path</tt>. By default,
# this method is accessible from your controllers, views and mailers. If you need
# to access this auto-generated method from other places (such as a model), then
# you can do that by including ActionController::UrlFor in your class:
#
# class User < ActiveRecord::Base
# include ActionController::UrlFor
#
# def base_uri
# user_path(self)
# end
# end
#
# User.find(1).base_uri # => "/users/1"
#
module
UrlFor
extend
ActiveSupport
::
Concern
include
AbstractController
::
UrlFor
include
ActionController
::
RackDelegation
included
do
ActionController
::
Routing
::
Routes
.
install_helpers
(
self
)
extlib_inheritable_accessor
:default_url_options
,
:instance_writer
=>
false
,
:instance_reader
=>
false
self
.
default_url_options
||=
{}
end
# Overwrite to implement a number of default options that all url_for-based methods will use. The default options should come in
# the form of a hash, just like the one you would use for url_for directly. Example:
#
# def default_url_options(options)
# { :project => @project.active? ? @project.url_name : "unknown" }
# end
#
# As you can infer from the example, this is mostly useful for situations where you want to centralize dynamic decisions about the
# urls as they stem from the business domain. Please note that any individual url_for call can always override the defaults set
# by this method.
def
default_url_options
(
options
=
nil
)
self
.
class
.
default_url_options
end
def
rewrite_options
(
options
)
#:nodoc:
if
options
.
delete
(
:use_defaults
)
!=
false
&&
(
defaults
=
default_url_options
(
options
))
defaults
.
merge
(
options
)
else
options
end
end
# Generate a url based on the options provided, default_url_options and the
# routes defined in routes.rb. The following options are supported:
#
# * <tt>:only_path</tt> - If true, the relative url is returned. Defaults to +false+.
# * <tt>:protocol</tt> - The protocol to connect to. Defaults to 'http'.
# * <tt>:host</tt> - Specifies the host the link should be targeted at.
# If <tt>:only_path</tt> is false, this option must be
# provided either explicitly, or via +default_url_options+.
# * <tt>:port</tt> - Optionally specify the port to connect to.
# * <tt>:anchor</tt> - An anchor name to be appended to the path.
# * <tt>:skip_relative_url_root</tt> - If true, the url is not constructed using the
# +relative_url_root+ set in ActionController::Base.relative_url_root.
# * <tt>:trailing_slash</tt> - If true, adds a trailing slash, as in "/archive/2009/"
#
# Any other key (<tt>:controller</tt>, <tt>:action</tt>, etc.) given to
# +url_for+ is forwarded to the Routes module.
#
# Examples:
#
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :port=>'8080' # => 'http://somehost.org:8080/tasks/testing'
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :anchor => 'ok', :only_path => true # => '/tasks/testing#ok'
# url_for :controller => 'tasks', :action => 'testing', :trailing_slash=>true # => 'http://somehost.org/tasks/testing/'
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
def
url_for
(
options
=
{})
options
||=
{}
case
options
when
String
options
when
Hash
_url_rewriter
.
rewrite
(
rewrite_options
(
options
))
else
polymorphic_url
(
options
)
end
end
protected
def
_url_rewriter
return
ActionController
::
UrlRewriter
unless
request
@_url_rewriter
||=
ActionController
::
UrlRewriter
.
new
(
request
,
params
)
ActionController
::
UrlRewriter
end
end
end
actionpack/lib/action_dispatch.rb
浏览文件 @
3f840919
...
...
@@ -23,6 +23,7 @@
activesupport_path
=
File
.
expand_path
(
'../../../activesupport/lib'
,
__FILE__
)
$:
.
unshift
(
activesupport_path
)
if
File
.
directory?
(
activesupport_path
)
&&
!
$:
.
include?
(
activesupport_path
)
require
'active_support'
require
'active_support/dependencies/autoload'
...
...
actionpack/test/
abstract
/url_for_test.rb
→
actionpack/test/
controller
/url_for_test.rb
浏览文件 @
3f840919
...
...
@@ -5,7 +5,7 @@ module Testing
class
UrlForTests
<
ActionController
::
TestCase
class
W
include
A
bstract
Controller
::
UrlFor
include
A
ction
Controller
::
UrlFor
end
def
teardown
...
...
@@ -132,7 +132,7 @@ def test_named_routes
end
# We need to create a new class in order to install the new named route.
kls
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
kls
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
controller
=
kls
.
new
assert
controller
.
respond_to?
(
:home_url
)
assert_equal
'http://www.basecamphq.com/home/sweet/home/again'
,
...
...
@@ -153,7 +153,7 @@ def test_relative_url_root_is_respected_for_named_routes
match
'/home/sweet/home/:user'
,
:to
=>
'home#index'
,
:as
=>
:home
end
kls
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
kls
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
controller
=
kls
.
new
assert_equal
'http://www.basecamphq.com/subdir/home/sweet/home/again'
,
...
...
@@ -171,7 +171,7 @@ def test_only_path
end
# We need to create a new class in order to install the new named route.
kls
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
kls
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
controller
=
kls
.
new
assert
controller
.
respond_to?
(
:home_url
)
assert_equal
'/brave/new/world'
,
...
...
@@ -239,7 +239,7 @@ def test_named_routes_with_nil_keys
end
# We need to create a new class in order to install the new named route.
kls
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
kls
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
kls
.
default_url_options
[
:host
]
=
'www.basecamphq.com'
controller
=
kls
.
new
...
...
@@ -251,8 +251,8 @@ def test_named_routes_with_nil_keys
end
def
test_multiple_includes_maintain_distinct_options
first_class
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
second_class
=
Class
.
new
{
include
A
bstract
Controller
::
UrlFor
}
first_class
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
second_class
=
Class
.
new
{
include
A
ction
Controller
::
UrlFor
}
first_host
,
second_host
=
'firsthost.com'
,
'secondhost.com'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录