From 245941101b1ea00a9b1af613c20b0ee994a43946 Mon Sep 17 00:00:00 2001 From: Sergey Nartimov Date: Fri, 9 Mar 2012 19:33:06 +0300 Subject: configure how unverified request will be handled can be configured using `:with` option in `protect_from_forgery` method or `request_forgery_protection_method` config option possible values: - :reset_session (default) - :exception new applications are generated with: protect_from_forgery :with => :exception --- .../rails/app/templates/app/controllers/application_controller.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb index e8065d9505..b3d6adad2a 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb +++ b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb @@ -1,3 +1,5 @@ class ApplicationController < ActionController::Base - protect_from_forgery + # prevent CSRF attacks by raising an exception, + # if your application has an API, you'll probably need to use :reset_session + protect_from_forgery :with => :exception end -- cgit v1.2.3 From 6b28c94e20800e6be10b4f7dadff55c3c55f44ce Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Tue, 6 Mar 2012 08:26:09 -0300 Subject: Add some docs for MiddlewareStackProxy methods and api_only! [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/configuration.rb | 41 +++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 0efa21d82c..d3032bb8dd 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -6,7 +6,44 @@ require 'rails/rack' module Rails module Configuration - class MiddlewareStackProxy #:nodoc: + # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows + # you to configure middlewares in your application. It works basically as a + # command recorder, saving each command to be applied after initialization + # over the default middleware stack, so you can add, swap, or remove any + # middleware in Rails. + # + # You can add your own middlewares by using the +config.middleware.use+ method: + # + # config.middleware.use Magical::Unicorns + # + # This will put the +Magical::Unicorns+ middleware on the end of the stack. + # You can use +insert_before+ if you wish to add a middleware before another: + # + # config.middleware.insert_before ActionDispatch::Head, Magical::Unicorns + # + # There's also +insert_after+ which will insert a middleware after another: + # + # config.middleware.insert_after ActionDispatch::Head, Magical::Unicorns + # + # Middlewares can also be completely swapped out and replaced with others: + # + # config.middleware.swap ActionDispatch::BestStandardsSupport, Magical::Unicorns + # + # And finally they can also be removed from the stack completely: + # + # 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: + # + # config.middleware.api_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 + # Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You + # can always add any of them later manually if you want. + class MiddlewareStackProxy def initialize @operations = [] @api_only = false @@ -41,7 +78,7 @@ module Rails @operations << [:delete, args, block] end - def merge_into(other) + def merge_into(other) #:nodoc: @operations.each do |operation, args, block| other.send(operation, *args, &block) end -- cgit v1.2.3 From ec40f6cec082cfe76f24b27c19d15314f55be8af Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Tue, 6 Mar 2012 22:20:53 -0300 Subject: Change api_only to http_only [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/application.rb | 8 ++++---- railties/lib/rails/configuration.rb | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'railties/lib/rails') 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) -- cgit v1.2.3 From 51aeae91ace4d0afb934e2d9a21000f2ddc4ea53 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 12 Mar 2012 14:25:25 -0700 Subject: allow people to specify custom formatters, use the default formatter in production so that PID and timestamp are logged. fixes #5388 --- railties/lib/rails/application/bootstrap.rb | 6 +++--- railties/lib/rails/application/configuration.rb | 3 ++- railties/lib/rails/commands/server.rb | 2 ++ .../rails/app/templates/config/environments/production.rb.tt | 3 +++ 4 files changed, 10 insertions(+), 4 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/application/bootstrap.rb b/railties/lib/rails/application/bootstrap.rb index 93a0fba10b..4ee77f7726 100644 --- a/railties/lib/rails/application/bootstrap.rb +++ b/railties/lib/rails/application/bootstrap.rb @@ -32,9 +32,9 @@ module Rails f.binmode f.sync = config.autoflush_log # if true make sure every write flushes - logger = ActiveSupport::TaggedLogging.new( - ActiveSupport::Logger.new(f) - ) + logger = ::Logger.new f + logger.formatter = config.log_formatter + logger = ActiveSupport::TaggedLogging.new(logger) logger.level = ActiveSupport::Logger.const_get(config.log_level.to_s.upcase) logger rescue StandardError diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index 0f5fc2b7bc..1cfcd30c5b 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -8,7 +8,7 @@ module Rails attr_accessor :allow_concurrency, :asset_host, :asset_path, :assets, :autoflush_log, :cache_classes, :cache_store, :consider_all_requests_local, :console, :dependency_loading, :exceptions_app, :file_watcher, :filter_parameters, - :force_ssl, :helpers_paths, :logger, :log_tags, :preload_frameworks, + :force_ssl, :helpers_paths, :logger, :log_formatter, :log_tags, :preload_frameworks, :railties_order, :relative_url_root, :secret_token, :serve_static_assets, :ssl_options, :static_cache_control, :session_options, :time_zone, :reload_classes_only_on_change, :use_schema_cache_dump @@ -41,6 +41,7 @@ module Rails @file_watcher = ActiveSupport::FileUpdateChecker @exceptions_app = nil @autoflush_log = true + @log_formatter = ActiveSupport::Logger::SimpleFormatter.new @use_schema_cache_dump = true @assets = ActiveSupport::OrderedOptions.new diff --git a/railties/lib/rails/commands/server.rb b/railties/lib/rails/commands/server.rb index 0b757cbe28..a608693ca4 100644 --- a/railties/lib/rails/commands/server.rb +++ b/railties/lib/rails/commands/server.rb @@ -71,6 +71,8 @@ module Rails wrapped_app # touch the app so the logger is set up console = ActiveSupport::Logger.new($stdout) + console.formatter = Rails.logger.formatter + Rails.logger.extend(ActiveSupport::Logger.broadcast(console)) end diff --git a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt index 7041550fd0..d0d9083c37 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt @@ -73,4 +73,7 @@ # Disable automatic flushing of the log to improve performance. # config.autoflush_log = false + + # Use default logging formatter so that PID and timestamp are not suppressed + config.log_formatter = ::Logger::Formatter.new end -- cgit v1.2.3 From 10e1ce4fb9a430c779eb31b767cabedc3e228b51 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 12 Mar 2012 14:27:28 -0700 Subject: use AS::Logger so we are consistent --- railties/lib/rails/application/bootstrap.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/application/bootstrap.rb b/railties/lib/rails/application/bootstrap.rb index 4ee77f7726..e567df7162 100644 --- a/railties/lib/rails/application/bootstrap.rb +++ b/railties/lib/rails/application/bootstrap.rb @@ -32,7 +32,7 @@ module Rails f.binmode f.sync = config.autoflush_log # if true make sure every write flushes - logger = ::Logger.new f + logger = ActiveSupport::Logger.new f logger.formatter = config.log_formatter logger = ActiveSupport::TaggedLogging.new(logger) logger.level = ActiveSupport::Logger.const_get(config.log_level.to_s.upcase) -- cgit v1.2.3 From 7ad4c7c8814dc04a2d70967d887d2035b4d71b37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 12 Mar 2012 19:41:17 -0300 Subject: Do not use the attributes hash in the scaffold functional tests --- .../lib/rails/generators/test_unit/scaffold/scaffold_generator.rb | 8 ++++++++ .../generators/test_unit/scaffold/templates/functional_test.rb | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index f7e907a017..760917896f 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -8,10 +8,18 @@ module TestUnit check_class_collision :suffix => "ControllerTest" + argument :attributes, :type => :array, :default => [], :banner => "field:type field:type" + def create_test_files template 'functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb") end + + private + + def accessible_attributes + attributes.reject(&:reference?).map {|a| "\"#{a.name}\"" }.sort.join(', ') + end end end end diff --git a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb index 9ec2e34545..e9fe27e504 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb @@ -4,6 +4,7 @@ require 'test_helper' class <%= controller_class_name %>ControllerTest < ActionController::TestCase setup do @<%= singular_table_name %> = <%= table_name %>(:one) + @valid_attributes = @<%= singular_table_name %>.attributes.slice(<%= accessible_attributes %>) end test "should get index" do @@ -19,7 +20,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase test "should create <%= singular_table_name %>" do assert_difference('<%= class_name %>.count') do - post :create, <%= key_value singular_table_name, "@#{singular_table_name}.attributes" %> + post :create, <%= key_value singular_table_name, "@valid_attributes" %> end assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) @@ -36,7 +37,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase end test "should update <%= singular_table_name %>" do - put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= key_value singular_table_name, "@#{singular_table_name}.attributes" %> + put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= key_value singular_table_name, "@valid_attributes" %> assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) end -- cgit v1.2.3 From 5088f8ce069f9b2cb2581a7eb286133c19abf302 Mon Sep 17 00:00:00 2001 From: Philip Arndt Date: Tue, 13 Mar 2012 23:27:50 +1300 Subject: Fixes issue #5193 using the instructions provided in the issue. --- .../rails/generators/rails/plugin_new/templates/test/test_helper.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb index dcd3b276e3..260011c8fd 100644 --- a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb +++ b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb @@ -8,3 +8,6 @@ Rails.backtrace_cleaner.remove_silencers! # Load support files Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } + +# Load fixtures from the engine +ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) \ No newline at end of file -- cgit v1.2.3 From f0ee9e68891a6436946784d5a7e2124040bc14b4 Mon Sep 17 00:00:00 2001 From: Philip Arndt Date: Tue, 13 Mar 2012 23:28:42 +1300 Subject: Fixed problem when fixture_path is not always defined (incidentally, only when ActiveRecord is according to test_help.rb). --- .../rails/generators/rails/plugin_new/templates/test/test_helper.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb index 260011c8fd..8d45b2bbd9 100644 --- a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb +++ b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb @@ -10,4 +10,6 @@ Rails.backtrace_cleaner.remove_silencers! Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } # Load fixtures from the engine -ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) \ No newline at end of file +if ActiveSupport::TestCase.method_defined?(:fixture_path) + ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) +end \ No newline at end of file -- cgit v1.2.3 From 08db3d5af3ac6a36036083e80f7bb33e65cc9dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 12 Mar 2012 20:10:40 -0300 Subject: Use the attributes hash explicitly --- .../test_unit/scaffold/scaffold_generator.rb | 19 ++++++++++++++++--- .../test_unit/scaffold/templates/functional_test.rb | 5 ++--- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index 760917896f..4c07baae36 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -17,9 +17,22 @@ module TestUnit private - def accessible_attributes - attributes.reject(&:reference?).map {|a| "\"#{a.name}\"" }.sort.join(', ') - end + def resource_attributes + key_value singular_table_name, "{ #{attributes_hash} }" + end + + def attributes_hash + return if accessible_attributes.empty? + + accessible_attributes.map do |a| + name = a.name + "#{name}: @#{singular_table_name}.#{name}" + end.sort.join(', ') + end + + def accessible_attributes + attributes.reject(&:reference?) + end end end end diff --git a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb index e9fe27e504..19894443d5 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb @@ -4,7 +4,6 @@ require 'test_helper' class <%= controller_class_name %>ControllerTest < ActionController::TestCase setup do @<%= singular_table_name %> = <%= table_name %>(:one) - @valid_attributes = @<%= singular_table_name %>.attributes.slice(<%= accessible_attributes %>) end test "should get index" do @@ -20,7 +19,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase test "should create <%= singular_table_name %>" do assert_difference('<%= class_name %>.count') do - post :create, <%= key_value singular_table_name, "@valid_attributes" %> + post :create, <%= resource_attributes %> end assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) @@ -37,7 +36,7 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase end test "should update <%= singular_table_name %>" do - put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= key_value singular_table_name, "@valid_attributes" %> + put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= resource_attributes %> assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) end -- cgit v1.2.3 From 7c00cde79f7973d168b1b6aaa396594447e39a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Tue, 13 Mar 2012 14:19:03 -0300 Subject: Refactor the test_unit scaffold generator to use the key_value method --- railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index 4c07baae36..8e796aada9 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -26,7 +26,7 @@ module TestUnit accessible_attributes.map do |a| name = a.name - "#{name}: @#{singular_table_name}.#{name}" + key_value name, "@#{singular_table_name}.#{name}" end.sort.join(', ') end -- cgit v1.2.3 From f1637bf2bb00490203503fbd943b73406e043d1d Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Sun, 15 May 2011 15:34:36 -0400 Subject: Remove Active Resource source files from the repository Dear Active Resource, It's not that I hate you or anything, but you didn't get much attention lately. There're so many alternatives out there, and I think people have made their choice to use them than you. I think it's time for you to have a big rest, peacefully in this Git repository. I will miss you, @sikachu. --- railties/lib/rails/all.rb | 1 - .../lib/rails/generators/rails/app/templates/config/application.rb | 1 - .../generators/rails/plugin_new/templates/rails/application.rb | 1 - railties/lib/rails/info.rb | 4 ++-- railties/lib/rails/railtie.rb | 2 +- railties/lib/rails/tasks/documentation.rake | 6 ------ 6 files changed, 3 insertions(+), 12 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 01ceb80972..6c9c53fc69 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -4,7 +4,6 @@ require "rails" active_record action_controller action_mailer - active_resource rails/test_unit sprockets ).each do |framework| diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index e47784994a..faf306c567 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -7,7 +7,6 @@ require 'rails/all' <%= comment_if :skip_active_record %>require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" -require "active_resource/railtie" <%= comment_if :skip_sprockets %>require "sprockets/railtie" <%= comment_if :skip_test_unit %>require "rails/test_unit/railtie" <% end -%> diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb b/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb index 996ea79e67..8a8ba04a70 100644 --- a/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb +++ b/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb @@ -7,7 +7,6 @@ require 'rails/all' <%= comment_if :skip_active_record %>require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" -require "active_resource/railtie" <%= comment_if :skip_sprockets %>require "sprockets/railtie" <%= comment_if :skip_test_unit %>require "rails/test_unit/railtie" <% end -%> diff --git a/railties/lib/rails/info.rb b/railties/lib/rails/info.rb index a1e15092b2..aacc1be2fc 100644 --- a/railties/lib/rails/info.rb +++ b/railties/lib/rails/info.rb @@ -23,7 +23,7 @@ module Rails end def frameworks - %w( active_record action_pack active_resource action_mailer active_support ) + %w( active_record action_pack action_mailer active_support ) end def framework_version(framework) @@ -83,7 +83,7 @@ module Rails end # Versions of each Rails framework (Active Record, Action Pack, - # Active Resource, Action Mailer, and Active Support). + # Action Mailer, and Active Support). frameworks.each do |framework| property "#{framework.titlecase} version" do framework_version(framework) diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb index 7fed7c8631..e8563f4daf 100644 --- a/railties/lib/rails/railtie.rb +++ b/railties/lib/rails/railtie.rb @@ -9,7 +9,7 @@ module Rails # Rails and/or modify the initialization process. # # Every major component of Rails (Action Mailer, Action Controller, - # Action View, Active Record and Active Resource) is a Railtie. Each of + # Action View and Active Record) is a Railtie. Each of # them is responsible for their own initialization. This makes Rails itself # absent of any component hooks, allowing other components to be used in # place of any of the Rails defaults. diff --git a/railties/lib/rails/tasks/documentation.rake b/railties/lib/rails/tasks/documentation.rake index cec346d86b..2851ca4189 100644 --- a/railties/lib/rails/tasks/documentation.rake +++ b/railties/lib/rails/tasks/documentation.rake @@ -83,12 +83,6 @@ namespace :doc do end end - gem_path('activeresource') do |activeresource| - %w(README.rdoc CHANGELOG.md lib/active_resource.rb lib/active_resource/*).each do |file| - rdoc.rdoc_files.include("#{activeresource}/#{file}") - end - end - gem_path('activesupport') do |activesupport| %w(README.rdoc CHANGELOG.md lib/active_support/**/*.rb).each do |file| rdoc.rdoc_files.include("#{activesupport}/#{file}") -- cgit v1.2.3 From 919db1bbbb9c2565c2dc1816812b7031f74b4e8e Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 13 Mar 2012 21:28:34 +0100 Subject: Check for existence of exactly the called `fixture_path=` method --- .../rails/generators/rails/plugin_new/templates/test/test_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb index 8d45b2bbd9..1e26a313cd 100644 --- a/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb +++ b/railties/lib/rails/generators/rails/plugin_new/templates/test/test_helper.rb @@ -10,6 +10,6 @@ Rails.backtrace_cleaner.remove_silencers! Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } # Load fixtures from the engine -if ActiveSupport::TestCase.method_defined?(:fixture_path) +if ActiveSupport::TestCase.method_defined?(:fixture_path=) ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) -end \ No newline at end of file +end -- cgit v1.2.3 From e8296a02880e2cb68b14586da3e77daf54c10125 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 13 Mar 2012 13:38:58 -0500 Subject: The sprockets railtie was moved to sprockets/rails/railtie --- railties/lib/rails/all.rb | 2 +- railties/lib/rails/generators/rails/app/templates/config/application.rb | 2 +- .../rails/generators/rails/plugin_new/templates/rails/application.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/all.rb b/railties/lib/rails/all.rb index 6c9c53fc69..eabe566829 100644 --- a/railties/lib/rails/all.rb +++ b/railties/lib/rails/all.rb @@ -5,7 +5,7 @@ require "rails" action_controller action_mailer rails/test_unit - sprockets + sprockets/rails ).each do |framework| begin require "#{framework}/railtie" diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index faf306c567..0560b5cade 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -7,7 +7,7 @@ require 'rails/all' <%= comment_if :skip_active_record %>require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" -<%= comment_if :skip_sprockets %>require "sprockets/railtie" +<%= comment_if :skip_sprockets %>require "sprockets/rails/railtie" <%= comment_if :skip_test_unit %>require "rails/test_unit/railtie" <% end -%> diff --git a/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb b/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb index 8a8ba04a70..2f9b7fc962 100644 --- a/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb +++ b/railties/lib/rails/generators/rails/plugin_new/templates/rails/application.rb @@ -7,7 +7,7 @@ require 'rails/all' <%= comment_if :skip_active_record %>require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" -<%= comment_if :skip_sprockets %>require "sprockets/railtie" +<%= comment_if :skip_sprockets %>require "sprockets/rails/railtie" <%= comment_if :skip_test_unit %>require "rails/test_unit/railtie" <% end -%> -- cgit v1.2.3 From e823c8bd6f34ef297393e0c543f55627f6165c87 Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Tue, 13 Mar 2012 17:22:28 -0500 Subject: Add sprockets-rails to generated Gemfile. This should be reverted after sprockets-rails release on rubygems --- railties/lib/rails/generators/app_base.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 7c449657b5..f775004f16 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -189,6 +189,7 @@ module Rails # Gems used only for assets and not required # in production environments by default. group :assets do + gem 'sprockets-rails', :git => 'https://github.com/rails/sprockets-rails.git' gem 'sass-rails', :git => 'https://github.com/rails/sass-rails.git' gem 'coffee-rails', :git => 'https://github.com/rails/coffee-rails.git' @@ -202,6 +203,7 @@ module Rails # Gems used only for assets and not required # in production environments by default. group :assets do + gem 'sprockets-rails', :git => 'https://github.com/rails/sprockets-rails.git' gem 'sass-rails', '~> 4.0.0.beta' gem 'coffee-rails', '~> 4.0.0.beta' -- cgit v1.2.3 From a8dd21d8b459ce4d57160a359798c577085a95e9 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Fri, 2 Mar 2012 00:10:06 -0300 Subject: Remove IdentityMap --- railties/lib/rails/test_help.rb | 4 ---- 1 file changed, 4 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index 11e4353c87..46bf3bbe48 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -18,10 +18,6 @@ if defined?(ActiveRecord::Base) class ActiveSupport::TestCase include ActiveRecord::TestFixtures self.fixture_path = "#{Rails.root}/test/fixtures/" - - setup do - ActiveRecord::IdentityMap.clear - end end ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path -- cgit v1.2.3 From 1ced5ca67bc553ebc4a8a1b3ba4776e882587600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Tue, 13 Mar 2012 23:10:32 -0300 Subject: Remove key_value helper now that master is 1.9 only and we always use the 1.9 hash syntax in the generators. --- railties/lib/rails/generators/app_base.rb | 5 ----- .../generators/erb/scaffold/templates/index.html.erb | 2 +- railties/lib/rails/generators/named_base.rb | 5 ----- .../config/initializers/session_store.rb.tt | 2 +- .../config/initializers/wrap_parameters.rb.tt | 2 +- .../generators/rails/app/templates/db/seeds.rb.tt | 4 ++-- .../scaffold_controller/templates/controller.rb | 20 ++++++++++---------- .../test_unit/scaffold/scaffold_generator.rb | 6 +----- .../test_unit/scaffold/templates/functional_test.rb | 10 +++++----- 9 files changed, 21 insertions(+), 35 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index f775004f16..8e9083e6eb 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -257,11 +257,6 @@ module Rails def git_keep(destination) create_file("#{destination}/.gitkeep") unless options[:skip_git] end - - # Returns Ruby 1.9 style key-value pair. - def key_value(key, value) - "#{key}: #{value}" - end end end end diff --git a/railties/lib/rails/generators/erb/scaffold/templates/index.html.erb b/railties/lib/rails/generators/erb/scaffold/templates/index.html.erb index 85296ca37b..303331a4f0 100644 --- a/railties/lib/rails/generators/erb/scaffold/templates/index.html.erb +++ b/railties/lib/rails/generators/erb/scaffold/templates/index.html.erb @@ -16,7 +16,7 @@ <% end -%> <%%= link_to 'Show', <%= singular_table_name %> %> <%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %> - <%%= link_to 'Destroy', <%= singular_table_name %>, <%= key_value :confirm, "'Are you sure?'" %>, <%= key_value :method, ":delete" %> %> + <%%= link_to 'Destroy', <%= singular_table_name %>, confirm: 'Are you sure?', method: :delete %> <%% end %> diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb index 9cef55e0a6..862fd9e88d 100644 --- a/railties/lib/rails/generators/named_base.rb +++ b/railties/lib/rails/generators/named_base.rb @@ -180,11 +180,6 @@ module Rails class_collisions "#{options[:prefix]}#{name}#{options[:suffix]}" end end - - # Returns Ruby 1.9 style key-value pair. - def key_value(key, value) - "#{key}: #{value}" - end end end end diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt index ddfe4ba1e1..ade0c4f78c 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt @@ -1,6 +1,6 @@ # Be sure to restart your server when you modify this file. -<%= app_const %>.config.session_store :cookie_store, <%= key_value :key, "'_#{app_name}_session'" %> +<%= app_const %>.config.session_store :cookie_store, key: <%= "'_#{app_name}_session'" %> # Use the database for sessions instead of the cookie-based default, # which shouldn't be used to store highly confidential information diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt index d640f578da..4356f14282 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt @@ -5,7 +5,7 @@ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. ActiveSupport.on_load(:action_controller) do - wrap_parameters <%= key_value :format, "[:json]" %> + wrap_parameters format: [:json] end <%- unless options.skip_active_record? -%> diff --git a/railties/lib/rails/generators/rails/app/templates/db/seeds.rb.tt b/railties/lib/rails/generators/rails/app/templates/db/seeds.rb.tt index f75c5dd941..4edb1e857e 100644 --- a/railties/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/db/seeds.rb.tt @@ -3,5 +3,5 @@ # # Examples: # -# cities = City.create([{ <%= key_value :name, "'Chicago'" %> }, { <%= key_value :name, "'Copenhagen'" %> }]) -# Mayor.create(<%= key_value :name, "'Emanuel'" %>, <%= key_value :city, "cities.first" %>) +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create(name: 'Emanuel', city: cities.first) diff --git a/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb b/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb index ee49534a04..fd73835e1d 100644 --- a/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +++ b/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb @@ -7,7 +7,7 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| format.html # index.html.erb - format.json { render <%= key_value :json, "@#{plural_table_name}" %> } + format.json { render json: <%= "@#{plural_table_name}" %> } end end @@ -18,7 +18,7 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| format.html # show.html.erb - format.json { render <%= key_value :json, "@#{singular_table_name}" %> } + format.json { render json: <%= "@#{singular_table_name}" %> } end end @@ -29,7 +29,7 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| format.html # new.html.erb - format.json { render <%= key_value :json, "@#{singular_table_name}" %> } + format.json { render json: <%= "@#{singular_table_name}" %> } end end @@ -45,11 +45,11 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| if @<%= orm_instance.save %> - format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully created.'" %> } - format.json { render <%= key_value :json, "@#{singular_table_name}" %>, <%= key_value :status, ':created' %>, <%= key_value :location, "@#{singular_table_name}" %> } + format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %> } + format.json { render json: <%= "@#{singular_table_name}" %>, :status: :created, location: <%= "@#{singular_table_name}" %> } else - format.html { render <%= key_value :action, '"new"' %> } - format.json { render <%= key_value :json, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> } + format.html { render action: "new" } + format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity %> } end end end @@ -61,11 +61,11 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %> - format.html { redirect_to @<%= singular_table_name %>, <%= key_value :notice, "'#{human_name} was successfully updated.'" %> } + format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully updated.'" %> } format.json { head :no_content } else - format.html { render <%= key_value :action, '"edit"' %> } - format.json { render <%= key_value :json, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> } + format.html { render action: "edit" } + format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity } end end end diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index 8e796aada9..37b9f7ef7d 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -17,16 +17,12 @@ module TestUnit private - def resource_attributes - key_value singular_table_name, "{ #{attributes_hash} }" - end - def attributes_hash return if accessible_attributes.empty? accessible_attributes.map do |a| name = a.name - key_value name, "@#{singular_table_name}.#{name}" + "#{name}: @#{singular_table_name}.#{name}" end.sort.join(', ') end diff --git a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb index 19894443d5..30e1650555 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb @@ -19,30 +19,30 @@ class <%= controller_class_name %>ControllerTest < ActionController::TestCase test "should create <%= singular_table_name %>" do assert_difference('<%= class_name %>.count') do - post :create, <%= resource_attributes %> + post :create, <%= "#{singular_table_name}: { #{attributes_hash} }" %> end assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) end test "should show <%= singular_table_name %>" do - get :show, <%= key_value :id, "@#{singular_table_name}" %> + get :show, id: <%= "@#{singular_table_name}" %> assert_response :success end test "should get edit" do - get :edit, <%= key_value :id, "@#{singular_table_name}" %> + get :edit, id: <%= "@#{singular_table_name}" %> assert_response :success end test "should update <%= singular_table_name %>" do - put :update, <%= key_value :id, "@#{singular_table_name}" %>, <%= resource_attributes %> + put :update, id: <%= "@#{singular_table_name}" %>, <%= "#{singular_table_name}: { #{attributes_hash} }" %> assert_redirected_to <%= singular_table_name %>_path(assigns(:<%= singular_table_name %>)) end test "should destroy <%= singular_table_name %>" do assert_difference('<%= class_name %>.count', -1) do - delete :destroy, <%= key_value :id, "@#{singular_table_name}" %> + delete :destroy, id: <%= "@#{singular_table_name}" %> end assert_redirected_to <%= index_helper %>_path -- cgit v1.2.3 From 4c16791f355c74f8e6ad916e67fd4ae81efbf708 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 13 Mar 2012 16:21:41 -0300 Subject: Add ActionController::HTTP More info http://edgeguides.rubyonrails.org/api_app.html [Carlos Antonio da Silva & Santiago Pastorino] --- .../rails/app/templates/config/initializers/wrap_parameters.rb.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt index 4356f14282..19cbf0e4f1 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt @@ -5,7 +5,7 @@ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] + wrap_parameters format: [:json] if respond_to?(:wrap_parameters) end <%- unless options.skip_active_record? -%> -- cgit v1.2.3 From 5c8c7ca2f99903533175e6da1da61fd349bce261 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 11:02:27 -0300 Subject: Add http-only option to Rails app generator Change application controller template accordingly, to inherit from ActionController::HTTP and not generate protect_from_forgery call. [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators/app_base.rb | 3 +++ .../rails/app/templates/app/controllers/application_controller.rb | 5 ----- .../rails/app/templates/app/controllers/application_controller.rb.tt | 5 +++++ 3 files changed, 8 insertions(+), 5 deletions(-) delete mode 100644 railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb create mode 100644 railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 8e9083e6eb..f3333d0acb 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -58,6 +58,9 @@ module Rails class_option :skip_test_unit, :type => :boolean, :aliases => "-T", :default => false, :desc => "Skip Test::Unit files" + class_option :http_only, :type => :boolean, :default => false, + :desc => "Preconfigure smaller stack for HTTP only apps" + class_option :help, :type => :boolean, :aliases => "-h", :group => :rails, :desc => "Show this help message and quit" end diff --git a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb deleted file mode 100644 index b3d6adad2a..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb +++ /dev/null @@ -1,5 +0,0 @@ -class ApplicationController < ActionController::Base - # prevent CSRF attacks by raising an exception, - # if your application has an API, you'll probably need to use :reset_session - protect_from_forgery :with => :exception -end diff --git a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt new file mode 100644 index 0000000000..699b2c1119 --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt @@ -0,0 +1,5 @@ +class ApplicationController < ActionController::<%= options.http_only? ? "HTTP" : "Base" %> + # Prevent CSRF attacks by raising an exception. + # For APIs, you may want to use :reset_session instead. + <%= comment_if :http_only %>protect_from_forgery :with => :exception +end -- cgit v1.2.3 From 124838b508f0375ba75e09a698f6e43f24ec268d Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 11:44:42 -0300 Subject: Generate middleware http_only! config when running http only app generator [Carlos Antonio da Silva & Santiago Pastorino] --- .../generators/rails/app/templates/config/application.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index 0560b5cade..3225c875a2 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -59,13 +59,22 @@ module <%= app_const_base %> # an exception. If set to true, then an ActiveRecord::DeleteRestrictionError exception would be # raised. If set to false, then an error will be added on the model instead. <%= comment_if :skip_active_record %>config.active_record.dependent_restrict_raises = false - <% unless options.skip_sprockets? -%> + # Enable the asset pipeline. config.assets.enabled = true # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' +<% end -%> +<% if options.http_only? -%> + + # Only loads a smaller set of middleware suitable for HTTP only apps. + # Middleware like session, flash, cookies can be added back manually. + config.middleware.http_only! + + # Skip views, helpers and assets when generating a new resource. + config.generators.http_only! <% end -%> end end -- cgit v1.2.3 From c825e9a5eaa8060a3745c5275b6829c37c6545a7 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 16:36:17 -0300 Subject: Create generators http_only! setup and hide some common namespaces for now [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/configuration.rb | 14 +++++++++++--- railties/lib/rails/generators.rb | 8 +++++++- 2 files changed, 18 insertions(+), 4 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index d8185bcb34..46b363c70e 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -44,14 +44,14 @@ module Rails # Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You # can always add any of them later manually if you want. class MiddlewareStackProxy + attr_reader :http_only + alias :http_only? :http_only + def initialize @operations = [] @http_only = false end - attr_reader :http_only - alias :http_only? :http_only - def http_only! @http_only = true end @@ -90,6 +90,9 @@ module Rails attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging attr_reader :hidden_namespaces + attr_reader :http_only + alias :http_only? :http_only + def initialize @aliases = Hash.new { |h,k| h[k] = {} } @options = Hash.new { |h,k| h[k] = {} } @@ -97,6 +100,7 @@ module Rails @templates = [] @colorize_logging = true @hidden_namespaces = [] + @http_only = false end def initialize_copy(source) @@ -110,6 +114,10 @@ module Rails @hidden_namespaces << namespace end + def http_only! + @http_only = true + end + def method_missing(method, *args) method = method.to_s.sub(/=$/, '').to_sym diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index cd277c5097..44121f45ce 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -68,6 +68,7 @@ module Rails templates_path.concat config.templates templates_path.uniq! hide_namespaces(*config.hidden_namespaces) + http_only! if config.http_only? end def self.templates_path @@ -104,6 +105,11 @@ module Rails Thor::Base.shell = Thor::Shell::Basic end + # Configure generators for http only + def self.http_only! + hide_namespaces "assets", "css", "js", "session_migration" + end + # Track all generators subclasses. def self.subclasses @subclasses ||= [] @@ -235,7 +241,7 @@ module Rails rails.delete("plugin_new") print_list("rails", rails) - hidden_namespaces.each {|n| groups.delete(n.to_s) } + hidden_namespaces.each { |n| groups.delete(n.to_s) } groups.sort.each { |b, n| print_list(b, n) } end -- cgit v1.2.3 From 219ff436399c3d28bb09ea841fecfdcfe6606257 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 17:24:36 -0300 Subject: Disable template, helper and assets options when using http_only! [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 44121f45ce..f70c9ebab9 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -105,9 +105,22 @@ module Rails Thor::Base.shell = Thor::Shell::Basic end - # Configure generators for http only + # Configure generators for http only applications. It basically hides + # everything that is usually browser related, such as assets and session + # migration generators, and completely disable views, helpers and assets + # so generators such as scaffold won't create them. def self.http_only! hide_namespaces "assets", "css", "js", "session_migration" + + options[:rails].merge!( + :assets => false, + :helper => false, + :javascripts => false, + :javascript_engine => nil, + :stylesheets => false, + :stylesheet_engine => nil, + :template_engine => nil + ) end # Track all generators subclasses. -- cgit v1.2.3 From 858a30e5716de6201087f2798f6d733cfb9b2fd7 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 17:48:54 -0300 Subject: Refactor http_only, remove reader method [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/configuration.rb | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 46b363c70e..bce696c8f9 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -6,6 +6,20 @@ require 'rails/rack' module Rails module Configuration + module HttpOnly #:nodoc: + def initialize + @http_only = false + end + + def http_only! + @http_only = true + end + + def http_only? + @http_only + end + end + # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows # you to configure middlewares in your application. It works basically as a # command recorder, saving each command to be applied after initialization @@ -44,16 +58,11 @@ module Rails # Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You # can always add any of them later manually if you want. class MiddlewareStackProxy - attr_reader :http_only - alias :http_only? :http_only + include HttpOnly def initialize + super @operations = [] - @http_only = false - end - - def http_only! - @http_only = true end def insert_before(*args, &block) @@ -90,17 +99,16 @@ module Rails attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging attr_reader :hidden_namespaces - attr_reader :http_only - alias :http_only? :http_only + include HttpOnly def initialize + super @aliases = Hash.new { |h,k| h[k] = {} } @options = Hash.new { |h,k| h[k] = {} } @fallbacks = {} @templates = [] @colorize_logging = true @hidden_namespaces = [] - @http_only = false end def initialize_copy(source) @@ -114,10 +122,6 @@ module Rails @hidden_namespaces << namespace end - def http_only! - @http_only = true - end - def method_missing(method, *args) method = method.to_s.sub(/=$/, '').to_sym @@ -138,5 +142,6 @@ module Rails end end end + end end -- cgit v1.2.3 From ff8e9e07b445a020faa4adf8e94b6d9328f2f1de Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 18:19:01 -0300 Subject: Allow generator configs from http_only! to be overriden by app [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index f70c9ebab9..8d66cd2fd3 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -61,6 +61,7 @@ module Rails } def self.configure!(config) #:nodoc: + http_only! if config.http_only? no_color! unless config.colorize_logging aliases.deep_merge! config.aliases options.deep_merge! config.options @@ -68,7 +69,6 @@ module Rails templates_path.concat config.templates templates_path.uniq! hide_namespaces(*config.hidden_namespaces) - http_only! if config.http_only? end def self.templates_path -- cgit v1.2.3 From 2c0f6b0d8a8f357078fa7399765cf11edc7c645b Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Sat, 10 Mar 2012 18:37:00 -0300 Subject: Move http only option to AppGenerator [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators/app_base.rb | 3 --- railties/lib/rails/generators/rails/app/app_generator.rb | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index f3333d0acb..8e9083e6eb 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -58,9 +58,6 @@ module Rails class_option :skip_test_unit, :type => :boolean, :aliases => "-T", :default => false, :desc => "Skip Test::Unit files" - class_option :http_only, :type => :boolean, :default => false, - :desc => "Preconfigure smaller stack for HTTP only apps" - class_option :help, :type => :boolean, :aliases => "-h", :group => :rails, :desc => "Show this help message and quit" end diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index f0745df667..3552ec2846 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -144,6 +144,9 @@ module Rails class AppGenerator < AppBase add_shared_options_for "application" + class_option :http_only, :type => :boolean, :default => false, + :desc => "Preconfigure smaller stack for HTTP only apps" + # Add bin/rails options class_option :version, :type => :boolean, :aliases => "-v", :group => :rails, :desc => "Show Rails version number and quit" -- cgit v1.2.3 From 3e138df9776985de8ab367dcd9757b404c53435e Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Mon, 12 Mar 2012 09:17:08 -0300 Subject: Rename http-only app generator option to http [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators/rails/app/app_generator.rb | 4 ++-- .../rails/app/templates/app/controllers/application_controller.rb.tt | 4 ++-- .../lib/rails/generators/rails/app/templates/config/application.rb | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 3552ec2846..947ab82d00 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -144,8 +144,8 @@ module Rails class AppGenerator < AppBase add_shared_options_for "application" - class_option :http_only, :type => :boolean, :default => false, - :desc => "Preconfigure smaller stack for HTTP only apps" + class_option :http, :type => :boolean, :default => false, + :desc => "Preconfigure smaller stack for HTTP only apps" # Add bin/rails options class_option :version, :type => :boolean, :aliases => "-v", :group => :rails, diff --git a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt index 699b2c1119..4dc85ec156 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt @@ -1,5 +1,5 @@ -class ApplicationController < ActionController::<%= options.http_only? ? "HTTP" : "Base" %> +class ApplicationController < ActionController::<%= options.http? ? "HTTP" : "Base" %> # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :reset_session instead. - <%= comment_if :http_only %>protect_from_forgery :with => :exception + <%= comment_if :http %>protect_from_forgery :with => :exception end diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index 3225c875a2..ba3785be35 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -67,7 +67,7 @@ module <%= app_const_base %> # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' <% end -%> -<% if options.http_only? -%> +<% if options.http? -%> # Only loads a smaller set of middleware suitable for HTTP only apps. # Middleware like session, flash, cookies can be added back manually. -- cgit v1.2.3 From 570cc89bad00a0df20e11196fa34d3119327a7d6 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Tue, 13 Mar 2012 10:03:59 -0300 Subject: Generate special controller and functional test templates for http apps The main goal is to not generate the format.html block in scaffold controller, and to generate a different functional test as we don't rely on redirects anymore, we should test for http responses. In addition to that, the :edit action is removed from the http controller and the edit route is not generated by default, as they usually do not make sense in this scenario. [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/configuration.rb | 1 - railties/lib/rails/generators.rb | 2 + .../rails/resource/resource_generator.rb | 6 ++- .../scaffold_controller_generator.rb | 6 ++- .../templates/http_controller.rb | 60 ++++++++++++++++++++++ .../test_unit/scaffold/scaffold_generator.rb | 7 ++- .../scaffold/templates/http_functional_test.rb | 50 ++++++++++++++++++ 7 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb create mode 100644 railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index bce696c8f9..0fb463c44d 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -142,6 +142,5 @@ module Rails end end end - end end diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 8d66cd2fd3..3965e05823 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -46,6 +46,7 @@ module Rails :assets => true, :force_plural => false, :helper => true, + :http => false, :integration_tool => nil, :javascripts => true, :javascript_engine => :js, @@ -115,6 +116,7 @@ module Rails options[:rails].merge!( :assets => false, :helper => false, + :http => true, :javascripts => false, :javascript_engine => nil, :stylesheets => false, diff --git a/railties/lib/rails/generators/rails/resource/resource_generator.rb b/railties/lib/rails/generators/rails/resource/resource_generator.rb index c7345f3cfb..11326388b4 100644 --- a/railties/lib/rails/generators/rails/resource/resource_generator.rb +++ b/railties/lib/rails/generators/rails/resource/resource_generator.rb @@ -14,10 +14,14 @@ module Rails class_option :actions, :type => :array, :banner => "ACTION ACTION", :default => [], :desc => "Actions for the resource controller" + class_option :http, :type => :boolean, :default => false, + :desc => "Generate resource with HTTP actions only" + def add_resource_route return if options[:actions].present? - route_config = regular_class_path.collect{|namespace| "namespace :#{namespace} do " }.join(" ") + route_config = regular_class_path.collect{ |namespace| "namespace :#{namespace} do " }.join(" ") route_config << "resources :#{file_name.pluralize}" + route_config << ", except: :edit" if options.http? route_config << " end" * regular_class_path.size route route_config end diff --git a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb index 2271c6f9c1..17d462fa40 100644 --- a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +++ b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb @@ -10,8 +10,12 @@ module Rails class_option :orm, :banner => "NAME", :type => :string, :required => true, :desc => "ORM to generate the controller for" + class_option :http, :type => :boolean, :default => false, + :desc => "Generate controller with HTTP actions only" + def create_controller_files - template 'controller.rb', File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb") + template_file = options.http? ? "http_controller.rb" : "controller.rb" + template template_file, File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb") end hook_for :template_engine, :test_framework, :as => :scaffold diff --git a/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb b/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb new file mode 100644 index 0000000000..3f44ac18a4 --- /dev/null +++ b/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb @@ -0,0 +1,60 @@ +<% module_namespacing do -%> +class <%= controller_class_name %>Controller < ApplicationController + # GET <%= route_url %> + # GET <%= route_url %>.json + def index + @<%= plural_table_name %> = <%= orm_class.all(class_name) %> + + render json: @<%= plural_table_name %> + end + + # GET <%= route_url %>/1 + # GET <%= route_url %>/1.json + def show + @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> + + render json: @<%= singular_table_name %> + end + + # GET <%= route_url %>/new + # GET <%= route_url %>/new.json + def new + @<%= singular_table_name %> = <%= orm_class.build(class_name) %> + + render json: @<%= singular_table_name %> + end + + # POST <%= route_url %> + # POST <%= route_url %>.json + def create + @<%= singular_table_name %> = <%= orm_class.build(class_name, "params[:#{singular_table_name}]") %> + + if @<%= orm_instance.save %> + render json: @<%= singular_table_name %>, status: :created, location: @<%= singular_table_name %> + else + render json: @<%= orm_instance.errors %>, status: :unprocessable_entity + end + end + + # PATCH/PUT <%= route_url %>/1 + # PATCH/PUT <%= route_url %>/1.json + def update + @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> + + if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %> + head :no_content + else + render json: @<%= orm_instance.errors %>, status: :unprocessable_entity + end + end + + # DELETE <%= route_url %>/1 + # DELETE <%= route_url %>/1.json + def destroy + @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> + @<%= orm_instance.destroy %> + + head :no_content + end +end +<% end -%> diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index 37b9f7ef7d..e875c81340 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -10,8 +10,13 @@ module TestUnit argument :attributes, :type => :array, :default => [], :banner => "field:type field:type" + class_option :http, :type => :boolean, :default => false, + :desc => "Generate functional test with HTTP actions only" + def create_test_files - template 'functional_test.rb', + template_file = options.http? ? "http_functional_test.rb" : "functional_test.rb" + + template template_file, File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb") end diff --git a/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb b/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb new file mode 100644 index 0000000000..5bb61cb263 --- /dev/null +++ b/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb @@ -0,0 +1,50 @@ +require 'test_helper' + +<% module_namespacing do -%> +class <%= controller_class_name %>ControllerTest < ActionController::TestCase + setup do + @<%= singular_table_name %> = <%= table_name %>(:one) + @request.accept = "application/json" + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:<%= table_name %>) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create <%= singular_table_name %>" do + assert_difference('<%= class_name %>.count') do + post :create, <%= "#{singular_table_name}: { #{attributes_hash} }" %> + end + + assert_response 201 + assert_not_nil assigns(:<%= singular_table_name %>) + end + + test "should show <%= singular_table_name %>" do + get :show, id: @<%= singular_table_name %> + assert_response :success + end + + test "should update <%= singular_table_name %>" do + put :update, id: @<%= singular_table_name %>, <%= "#{singular_table_name}: { #{attributes_hash} }" %> + assert_response 204 + assert_not_nil assigns(:<%= singular_table_name %>) + end + + test "should destroy <%= singular_table_name %>" do + assert_difference('<%= class_name %>.count', -1) do + delete :destroy, id: @<%= singular_table_name %> + end + + assert_response 204 + assert_not_nil assigns(:<%= singular_table_name %>) + end +end +<% end -%> -- cgit v1.2.3 From 96aea58f2256ce977e3209f3ebc5d87e5035063f Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Wed, 14 Mar 2012 11:03:31 -0300 Subject: Do not generate app/views and sprockets entries on http app [Carlos Antonio da Silva & Santiago Pastorino] --- railties/lib/rails/generators/rails/app/app_generator.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 947ab82d00..ffdfb32aba 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -159,6 +159,10 @@ module Rails if !options[:skip_active_record] && !DATABASES.include?(options[:database]) raise Error, "Invalid value for --database option. Supported for preconfiguration are: #{DATABASES.join(", ")}." end + + # Force sprockets to be skipped when generating http only app. + # Can't modify options hash as it's frozen by default. + self.options = options.merge(:skip_sprockets => true).freeze if options.http? end public_task :create_root @@ -173,6 +177,7 @@ module Rails def create_app_files build(:app) + remove_file("app/views") if options.http? end def create_config_files -- cgit v1.2.3 From 2963ee6b4bbdb288de8a1245d4fbaa67dd256139 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Wed, 14 Mar 2012 14:36:15 -0300 Subject: Fix scaffold controller template, ensure rake scaffold test pass by default --- .../generators/rails/scaffold_controller/templates/controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb b/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb index fd73835e1d..b95aea5f19 100644 --- a/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb +++ b/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb @@ -46,10 +46,10 @@ class <%= controller_class_name %>Controller < ApplicationController respond_to do |format| if @<%= orm_instance.save %> format.html { redirect_to @<%= singular_table_name %>, notice: <%= "'#{human_name} was successfully created.'" %> } - format.json { render json: <%= "@#{singular_table_name}" %>, :status: :created, location: <%= "@#{singular_table_name}" %> } + format.json { render json: <%= "@#{singular_table_name}" %>, status: :created, location: <%= "@#{singular_table_name}" %> } else format.html { render action: "new" } - format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity %> } + format.json { render json: <%= "@#{orm_instance.errors}" %>, status: :unprocessable_entity } end end end -- cgit v1.2.3 From 6db930cb5bbff9ad824590b5844e04768de240b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 14 Mar 2012 22:30:01 +0100 Subject: Remove --http. --- railties/lib/rails/configuration.rb | 20 -------- railties/lib/rails/generators.rb | 23 +-------- .../rails/generators/rails/app/app_generator.rb | 8 --- .../app/controllers/application_controller.rb.tt | 6 +-- .../rails/app/templates/config/application.rb | 9 ---- .../rails/resource/resource_generator.rb | 1 - .../scaffold_controller_generator.rb | 3 +- .../templates/http_controller.rb | 60 ---------------------- .../test_unit/scaffold/scaffold_generator.rb | 6 +-- .../scaffold/templates/http_functional_test.rb | 50 ------------------ 10 files changed, 7 insertions(+), 179 deletions(-) delete mode 100644 railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb delete mode 100644 railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 0fb463c44d..d81206bdc6 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -6,20 +6,6 @@ require 'rails/rack' module Rails module Configuration - module HttpOnly #:nodoc: - def initialize - @http_only = false - end - - def http_only! - @http_only = true - end - - def http_only? - @http_only - end - end - # MiddlewareStackProxy is a proxy for the Rails middleware stack that allows # you to configure middlewares in your application. It works basically as a # command recorder, saving each command to be applied after initialization @@ -58,10 +44,7 @@ module Rails # Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You # can always add any of them later manually if you want. class MiddlewareStackProxy - include HttpOnly - def initialize - super @operations = [] end @@ -99,10 +82,7 @@ module Rails attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging attr_reader :hidden_namespaces - include HttpOnly - def initialize - super @aliases = Hash.new { |h,k| h[k] = {} } @options = Hash.new { |h,k| h[k] = {} } @fallbacks = {} diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 3965e05823..b9c1b01f54 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -46,7 +46,6 @@ module Rails :assets => true, :force_plural => false, :helper => true, - :http => false, :integration_tool => nil, :javascripts => true, :javascript_engine => :js, @@ -62,7 +61,6 @@ module Rails } def self.configure!(config) #:nodoc: - http_only! if config.http_only? no_color! unless config.colorize_logging aliases.deep_merge! config.aliases options.deep_merge! config.options @@ -72,7 +70,7 @@ module Rails hide_namespaces(*config.hidden_namespaces) end - def self.templates_path + def self.templates_path #:nodoc: @templates_path ||= [] end @@ -106,25 +104,6 @@ module Rails Thor::Base.shell = Thor::Shell::Basic end - # Configure generators for http only applications. It basically hides - # everything that is usually browser related, such as assets and session - # migration generators, and completely disable views, helpers and assets - # so generators such as scaffold won't create them. - def self.http_only! - hide_namespaces "assets", "css", "js", "session_migration" - - options[:rails].merge!( - :assets => false, - :helper => false, - :http => true, - :javascripts => false, - :javascript_engine => nil, - :stylesheets => false, - :stylesheet_engine => nil, - :template_engine => nil - ) - end - # Track all generators subclasses. def self.subclasses @subclasses ||= [] diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index ffdfb32aba..f0745df667 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -144,9 +144,6 @@ module Rails class AppGenerator < AppBase add_shared_options_for "application" - class_option :http, :type => :boolean, :default => false, - :desc => "Preconfigure smaller stack for HTTP only apps" - # Add bin/rails options class_option :version, :type => :boolean, :aliases => "-v", :group => :rails, :desc => "Show Rails version number and quit" @@ -159,10 +156,6 @@ module Rails if !options[:skip_active_record] && !DATABASES.include?(options[:database]) raise Error, "Invalid value for --database option. Supported for preconfiguration are: #{DATABASES.join(", ")}." end - - # Force sprockets to be skipped when generating http only app. - # Can't modify options hash as it's frozen by default. - self.options = options.merge(:skip_sprockets => true).freeze if options.http? end public_task :create_root @@ -177,7 +170,6 @@ module Rails def create_app_files build(:app) - remove_file("app/views") if options.http? end def create_config_files diff --git a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt index 4dc85ec156..3ddc86ae0a 100644 --- a/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/app/controllers/application_controller.rb.tt @@ -1,5 +1,5 @@ -class ApplicationController < ActionController::<%= options.http? ? "HTTP" : "Base" %> +class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :reset_session instead. - <%= comment_if :http %>protect_from_forgery :with => :exception -end + protect_from_forgery :with => :exception +end \ No newline at end of file diff --git a/railties/lib/rails/generators/rails/app/templates/config/application.rb b/railties/lib/rails/generators/rails/app/templates/config/application.rb index ba3785be35..c8a3c13b95 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/application.rb +++ b/railties/lib/rails/generators/rails/app/templates/config/application.rb @@ -66,15 +66,6 @@ module <%= app_const_base %> # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' -<% end -%> -<% if options.http? -%> - - # Only loads a smaller set of middleware suitable for HTTP only apps. - # Middleware like session, flash, cookies can be added back manually. - config.middleware.http_only! - - # Skip views, helpers and assets when generating a new resource. - config.generators.http_only! <% end -%> end end diff --git a/railties/lib/rails/generators/rails/resource/resource_generator.rb b/railties/lib/rails/generators/rails/resource/resource_generator.rb index 11326388b4..7c7b289d19 100644 --- a/railties/lib/rails/generators/rails/resource/resource_generator.rb +++ b/railties/lib/rails/generators/rails/resource/resource_generator.rb @@ -21,7 +21,6 @@ module Rails return if options[:actions].present? route_config = regular_class_path.collect{ |namespace| "namespace :#{namespace} do " }.join(" ") route_config << "resources :#{file_name.pluralize}" - route_config << ", except: :edit" if options.http? route_config << " end" * regular_class_path.size route route_config end diff --git a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb index 17d462fa40..083eb49d65 100644 --- a/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +++ b/railties/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb @@ -14,8 +14,7 @@ module Rails :desc => "Generate controller with HTTP actions only" def create_controller_files - template_file = options.http? ? "http_controller.rb" : "controller.rb" - template template_file, File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb") + template "controller.rb", File.join('app/controllers', class_path, "#{controller_file_name}_controller.rb") end hook_for :template_engine, :test_framework, :as => :scaffold diff --git a/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb b/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb deleted file mode 100644 index 3f44ac18a4..0000000000 --- a/railties/lib/rails/generators/rails/scaffold_controller/templates/http_controller.rb +++ /dev/null @@ -1,60 +0,0 @@ -<% module_namespacing do -%> -class <%= controller_class_name %>Controller < ApplicationController - # GET <%= route_url %> - # GET <%= route_url %>.json - def index - @<%= plural_table_name %> = <%= orm_class.all(class_name) %> - - render json: @<%= plural_table_name %> - end - - # GET <%= route_url %>/1 - # GET <%= route_url %>/1.json - def show - @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> - - render json: @<%= singular_table_name %> - end - - # GET <%= route_url %>/new - # GET <%= route_url %>/new.json - def new - @<%= singular_table_name %> = <%= orm_class.build(class_name) %> - - render json: @<%= singular_table_name %> - end - - # POST <%= route_url %> - # POST <%= route_url %>.json - def create - @<%= singular_table_name %> = <%= orm_class.build(class_name, "params[:#{singular_table_name}]") %> - - if @<%= orm_instance.save %> - render json: @<%= singular_table_name %>, status: :created, location: @<%= singular_table_name %> - else - render json: @<%= orm_instance.errors %>, status: :unprocessable_entity - end - end - - # PATCH/PUT <%= route_url %>/1 - # PATCH/PUT <%= route_url %>/1.json - def update - @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> - - if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %> - head :no_content - else - render json: @<%= orm_instance.errors %>, status: :unprocessable_entity - end - end - - # DELETE <%= route_url %>/1 - # DELETE <%= route_url %>/1.json - def destroy - @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> - @<%= orm_instance.destroy %> - - head :no_content - end -end -<% end -%> diff --git a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb index e875c81340..9e76587a0d 100644 --- a/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb @@ -14,10 +14,8 @@ module TestUnit :desc => "Generate functional test with HTTP actions only" def create_test_files - template_file = options.http? ? "http_functional_test.rb" : "functional_test.rb" - - template template_file, - File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb") + template "functional_test.rb", + File.join("test/functional", controller_class_path, "#{controller_file_name}_controller_test.rb") end private diff --git a/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb b/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb deleted file mode 100644 index 5bb61cb263..0000000000 --- a/railties/lib/rails/generators/test_unit/scaffold/templates/http_functional_test.rb +++ /dev/null @@ -1,50 +0,0 @@ -require 'test_helper' - -<% module_namespacing do -%> -class <%= controller_class_name %>ControllerTest < ActionController::TestCase - setup do - @<%= singular_table_name %> = <%= table_name %>(:one) - @request.accept = "application/json" - end - - test "should get index" do - get :index - assert_response :success - assert_not_nil assigns(:<%= table_name %>) - end - - test "should get new" do - get :new - assert_response :success - end - - test "should create <%= singular_table_name %>" do - assert_difference('<%= class_name %>.count') do - post :create, <%= "#{singular_table_name}: { #{attributes_hash} }" %> - end - - assert_response 201 - assert_not_nil assigns(:<%= singular_table_name %>) - end - - test "should show <%= singular_table_name %>" do - get :show, id: @<%= singular_table_name %> - assert_response :success - end - - test "should update <%= singular_table_name %>" do - put :update, id: @<%= singular_table_name %>, <%= "#{singular_table_name}: { #{attributes_hash} }" %> - assert_response 204 - assert_not_nil assigns(:<%= singular_table_name %>) - end - - test "should destroy <%= singular_table_name %>" do - assert_difference('<%= class_name %>.count', -1) do - delete :destroy, id: @<%= singular_table_name %> - end - - assert_response 204 - assert_not_nil assigns(:<%= singular_table_name %>) - end -end -<% end -%> -- cgit v1.2.3 From e1824c5991f0e694cf041c3aacd43a53ce97b0dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 14 Mar 2012 22:58:32 +0100 Subject: Remove remaining http_only? calls. --- railties/lib/rails/application.rb | 8 ++++---- railties/lib/rails/configuration.rb | 10 ---------- 2 files changed, 4 insertions(+), 14 deletions(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 3191fe68a7..8d64aff430 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.http_only? + middleware.use ::Rack::MethodOverride 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.http_only? + middleware.use ::ActionDispatch::Cookies - if !config.middleware.http_only? && config.session_store + if 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.http_only? && config.action_dispatch.best_standards_support + if 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 d81206bdc6..d8ca6cbd21 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -33,16 +33,6 @@ module Rails # # 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: - # - # 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 - # Cookies, Session and Flash, BestStandardsSupport, and MethodOverride. You - # can always add any of them later manually if you want. class MiddlewareStackProxy def initialize @operations = [] -- cgit v1.2.3 From fbc9d0f44f090a9873834f4966760c3e80682559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 15 Mar 2012 08:48:38 +0100 Subject: Simplify helpers handling. Ensure Metal can run AC hooks. --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 9629ac55c2..131d6e5711 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -561,7 +561,7 @@ module Rails initializer :add_view_paths do views = paths["app/views"].existent unless views.empty? - ActiveSupport.on_load(:action_controller){ prepend_view_path(views) } + ActiveSupport.on_load(:action_controller){ prepend_view_path(views) if respond_to?(:prepend_view_path) } ActiveSupport.on_load(:action_mailer){ prepend_view_path(views) } end end -- cgit v1.2.3