mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Engine sets routes as default rack endpoint if no endpoint was given
This commit is contained in:
@@ -103,10 +103,6 @@ module Rails
|
||||
super
|
||||
end
|
||||
|
||||
def routes
|
||||
@routes ||= ActionDispatch::Routing::RouteSet.new
|
||||
end
|
||||
|
||||
def railties
|
||||
@railties ||= Railties.new(config)
|
||||
end
|
||||
|
||||
@@ -152,18 +152,21 @@ module Rails
|
||||
end
|
||||
|
||||
def app
|
||||
raise "You can't use Engine as rack application without providing valid rack endpoint" unless endpoint
|
||||
@app ||= config.middleware.build(endpoint)
|
||||
end
|
||||
|
||||
def endpoint
|
||||
self.class.endpoint
|
||||
self.class.endpoint || routes
|
||||
end
|
||||
|
||||
def call(env)
|
||||
app.call(env)
|
||||
end
|
||||
|
||||
def routes
|
||||
@routes ||= ActionDispatch::Routing::RouteSet.new
|
||||
end
|
||||
|
||||
def initializers
|
||||
initializers = []
|
||||
railties.all { |r| initializers += r.initializers }
|
||||
|
||||
@@ -86,11 +86,35 @@ module RailtiesTest
|
||||
assert_equal "HELLO WORLD", response[2]
|
||||
end
|
||||
|
||||
test "it provides routes as default endpoint" do
|
||||
@plugin.write "lib/bukkits.rb", <<-RUBY
|
||||
class Bukkits
|
||||
class Engine < ::Rails::Engine
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
|
||||
boot_rails
|
||||
|
||||
Bukkits::Engine.routes.draw do |map|
|
||||
match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, 'foo'] }
|
||||
end
|
||||
|
||||
Rails::Application.routes.draw do |map|
|
||||
mount(Bukkits::Engine => "/bukkits")
|
||||
end
|
||||
|
||||
env = Rack::MockRequest.env_for("/bukkits/foo")
|
||||
response = Rails::Application.call(env)
|
||||
|
||||
assert_equal "foo", response[2]
|
||||
end
|
||||
|
||||
test "engine can load its own plugins" do
|
||||
@plugin.write "lib/bukkits.rb", <<-RUBY
|
||||
class Bukkits
|
||||
class Engine < ::Rails::Engine
|
||||
config.paths.vendor.plugins = "#{File.join(@plugin.path, "lib/bukkits/plugins")}"
|
||||
paths.vendor.plugins = "#{File.join(@plugin.path, "lib/bukkits/plugins")}"
|
||||
end
|
||||
end
|
||||
RUBY
|
||||
|
||||
Reference in New Issue
Block a user