aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/guides/source/api_app.textile16
-rw-r--r--railties/guides/source/configuring.textile2
-rw-r--r--railties/lib/rails/application.rb8
-rw-r--r--railties/lib/rails/configuration.rb12
-rw-r--r--railties/test/application/middleware_test.rb3
5 files changed, 20 insertions, 21 deletions
diff --git a/railties/guides/source/api_app.textile b/railties/guides/source/api_app.textile
index 258696385f..9bbf7b36b1 100644
--- a/railties/guides/source/api_app.textile
+++ b/railties/guides/source/api_app.textile
@@ -71,13 +71,13 @@ If you're building a Rails application that will be an API server first and fore
You can generate a new bare Rails app:
<shell>
-$ rails new my_api --api
+$ rails new my_api --http
</shell>
This will do three main things for you:
* Configure your application to start with a more limited set of middleware than normal. Specifically, it will not include any middleware primarily useful for browser applications (like cookie support) by default.
-* Make +ApplicationController+ inherit from +ActionController::API+ instead of +ActionController::Base+. As with middleware, this will leave out any +ActionController+ modules that provide functionality primarily used by browser applications.
+* Make +ApplicationController+ inherit from +ActionController::HTTP+ instead of +ActionController::Base+. As with middleware, this will leave out any +ActionController+ modules that provide functionality primarily used by browser applications.
* Configure the generators to skip generating views, helpers and assets when you generate a new resource.
If you want to take an existing app and make it an API app, follow the following steps.
@@ -85,8 +85,8 @@ If you want to take an existing app and make it an API app, follow the following
In +config/application.rb+ add the following lines at the top of the +Application+ class:
<ruby>
-config.middleware.api_only!
-config.generators.api_only!
+config.middleware.http_only!
+config.generators.http_only!
</ruby>
Change +app/controllers/application_controller.rb+:
@@ -97,7 +97,7 @@ class ApplicationController < ActionController::Base
end
# do
-class ApplicationController < ActionController::API
+class ApplicationController < ActionController::HTTP
end
</ruby>
@@ -239,7 +239,7 @@ Keep in mind that removing these features may remove support for certain feature
h3. Choosing Controller Modules
-An API application (using +ActionController::API+) comes with the following controller modules by default:
+An API application (using +ActionController::HTTP+) comes with the following controller modules by default:
* +AbstractController::Translation+: Support for the +l+ and +t+ localization and translation methods. These delegate to +I18n.translate+ and +I18n.localize+.
* +ActionController::UrlFor+: Makes +url_for+ and friends available.
@@ -252,11 +252,11 @@ An API application (using +ActionController::API+) comes with the following cont
* +AbstractController::Callbacks+: Support for +before_filter+ and friends
* +ActionController::Instrumentation+: Support for the instrumentation hooks defined by +ActionController+ (see "the source":https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/instrumentation.rb for more).
-Other plugins may add additional modules. You can get a list of all modules included into +ActionController::API+ in the rails console:
+Other plugins may add additional modules. You can get a list of all modules included into +ActionController::HTTP+ in the rails console:
<shell>
$ irb
->> ActionController::API.ancestors - ActionController::Metal.ancestors
+>> ActionController::HTTP.ancestors - ActionController::Metal.ancestors
</shell>
h4. Adding Other Modules
diff --git a/railties/guides/source/configuring.textile b/railties/guides/source/configuring.textile
index d72ff57dc5..619c0ae16c 100644
--- a/railties/guides/source/configuring.textile
+++ b/railties/guides/source/configuring.textile
@@ -251,7 +251,7 @@ config.middleware.delete ActionDispatch::BestStandardsSupport
In addition to these methods to handle the stack, if your application is going to be used as an API endpoint only, the middleware stack can be configured like this:
<ruby>
-config.middleware.api_only!
+config.middleware.http_only!
</ruby>
By doing this, Rails will create a smaller middleware stack, by not adding some middlewares that are usually useful for browser access only, such as Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You can always add any of them later manually if you want. Refer to the "API App docs":api_app.html for more info on how to setup your application for API only apps.
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 10fa63c303..3191fe68a7 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -239,7 +239,7 @@ module Rails
middleware.use ::Rack::Lock unless config.allow_concurrency
middleware.use ::Rack::Runtime
- middleware.use ::Rack::MethodOverride unless config.middleware.api_only?
+ middleware.use ::Rack::MethodOverride unless config.middleware.http_only?
middleware.use ::ActionDispatch::RequestId
middleware.use ::Rails::Rack::Logger, config.log_tags # must come after Rack::MethodOverride to properly log overridden methods
middleware.use ::ActionDispatch::ShowExceptions, config.exceptions_app || ActionDispatch::PublicExceptions.new(Rails.public_path)
@@ -252,9 +252,9 @@ module Rails
end
middleware.use ::ActionDispatch::Callbacks
- middleware.use ::ActionDispatch::Cookies unless config.middleware.api_only?
+ middleware.use ::ActionDispatch::Cookies unless config.middleware.http_only?
- if !config.middleware.api_only? && config.session_store
+ if !config.middleware.http_only? && config.session_store
if config.force_ssl && !config.session_options.key?(:secure)
config.session_options[:secure] = true
end
@@ -267,7 +267,7 @@ module Rails
middleware.use ::Rack::ConditionalGet
middleware.use ::Rack::ETag, "no-cache"
- if !config.middleware.api_only? && config.action_dispatch.best_standards_support
+ if !config.middleware.http_only? && config.action_dispatch.best_standards_support
middleware.use ::ActionDispatch::BestStandardsSupport, config.action_dispatch.best_standards_support
end
end
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index d3032bb8dd..d8185bcb34 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -37,7 +37,7 @@ module Rails
# going to be used as an API endpoint only, the middleware stack can be
# configured like this:
#
- # config.middleware.api_only!
+ # config.middleware.http_only!
#
# By doing this, Rails will create a smaller middleware stack, by not adding
# some middlewares that are usually useful for browser access only, such as
@@ -46,14 +46,14 @@ module Rails
class MiddlewareStackProxy
def initialize
@operations = []
- @api_only = false
+ @http_only = false
end
- attr_reader :api_only
- alias :api_only? :api_only
+ attr_reader :http_only
+ alias :http_only? :http_only
- def api_only!
- @api_only = true
+ def http_only!
+ @http_only = true
end
def insert_before(*args, &block)
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index a190a31fc7..712a555c4a 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -53,7 +53,7 @@ module ApplicationTests
end
test "api middleware stack" do
- add_to_config "config.middleware.api_only!"
+ add_to_config "config.middleware.http_only!"
add_to_config "config.force_ssl = true"
add_to_config "config.action_dispatch.x_sendfile_header = 'X-Sendfile'"
@@ -216,7 +216,6 @@ module ApplicationTests
assert_equal etag, last_response.headers["Etag"]
get "/?nothing=true"
- puts last_response.body
assert_equal 200, last_response.status
assert_equal "", last_response.body
assert_equal "text/html; charset=utf-8", last_response.headers["Content-Type"]