From afc828828ffffe7edeb4648a9d2aa4731191ae21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Apr 2011 19:57:52 +0200 Subject: Remove the ability for engines to serve assets from the public directory. --- railties/lib/rails/application.rb | 8 +-- railties/lib/rails/application/configuration.rb | 16 +++--- railties/lib/rails/engine.rb | 74 +++---------------------- railties/lib/rails/engine/configuration.rb | 9 +-- railties/lib/rails/railtie/configuration.rb | 7 --- railties/lib/rails/tasks.rb | 1 - railties/lib/rails/tasks/railties.rake | 29 ---------- 7 files changed, 18 insertions(+), 126 deletions(-) delete mode 100644 railties/lib/rails/tasks/railties.rake (limited to 'railties/lib/rails') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 580f29b767..9bdf18bf79 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -121,7 +121,6 @@ module Rails @env_config ||= super.merge({ "action_dispatch.parameter_filter" => config.filter_parameters, "action_dispatch.secret_token" => config.secret_token, - "action_dispatch.asset_path" => nil, "action_dispatch.show_exceptions" => config.action_dispatch.show_exceptions }) end @@ -149,10 +148,6 @@ module Rails @assets = env end - def default_asset_path - nil - end - def default_middleware_stack ActionDispatch::MiddlewareStack.new.tap do |middleware| if rack_cache = config.action_controller.perform_caching && config.action_dispatch.rack_cache @@ -166,8 +161,7 @@ module Rails end if config.serve_static_assets - asset_paths = ActiveSupport::OrderedHash[config.static_asset_paths.to_a.reverse] - middleware.use ::ActionDispatch::Static, asset_paths + middleware.use ::ActionDispatch::Static, "/" => paths["public"].first end middleware.use ::Rack::Lock unless config.allow_concurrency diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index 4a042e0033..e5476fbe7a 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -4,13 +4,12 @@ require 'rails/engine/configuration' module Rails class Application class Configuration < ::Rails::Engine::Configuration - attr_accessor :allow_concurrency, :asset_host, :cache_classes, :cache_store, - :encoding, :consider_all_requests_local, :dependency_loading, - :filter_parameters, :helpers_paths, :logger, - :preload_frameworks, :reload_plugins, - :secret_token, :serve_static_assets, :session_options, - :time_zone, :whiny_nils, :force_ssl, - :assets + attr_accessor :allow_concurrency, :asset_host, :asset_path, :assets, + :cache_classes, :cache_store, :consider_all_requests_local, + :dependency_loading, :encoding, :filter_parameters, + :force_ssl, :helpers_paths, :logger, :preload_frameworks, + :reload_plugins, :secret_token, :serve_static_assets, + :session_options, :time_zone, :whiny_nils attr_writer :log_level @@ -63,6 +62,9 @@ module Rails paths.add "config/environment", :with => "config/environment.rb" paths.add "lib/templates" paths.add "log", :with => "log/#{Rails.env}.log" + paths.add "public" + paths.add "public/javascripts" + paths.add "public/stylesheets" paths.add "tmp" paths.add "tmp/cache" paths diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index cbf09790ab..87385814f7 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -171,32 +171,6 @@ module Rails # # Now, +Engine+ will get only requests that were not handled by +Application+. # - # == Asset path - # - # When you use +Engine+ with its own public directory, you will probably want to copy or symlink it - # to application's public directory. To simplify generating paths for assets, you can set asset_path - # for an engine: - # - # module MyEngine - # class Engine < Rails::Engine - # config.asset_path = "/my_engine/%s" - # end - # end - # - # With such a config, asset paths will be automatically modified inside +Engine+: - # - # image_path("foo.jpg") #=> "/my_engine/images/foo.jpg" - # - # == Serving static files - # - # By default, Rails uses ActionDispatch::Static to serve static files in development mode. This is ok - # while you develop your application, but when you want to deploy it, assets from an engine will not be - # served by default. You should choose one of the two following strategies: - # - # * enable serving static files by setting config.serve_static_assets to true - # * copy engine's public files to application's public folder with rake ENGINE_NAME:install:assets, for example - # rake my_engine:install:assets - # # == Engine name # # There are some places where an Engine's name is used: @@ -427,8 +401,7 @@ module Rails def env_config @env_config ||= { - 'action_dispatch.routes' => routes, - 'action_dispatch.asset_path' => config.asset_path + 'action_dispatch.routes' => routes } end @@ -509,16 +482,7 @@ module Rails require environment if environment end - initializer :append_asset_paths do - config.asset_path ||= default_asset_path - - public_path = paths["public"].first - if config.compiled_asset_path && File.exist?(public_path) - config.static_asset_paths[config.compiled_asset_path] = public_path - end - end - - initializer :append_app_assets_path do |app| + initializer :append_assets_path do |app| app.config.assets.paths.unshift *paths["vendor/assets"].existent app.config.assets.paths.unshift *paths["app/assets"].existent end @@ -542,30 +506,14 @@ module Rails rake_tasks do next if self.is_a?(Rails::Application) - next unless has_migrations? or has_public? + next unless has_migrations? namespace railtie_name do - desc "Shortcut for copying migrations and assets from #{railtie_name}" - task :install do - Rake::Task["#{railtie_name}:install:migrations"].invoke if has_migrations? - Rake::Task["#{railtie_name}:install:public"].invoke if has_public? - end - namespace :install do - if has_migrations? - desc "Copy migrations from #{railtie_name} to application" - task :migrations do - ENV["FROM"] = railtie_name - Rake::Task["railties:install:migrations"].invoke - end - end - - if has_public? - desc "Copy public from #{railtie_name} to application" - task :public do - ENV["FROM"] = railtie_name - Rake::Task["railties:install:public"].invoke - end + desc "Copy migrations from #{railtie_name} to application" + task :migrations do + ENV["FROM"] = railtie_name + Rake::Task["railties:install:migrations"].invoke end end end @@ -573,10 +521,6 @@ module Rails protected - def default_asset_path - "/#{railtie_name}%s" - end - def routes? defined?(@routes) end @@ -585,10 +529,6 @@ module Rails paths["db/migrate"].first.present? end - def has_public? - paths["public"].first.present? - end - def find_root_with_flag(flag, default=nil) root_path = self.class.called_from diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index 83f12d137b..241db4b0a9 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -5,7 +5,7 @@ module Rails class Configuration < ::Rails::Railtie::Configuration attr_reader :root attr_writer :middleware, :eager_load_paths, :autoload_once_paths, :autoload_paths - attr_accessor :plugins, :asset_path + attr_accessor :plugins def initialize(root=nil) super() @@ -56,9 +56,6 @@ module Rails paths.add "db" paths.add "db/migrate" paths.add "db/seeds", :with => "db/seeds.rb" - paths.add "public" - paths.add "public/javascripts" - paths.add "public/stylesheets" paths.add "vendor", :load_path => true paths.add "vendor/assets", :glob => "*" paths.add "vendor/plugins" @@ -81,10 +78,6 @@ module Rails def autoload_paths @autoload_paths ||= paths.autoload_paths end - - def compiled_asset_path - asset_path % "" if asset_path - end end end end diff --git a/railties/lib/rails/railtie/configuration.rb b/railties/lib/rails/railtie/configuration.rb index 2c7b5bc048..bfd2a73aeb 100644 --- a/railties/lib/rails/railtie/configuration.rb +++ b/railties/lib/rails/railtie/configuration.rb @@ -67,13 +67,6 @@ module Rails super || @@options.key?(name.to_sym) end - # static_asset_paths is a Hash containing asset_paths - # with associated public folders, like: - # { "/" => "/app/public", "/my_engine" => "app/engines/my_engine/public" } - def static_asset_paths - @@static_asset_paths ||= ActiveSupport::OrderedHash.new - end - private def method_missing(name, *args, &blk) diff --git a/railties/lib/rails/tasks.rb b/railties/lib/rails/tasks.rb index 4d09b0c2c0..166d518f7c 100644 --- a/railties/lib/rails/tasks.rb +++ b/railties/lib/rails/tasks.rb @@ -12,7 +12,6 @@ $VERBOSE = nil routes statistics tmp - railties ).each do |task| load "rails/tasks/#{task}.rake" end diff --git a/railties/lib/rails/tasks/railties.rake b/railties/lib/rails/tasks/railties.rake deleted file mode 100644 index 7d2170dd30..0000000000 --- a/railties/lib/rails/tasks/railties.rake +++ /dev/null @@ -1,29 +0,0 @@ -namespace :railties do - namespace :install do - # desc "Copies missing assets from Railties (e.g. plugins, engines). You can specify Railties to use with FROM=railtie1,railtie2" - task :public => :rails_env do - require 'rails/generators/base' - Rails.application.initialize! - - to_load = ENV["FROM"].blank? ? :all : ENV["FROM"].split(",").map {|n| n.strip } - app_public_path = Rails.application.paths["public"].first - - Rails.application.railties.all do |railtie| - next unless to_load == :all || to_load.include?(railtie.railtie_name) - - if railtie.respond_to?(:paths) && (path = railtie.paths["public"].first) && - (assets_dir = railtie.config.compiled_asset_path) && File.exist?(path) - - Rails::Generators::Base.source_root(path) - copier = Rails::Generators::Base.new - Dir[File.join(path, "**/*")].each do |file| - relative = file.gsub(/^#{path}\//, '') - if File.file?(file) - copier.copy_file relative, File.join(app_public_path, assets_dir, relative) - end - end - end - end - end - end -end -- cgit v1.2.3