diff options
Diffstat (limited to 'railties/lib')
24 files changed, 79 insertions, 100 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 0084309ea4..38a5aa8ca3 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -1,3 +1,4 @@ +require 'active_support/core_ext/hash/reverse_merge' require 'fileutils' require 'rails/plugin' require 'rails/engine' @@ -128,8 +129,14 @@ module Rails end def call(env) - env["action_dispatch.parameter_filter"] = config.filter_parameters - app.call(env) + app.call(env.reverse_merge!(env_defaults)) + end + + def env_defaults + @env_defaults ||= { + "action_dispatch.parameter_filter" => config.filter_parameters, + "action_dispatch.secret_token" => config.secret_token + } end def initializers diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index 5c7de616be..d3e4742e8a 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -6,7 +6,7 @@ module Rails include ::Rails::Configuration::Deprecated attr_accessor :allow_concurrency, :cache_classes, :cache_store, - :cookie_secret, :consider_all_requests_local, :dependency_loading, + :secret_token, :consider_all_requests_local, :dependency_loading, :filter_parameters, :log_level, :logger, :metals, :plugins, :preload_frameworks, :reload_engines, :reload_plugins, :serve_static_assets, :time_zone, :whiny_nils @@ -37,6 +37,7 @@ module Rails paths.app.controllers << builtin_controller if builtin_controller paths.config.database "config/database.yml" paths.config.environment "config/environments", :glob => "#{Rails.env}.rb" + paths.lib.templates "lib/templates" paths.log "log/#{Rails.env}.log" paths.tmp "tmp" paths.tmp.cache "tmp/cache" @@ -123,7 +124,7 @@ module Rails def session_options return @session_options unless @session_store == :cookie_store - @session_options.merge(:secret => @cookie_secret) + @session_options.merge(:secret => @secret_token) end def default_middleware_stack diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 978490f25f..94507bb387 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -3,6 +3,10 @@ module Rails module Finisher include Initializable + initializer :add_generator_templates do + config.generators.templates.unshift(*paths.lib.templates.to_a) + end + initializer :ensure_load_once_paths_as_subset do extra = ActiveSupport::Dependencies.load_once_paths - ActiveSupport::Dependencies.load_paths diff --git a/railties/lib/rails/backtrace_cleaner.rb b/railties/lib/rails/backtrace_cleaner.rb index 14eccd5a6a..ee2635d4cd 100644 --- a/railties/lib/rails/backtrace_cleaner.rb +++ b/railties/lib/rails/backtrace_cleaner.rb @@ -13,7 +13,7 @@ module Rails add_gem_filters - add_silencer { |line| !APP_DIRS.any? { |dir| line =~ /^#{dir}/ } } + add_silencer { |line| !APP_DIRS.any? { |dir| line =~ /^\/?#{dir}/ } } end private diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 73ae9bcb16..dfd849b4bb 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -104,6 +104,18 @@ module Rails "please do paths.app.controllers instead", caller paths.app.controllers.to_a.uniq end + + def cookie_secret=(value) + ActiveSupport::Deprecation.warn "config.cookie_secret= is deprecated, " << + "please use config.secret_token= instead", caller + self.secret_token = value + end + + def cookie_secret + ActiveSupport::Deprecation.warn "config.cookie_secret is deprecated, " << + "please use config.secret_token instead", caller + self.secret_token + end end end end diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index e9013348b5..c284840a38 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -20,7 +20,6 @@ module Rails # # lib/my_engine.rb # module MyEngine # class Engine < Rails::Engine - # engine_name :my_engine # end # end # @@ -38,11 +37,12 @@ module Rails # Example: # # class MyEngine < Rails::Engine - # # config.middleware is shared configururation - # config.middleware.use MyEngine::Middleware - # # # Add a load path for this specific Engine # config.load_paths << File.expand_path("../lib/some/path", __FILE__) + # + # initializer "my_engine.add_middleware" do |app| + # app.middlewares.use MyEngine::Middleware + # end # end # # == Paths @@ -193,17 +193,13 @@ module Rails app.metal_loader.paths.unshift(*paths.app.metals.to_a) end - initializer :add_generator_templates do |app| - config.generators.templates.unshift(*paths.lib.templates.to_a) - end - - initializer :load_application_initializers do + initializer :load_config_initializers do paths.config.initializers.to_a.sort.each do |initializer| load(initializer) end end - initializer :load_application_classes do |app| + initializer :load_app_classes do |app| next if $rails_rake_task if app.config.cache_classes diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index b8f1f1009c..28e7ef947d 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -20,10 +20,9 @@ module Rails paths.app.models "app/models", :eager_load => true paths.app.mailers "app/mailers", :eager_load => true paths.app.metals "app/metal", :eager_load => true - paths.app.views "app/views", :eager_load => true + paths.app.views "app/views" paths.lib "lib", :load_path => true paths.lib.tasks "lib/tasks", :glob => "**/*.rake" - paths.lib.templates "lib/templates" paths.config "config" paths.config.initializers "config/initializers", :glob => "**/*.rb" paths.config.locales "config/locales", :glob => "*.{rb,yml}" diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 57462707f4..5f93dbf18f 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -3,7 +3,7 @@ $:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.inc require 'active_support' require 'active_support/core_ext/object/blank' -require 'active_support/core_ext/object/singleton_class' +require 'active_support/core_ext/kernel/singleton_class' require 'active_support/core_ext/array/extract_options' require 'active_support/core_ext/hash/deep_merge' require 'active_support/core_ext/module/attribute_accessors' @@ -26,7 +26,6 @@ module Rails :orm => '-o', :resource_controller => '-c', :scaffold_controller => '-c', - :stylesheets => '-y', :template_engine => '-e', :test_framework => '-t' }, @@ -42,21 +41,15 @@ module Rails } DEFAULT_OPTIONS = { - :erb => { - :layout => true - }, - :rails => { :force_plural => false, :helper => true, - :layout => true, :orm => nil, :integration_tool => nil, :performance_tool => nil, :resource_controller => :controller, :scaffold_controller => :scaffold_controller, :singleton => false, - :stylesheets => true, :test_framework => nil, :template_engine => :erb }, diff --git a/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb index f607e580a5..2db7f7bbf3 100644 --- a/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb @@ -8,7 +8,6 @@ module Erb argument :attributes, :type => :array, :default => [], :banner => "field:type field:type" - class_option :layout, :type => :boolean class_option :singleton, :type => :boolean, :desc => "Supply to skip index view" def create_root_folder @@ -25,12 +24,6 @@ module Erb end end - def copy_layout_file - return unless options[:layout] - template filename_with_extensions(:layout), - File.join("app/views/layouts", controller_class_path, filename_with_extensions(controller_file_name)) - end - protected def available_views diff --git a/railties/lib/rails/generators/erb/scaffold/templates/layout.html.erb b/railties/lib/rails/generators/erb/scaffold/templates/layout.html.erb deleted file mode 100644 index 3f64be0c45..0000000000 --- a/railties/lib/rails/generators/erb/scaffold/templates/layout.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <title><%= controller_class_name %>: <%%= controller.action_name %></title> - <%%= stylesheet_link_tag 'scaffold' %> - <%%= javascript_include_tag :defaults %> - <%%= csrf_meta_tag %> -</head> -<body> - -<p class="notice"><%%= notice %></p> -<p class="alert"><%%= alert %></p> - -<%%= yield %> - -</body> -</html> diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index fbad3c9ef1..df6e98f38d 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -137,7 +137,7 @@ module Rails::Generators end def create_public_stylesheets_files - empty_directory_with_gitkeep "public/stylesheets" + directory "public/stylesheets" end def create_prototype_files 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..f2569b3a77 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,4 @@ class ApplicationController < ActionController::Base protect_from_forgery + layout 'application' end diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/.empty_directory b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/.empty_directory deleted file mode 100644 index e69de29bb2..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/.empty_directory +++ /dev/null diff --git a/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb new file mode 100644 index 0000000000..6b87d9d3ec --- /dev/null +++ b/railties/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<head> + <title><%= controller_name.humanize %>: <%= action_name %></title> + <%= stylesheet_link_tag 'application' %> + <%= javascript_include_tag :defaults %> + <%= csrf_meta_tag %> +</head> +<body> + +<p class="notice"><%= notice %></p> +<p class="alert"><%= alert %></p> + +<%=raw yield %> + +</body> +</html> diff --git a/railties/lib/rails/generators/rails/app/templates/config/initializers/cookie_verification_secret.rb.tt b/railties/lib/rails/generators/rails/app/templates/config/initializers/secret_token.rb.tt index be627fbbcc..c2fa31aadb 100644 --- a/railties/lib/rails/generators/rails/app/templates/config/initializers/cookie_verification_secret.rb.tt +++ b/railties/lib/rails/generators/rails/app/templates/config/initializers/secret_token.rb.tt @@ -4,4 +4,4 @@ # If you change this key, all old signed cookies will become invalid! # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. -Rails.application.config.cookie_secret = '<%= app_secret %>' +Rails.application.config.secret_token = '<%= app_secret %>' 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 9e32fb930e..a869a21e2c 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,8 +1,6 @@ # Be sure to restart your server when you modify this file. -Rails.application.config.session_store :cookie_store, { - :key => '_<%= app_name %>_session', -} +Rails.application.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/public/stylesheets/.empty_directory b/railties/lib/rails/generators/rails/app/templates/public/stylesheets/.empty_directory deleted file mode 100644 index e69de29bb2..0000000000 --- a/railties/lib/rails/generators/rails/app/templates/public/stylesheets/.empty_directory +++ /dev/null diff --git a/railties/lib/rails/generators/rails/stylesheets/templates/scaffold.css b/railties/lib/rails/generators/rails/app/templates/public/stylesheets/application.css index ea3dc9b8b5..ea3dc9b8b5 100644 --- a/railties/lib/rails/generators/rails/stylesheets/templates/scaffold.css +++ b/railties/lib/rails/generators/rails/app/templates/public/stylesheets/application.css diff --git a/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb index 779f933785..bd156f399c 100644 --- a/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/rails/scaffold/scaffold_generator.rb @@ -7,7 +7,6 @@ module Rails remove_class_option :actions hook_for :scaffold_controller, :required => true - hook_for :stylesheets end end end diff --git a/railties/lib/rails/generators/rails/stylesheets/USAGE b/railties/lib/rails/generators/rails/stylesheets/USAGE deleted file mode 100644 index 59e5495d0b..0000000000 --- a/railties/lib/rails/generators/rails/stylesheets/USAGE +++ /dev/null @@ -1,5 +0,0 @@ -Description: - Copies scaffold stylesheets to public/stylesheets/. - -Examples: - `rails generate stylesheets` diff --git a/railties/lib/rails/generators/rails/stylesheets/stylesheets_generator.rb b/railties/lib/rails/generators/rails/stylesheets/stylesheets_generator.rb deleted file mode 100644 index ce68443c39..0000000000 --- a/railties/lib/rails/generators/rails/stylesheets/stylesheets_generator.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Rails - module Generators - class StylesheetsGenerator < Base - def copy_stylesheets_file - template "scaffold.css", "public/stylesheets/scaffold.css" if behavior == :invoke - end - end - end -end diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb index 55874813da..1c9e308631 100644 --- a/railties/lib/rails/paths.rb +++ b/railties/lib/rails/paths.rb @@ -3,6 +3,8 @@ require 'set' module Rails module Paths module PathParent + attr_reader :children + def method_missing(id, *args) name = id.to_s @@ -37,15 +39,15 @@ module Rails end def load_once - filter { |path| path.paths if path.load_once? } + filter_by(:load_once?) end def eager_load - filter { |path| path.paths if path.eager_load? } + filter_by(:eager_load?) end def load_paths - filter { |path| path.paths if path.load_path? } + filter_by(:load_path?) end def push(*) @@ -58,8 +60,16 @@ module Rails protected - def filter(&block) - all_paths.map(&block).compact.flatten.uniq.select { |p| File.exists?(p) } + def filter_by(constraint) + all_paths.map do |path| + if path.send(constraint) + paths = path.paths + paths -= path.children.values.map { |p| p.send(constraint) ? [] : p.paths }.flatten + paths + else + [] + end + end.flatten.uniq.select { |p| File.exists?(p) } end end @@ -129,10 +139,12 @@ module Rails def paths raise "You need to set a path root" unless @root.path + result = @paths.map do |p| path = File.expand_path(p, @root.path) @glob ? Dir[File.join(path, @glob)] : path end + result.flatten! result.uniq! result diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb index 0997be1b6f..fcdd099135 100644 --- a/railties/lib/rails/plugin.rb +++ b/railties/lib/rails/plugin.rb @@ -61,7 +61,7 @@ module Rails @config ||= Engine::Configuration.new end - initializer :load_init_rb, :before => :load_application_initializers do |app| + initializer :load_init_rb, :before => :load_config_initializers do |app| files = %w(rails/init.rb init.rb).map { |path| File.expand_path path, root } if initrb = files.find { |path| File.file? path } if initrb == files.first diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb index 0d68abb323..6ac6be092e 100644 --- a/railties/lib/rails/railtie.rb +++ b/railties/lib/rails/railtie.rb @@ -39,7 +39,6 @@ module Rails # # lib/my_gem/railtie.rb # module MyGem # class Railtie < Rails::Railtie - # railtie_name :mygem # end # end # @@ -51,24 +50,8 @@ module Rails # # module MyGem # class Railtie < Rails::Railtie - # railtie_name :mygem # end # end - # - # * Make sure your Gem loads the railtie.rb file if Rails is loaded first, an easy - # way to check is by checking for the Rails constant which will exist if Rails - # has started: - # - # # lib/my_gem.rb - # module MyGem - # require 'lib/my_gem/railtie' if defined?(Rails) - # end - # - # * Or instead of doing the require automatically, you can ask your users to require - # it for you in their Gemfile: - # - # # #{USER_RAILS_ROOT}/Gemfile - # gem "my_gem", :require_as => ["my_gem", "my_gem/railtie"] # # == Initializers # @@ -82,13 +65,11 @@ module Rails # end # # If specified, the block can also receive the application object, in case you - # need to access some application specific configuration: + # need to access some application specific configuration, like middleware: # # class MyRailtie < Rails::Railtie # initializer "my_railtie.configure_rails_initialization" do |app| - # if app.config.cache_classes - # # some initialization behavior - # end + # app.middlewares.use MyRailtie::Middleware # end # end # @@ -104,9 +85,6 @@ module Rails # # Customize the ORM # config.generators.orm :my_railtie_orm # - # # Add a middleware - # config.middlewares.use MyRailtie::Middleware - # # # Add a to_prepare block which is executed once in production # # and before which request in development # config.to_prepare do @@ -160,7 +138,7 @@ module Rails # By registering it: # # class MyRailtie < Railtie - # subscriber MyRailtie::Subscriber.new + # subscriber :my_gem, MyRailtie::Subscriber.new # end # # Take a look in Rails::Subscriber docs for more information. |