From 411c15ed5220cb07cfb1989d32be956f94a7478f Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Sun, 14 Feb 2010 11:55:01 -0800 Subject: require Strings, not Symbols --- railties/lib/rails/application/metal_loader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/application/metal_loader.rb b/railties/lib/rails/application/metal_loader.rb index c0f2e4f948..2a43fa7892 100644 --- a/railties/lib/rails/application/metal_loader.rb +++ b/railties/lib/rails/application/metal_loader.rb @@ -34,7 +34,7 @@ module Rails Dir.glob("#{path}/**/*.rb").sort.each do |metal_path| metal = metal_path.sub(matcher, '\1').to_sym next unless list.include?(metal) || list.include?(:all) - require_dependency metal + require_dependency metal.to_s metals << metal end end -- cgit v1.2.3 From eec2d301d4ce9df9c71c1a5aa63053eb970b6818 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 15 Feb 2010 10:20:11 -0600 Subject: Fix test load paths for those not using bundler --- railties/Rakefile | 2 +- railties/test/abstract_unit.rb | 7 ++++++- railties/test/application/configuration_test.rb | 2 +- railties/test/edge_rails.rb | 14 ++++++++++++++ railties/test/isolation/abstract_unit.rb | 14 ++++---------- 5 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 railties/test/edge_rails.rb (limited to 'railties') diff --git a/railties/Rakefile b/railties/Rakefile index f32a794544..d4b446bc24 100644 --- a/railties/Rakefile +++ b/railties/Rakefile @@ -1,4 +1,4 @@ -require File.expand_path('../../load_paths', __FILE__) +require File.expand_path('../../bundler', __FILE__) require 'rake' require 'rake/testtask' diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb index aa66dbb9be..2ac165fc49 100644 --- a/railties/test/abstract_unit.rb +++ b/railties/test/abstract_unit.rb @@ -1,8 +1,13 @@ ORIG_ARGV = ARGV.dup -require File.expand_path("../../../load_paths", __FILE__) +require File.expand_path("../../../bundler", __FILE__) $:.unshift File.expand_path("../../builtin/rails_info", __FILE__) +lib = File.expand_path("#{File.dirname(__FILE__)}/../lib") +$:.unshift(lib) unless $:.include?('lib') || $:.include?(lib) + +require 'edge_rails' + require 'stringio' require 'test/unit' require 'fileutils' diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 56f45582c8..7ca605ec23 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -140,7 +140,7 @@ module ApplicationTests require "#{app_path}/config/environment" end end - + test "filter_parameters should be able to set via config.filter_parameters" do add_to_config <<-RUBY config.filter_parameters += [ :foo, 'bar', lambda { |key, value| diff --git a/railties/test/edge_rails.rb b/railties/test/edge_rails.rb new file mode 100644 index 0000000000..bd8a674738 --- /dev/null +++ b/railties/test/edge_rails.rb @@ -0,0 +1,14 @@ +require File.expand_path('../../../bundler', __FILE__) + +%w( + actionmailer + actionpack + activemodel + activerecord + activeresource + activesupport + railties +).each do |framework| + framework_path = File.expand_path("../../../#{framework}/lib", __FILE__) + $:.unshift(framework_path) if File.directory?(framework_path) && !$:.include?(framework_path) +end diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb index 364dbd8e55..f3c1d64f7b 100644 --- a/railties/test/isolation/abstract_unit.rb +++ b/railties/test/isolation/abstract_unit.rb @@ -187,7 +187,7 @@ module TestHelpers end def boot_rails - require File.expand_path('../../../../load_paths', __FILE__) + require File.expand_path('../../edge_rails', __FILE__) end end end @@ -208,18 +208,12 @@ Module.new do end FileUtils.mkdir(tmp_path) - environment = File.expand_path('../../../../load_paths', __FILE__) - if File.exist?("#{environment}.rb") - require_environment = "-r #{environment}" - end + environment = File.expand_path('../../edge_rails', __FILE__) + require_environment = "-r #{environment}" `#{Gem.ruby} #{require_environment} #{RAILS_FRAMEWORK_ROOT}/railties/bin/rails #{tmp_path('app_template')}` File.open("#{tmp_path}/app_template/config/boot.rb", 'w') do |f| - if require_environment - f.puts "Dir.chdir('#{File.dirname(environment)}') do" - f.puts " require '#{environment}'" - f.puts "end" - end + f.puts "require '#{environment}'" f.puts "require 'rails/all'" end end -- cgit v1.2.3 From f0523f72b46db14e2f50c8347a8708734c650f84 Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Mon, 15 Feb 2010 21:44:30 +0700 Subject: Rename Rails::Subscriber to Rails::LogSubscriber --- railties/guides/source/3_0_release_notes.textile | 2 +- railties/lib/rails.rb | 2 +- railties/lib/rails/application/bootstrap.rb | 8 +- railties/lib/rails/log_subscriber.rb | 108 +++++++++++++++++++ railties/lib/rails/log_subscriber/test_helper.rb | 98 +++++++++++++++++ railties/lib/rails/rack/logger.rb | 6 +- railties/lib/rails/railtie.rb | 4 +- railties/lib/rails/subscriber.rb | 108 ------------------- railties/lib/rails/subscriber/test_helper.rb | 98 ----------------- .../application/initializers/notifications_test.rb | 2 +- railties/test/log_subscriber_test.rb | 119 +++++++++++++++++++++ railties/test/railties/railtie_test.rb | 8 +- railties/test/subscriber_test.rb | 119 --------------------- 13 files changed, 341 insertions(+), 341 deletions(-) create mode 100644 railties/lib/rails/log_subscriber.rb create mode 100644 railties/lib/rails/log_subscriber/test_helper.rb delete mode 100644 railties/lib/rails/subscriber.rb delete mode 100644 railties/lib/rails/subscriber/test_helper.rb create mode 100644 railties/test/log_subscriber_test.rb delete mode 100644 railties/test/subscriber_test.rb (limited to 'railties') diff --git a/railties/guides/source/3_0_release_notes.textile b/railties/guides/source/3_0_release_notes.textile index 639e775bf5..4b0dc72908 100644 --- a/railties/guides/source/3_0_release_notes.textile +++ b/railties/guides/source/3_0_release_notes.textile @@ -435,7 +435,7 @@ As well as the following deprecations: * I18n error messages for ActiveRecord should be changed from :en.activerecord.errors.template to :en.errors.template. * model.errors.on is deprecated in favour of model.errors[] * validates_presence_of => validates... :presence => true -* ActiveRecord::Base.colorize_logging and config.active_record.colorize_logging are deprecated in favour of Rails::Subscriber.colorize_logging or config.colorize_logging +* ActiveRecord::Base.colorize_logging and config.active_record.colorize_logging are deprecated in favour of Rails::LogSubscriber.colorize_logging or config.colorize_logging NOTE: While an implementation of State Machine has been in Active Record edge for some months now, it has been removed from the Rails 3.0 release. diff --git a/railties/lib/rails.rb b/railties/lib/rails.rb index b7a39fd5a7..3d3151bd8f 100644 --- a/railties/lib/rails.rb +++ b/railties/lib/rails.rb @@ -7,7 +7,7 @@ require 'active_support/core_ext/logger' require 'rails/application' require 'rails/version' require 'rails/deprecation' -require 'rails/subscriber' +require 'rails/log_subscriber' require 'rails/ruby_version_check' require 'active_support/railtie' diff --git a/railties/lib/rails/application/bootstrap.rb b/railties/lib/rails/application/bootstrap.rb index b20e53f2de..0714b34b31 100644 --- a/railties/lib/rails/application/bootstrap.rb +++ b/railties/lib/rails/application/bootstrap.rb @@ -49,17 +49,17 @@ module Rails end end - # Initialize rails subscriber on top of notifications. - initializer :initialize_subscriber do + # Initialize rails log subscriber on top of notifications. + initializer :initialize_log_subscriber do require 'active_support/notifications' if config.colorize_logging == false - Rails::Subscriber.colorize_logging = false + Rails::LogSubscriber.colorize_logging = false config.generators.colorize_logging = false end ActiveSupport::Notifications.subscribe do |*args| - Rails::Subscriber.dispatch(args) + Rails::LogSubscriber.dispatch(args) end end diff --git a/railties/lib/rails/log_subscriber.rb b/railties/lib/rails/log_subscriber.rb new file mode 100644 index 0000000000..c867b92b6b --- /dev/null +++ b/railties/lib/rails/log_subscriber.rb @@ -0,0 +1,108 @@ +require 'active_support/core_ext/class/inheritable_attributes' +require 'active_support/notifications' + +module Rails + # Rails::LogSubscriber is an object set to consume ActiveSupport::Notifications + # on initialization with solely purpose of logging. The log subscriber dispatches + # notifications to a regirested object based on its given namespace. + # + # An example would be ActiveRecord log subscriber responsible for logging queries: + # + # module ActiveRecord + # class Railtie + # class LogSubscriber < Rails::LogSubscriber + # def sql(event) + # "#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}" + # end + # end + # end + # end + # + # It's finally registed as: + # + # Rails::LogSubscriber.add :active_record, ActiveRecord::Railtie::LogSubscriber.new + # + # So whenever a "active_record.sql" notification arrive to Rails::LogSubscriber, + # it will properly dispatch the event (ActiveSupport::Notifications::Event) to + # the sql method. + # + # This is useful because it avoids spanning several log subscribers just for logging + # purposes(which slows down the main thread). Besides of providing a centralized + # facility on top of Rails.logger. + # + # Log subscriber also has some helpers to deal with logging and automatically flushes + # all logs when the request finishes (via action_dispatch.callback notification). + class LogSubscriber + mattr_accessor :colorize_logging + self.colorize_logging = true + + # Embed in a String to clear all previous ANSI sequences. + CLEAR = "\e[0m" + BOLD = "\e[1m" + + # Colors + BLACK = "\e[30m" + RED = "\e[31m" + GREEN = "\e[32m" + YELLOW = "\e[33m" + BLUE = "\e[34m" + MAGENTA = "\e[35m" + CYAN = "\e[36m" + WHITE = "\e[37m" + + def self.add(namespace, log_subscriber) + log_subscribers[namespace.to_sym] = log_subscriber + end + + def self.log_subscribers + @log_subscribers ||= {} + end + + def self.dispatch(args) + namespace, name = args[0].split(".") + log_subscriber = log_subscribers[namespace.to_sym] + + if log_subscriber.respond_to?(name) && log_subscriber.logger + begin + log_subscriber.send(name, ActiveSupport::Notifications::Event.new(*args)) + rescue Exception => e + Rails.logger.error "Could not log #{args[0].inspect} event. #{e.class}: #{e.message}" + end + end + end + + # Flush all log_subscribers' logger. + def self.flush_all! + loggers = log_subscribers.values.map(&:logger) + loggers.uniq! + loggers.each { |l| l.flush if l.respond_to?(:flush) } + end + + # By default, we use the Rails.logger for logging. + def logger + Rails.logger + end + + protected + + %w(info debug warn error fatal unknown).each do |level| + class_eval <<-METHOD, __FILE__, __LINE__ + 1 + def #{level}(*args, &block) + logger.#{level}(*args, &block) + end + METHOD + end + + # Set color by using a string or one of the defined constants. If a third + # option is set to true, it also adds bold to the string. This is based + # on Highline implementation and it automatically appends CLEAR to the end + # of the returned String. + # + def color(text, color, bold=false) + return text unless colorize_logging + color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol) + bold = bold ? BOLD : "" + "#{bold}#{color}#{text}#{CLEAR}" + end + end +end \ No newline at end of file diff --git a/railties/lib/rails/log_subscriber/test_helper.rb b/railties/lib/rails/log_subscriber/test_helper.rb new file mode 100644 index 0000000000..9ede56cad4 --- /dev/null +++ b/railties/lib/rails/log_subscriber/test_helper.rb @@ -0,0 +1,98 @@ +require 'rails/log_subscriber' + +module Rails + class LogSubscriber + # Provides some helpers to deal with testing log subscribers by setting up + # notifications. Take for instance ActiveRecord subscriber tests: + # + # class SyncLogSubscriberTest < ActiveSupport::TestCase + # include Rails::LogSubscriber::TestHelper + # Rails::LogSubscriber.add(:active_record, ActiveRecord::Railties::LogSubscriber.new) + # + # def test_basic_query_logging + # Developer.all + # wait + # assert_equal 1, @logger.logged(:debug).size + # assert_match /Developer Load/, @logger.logged(:debug).last + # assert_match /SELECT \* FROM "developers"/, @logger.logged(:debug).last + # end + # + # class SyncLogSubscriberTest < ActiveSupport::TestCase + # include Rails::LogSubscriber::SyncTestHelper + # include LogSubscriberTest + # end + # + # class AsyncLogSubscriberTest < ActiveSupport::TestCase + # include Rails::LogSubscriber::AsyncTestHelper + # include LogSubscriberTest + # end + # end + # + # All you need to do is to ensure that your log subscriber is added to Rails::Subscriber, + # as in the second line of the code above. The test helpers is reponsible for setting + # up the queue, subscriptions and turning colors in logs off. + # + # The messages are available in the @logger instance, which is a logger with limited + # powers (it actually do not send anything to your output), and you can collect them + # doing @logger.logged(level), where level is the level used in logging, like info, + # debug, warn and so on. + # + module TestHelper + def setup + @logger = MockLogger.new + @notifier = ActiveSupport::Notifications::Notifier.new(queue) + + Rails::LogSubscriber.colorize_logging = false + @notifier.subscribe { |*args| Rails::LogSubscriber.dispatch(args) } + + set_logger(@logger) + ActiveSupport::Notifications.notifier = @notifier + end + + def teardown + set_logger(nil) + ActiveSupport::Notifications.notifier = nil + end + + class MockLogger + attr_reader :flush_count + + def initialize + @flush_count = 0 + @logged = Hash.new { |h,k| h[k] = [] } + end + + def method_missing(level, message) + @logged[level] << message + end + + def logged(level) + @logged[level].compact.map { |l| l.to_s.strip } + end + + def flush + @flush_count += 1 + end + end + + # Wait notifications to be published. + def wait + @notifier.wait + end + + # Overwrite if you use another logger in your log subscriber: + # + # def logger + # ActiveRecord::Base.logger = @logger + # end + # + def set_logger(logger) + Rails.logger = logger + end + + def queue + ActiveSupport::Notifications::Fanout.new + end + end + end +end \ No newline at end of file diff --git a/railties/lib/rails/rack/logger.rb b/railties/lib/rails/rack/logger.rb index de21fb4f10..2efe224e94 100644 --- a/railties/lib/rails/rack/logger.rb +++ b/railties/lib/rails/rack/logger.rb @@ -1,9 +1,9 @@ -require 'rails/subscriber' +require 'rails/log_subscriber' module Rails module Rack # Log the request started and flush all loggers after it. - class Logger < Rails::Subscriber + class Logger < Rails::LogSubscriber def initialize(app) @app = app end @@ -26,7 +26,7 @@ module Rails end def after_dispatch(env) - Rails::Subscriber.flush_all! + Rails::LogSubscriber.flush_all! end end diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb index c038d0ac70..67afae5862 100644 --- a/railties/lib/rails/railtie.rb +++ b/railties/lib/rails/railtie.rb @@ -32,8 +32,8 @@ module Rails subclasses.map { |p| p.railtie_name } end - def subscriber(subscriber) - Rails::Subscriber.add(railtie_name, subscriber) + def log_subscriber(log_subscriber) + Rails::LogSubscriber.add(railtie_name, log_subscriber) end def rake_tasks(&blk) diff --git a/railties/lib/rails/subscriber.rb b/railties/lib/rails/subscriber.rb deleted file mode 100644 index 8c62f562d9..0000000000 --- a/railties/lib/rails/subscriber.rb +++ /dev/null @@ -1,108 +0,0 @@ -require 'active_support/core_ext/class/inheritable_attributes' -require 'active_support/notifications' - -module Rails - # Rails::Subscriber is an object set to consume ActiveSupport::Notifications - # on initialization with solely purpose of logging. The subscriber dispatches - # notifications to a regirested object based on its given namespace. - # - # An example would be ActiveRecord subscriber responsible for logging queries: - # - # module ActiveRecord - # class Railtie - # class Subscriber < Rails::Subscriber - # def sql(event) - # "#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}" - # end - # end - # end - # end - # - # It's finally registed as: - # - # Rails::Subscriber.add :active_record, ActiveRecord::Railtie::Subscriber.new - # - # So whenever a "active_record.sql" notification arrive to Rails::Subscriber, - # it will properly dispatch the event (ActiveSupport::Notifications::Event) to - # the sql method. - # - # This is useful because it avoids spanning several subscribers just for logging - # purposes(which slows down the main thread). Besides of providing a centralized - # facility on top of Rails.logger. - # - # Subscriber also has some helpers to deal with logging and automatically flushes - # all logs when the request finishes (via action_dispatch.callback notification). - class Subscriber - mattr_accessor :colorize_logging - self.colorize_logging = true - - # Embed in a String to clear all previous ANSI sequences. - CLEAR = "\e[0m" - BOLD = "\e[1m" - - # Colors - BLACK = "\e[30m" - RED = "\e[31m" - GREEN = "\e[32m" - YELLOW = "\e[33m" - BLUE = "\e[34m" - MAGENTA = "\e[35m" - CYAN = "\e[36m" - WHITE = "\e[37m" - - def self.add(namespace, subscriber) - subscribers[namespace.to_sym] = subscriber - end - - def self.subscribers - @subscribers ||= {} - end - - def self.dispatch(args) - namespace, name = args[0].split(".") - subscriber = subscribers[namespace.to_sym] - - if subscriber.respond_to?(name) && subscriber.logger - begin - subscriber.send(name, ActiveSupport::Notifications::Event.new(*args)) - rescue Exception => e - Rails.logger.error "Could not log #{args[0].inspect} event. #{e.class}: #{e.message}" - end - end - end - - # Flush all subscribers' logger. - def self.flush_all! - loggers = subscribers.values.map(&:logger) - loggers.uniq! - loggers.each { |l| l.flush if l.respond_to?(:flush) } - end - - # By default, we use the Rails.logger for logging. - def logger - Rails.logger - end - - protected - - %w(info debug warn error fatal unknown).each do |level| - class_eval <<-METHOD, __FILE__, __LINE__ + 1 - def #{level}(*args, &block) - logger.#{level}(*args, &block) - end - METHOD - end - - # Set color by using a string or one of the defined constants. If a third - # option is set to true, it also adds bold to the string. This is based - # on Highline implementation and it automatically appends CLEAR to the end - # of the returned String. - # - def color(text, color, bold=false) - return text unless colorize_logging - color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol) - bold = bold ? BOLD : "" - "#{bold}#{color}#{text}#{CLEAR}" - end - end -end \ No newline at end of file diff --git a/railties/lib/rails/subscriber/test_helper.rb b/railties/lib/rails/subscriber/test_helper.rb deleted file mode 100644 index 39b4117372..0000000000 --- a/railties/lib/rails/subscriber/test_helper.rb +++ /dev/null @@ -1,98 +0,0 @@ -require 'rails/subscriber' - -module Rails - class Subscriber - # Provides some helpers to deal with testing subscribers by setting up - # notifications. Take for instance ActiveRecord subscriber tests: - # - # class SyncSubscriberTest < ActiveSupport::TestCase - # include Rails::Subscriber::TestHelper - # Rails::Subscriber.add(:active_record, ActiveRecord::Railties::Subscriber.new) - # - # def test_basic_query_logging - # Developer.all - # wait - # assert_equal 1, @logger.logged(:debug).size - # assert_match /Developer Load/, @logger.logged(:debug).last - # assert_match /SELECT \* FROM "developers"/, @logger.logged(:debug).last - # end - # - # class SyncSubscriberTest < ActiveSupport::TestCase - # include Rails::Subscriber::SyncTestHelper - # include SubscriberTest - # end - # - # class AsyncSubscriberTest < ActiveSupport::TestCase - # include Rails::Subscriber::AsyncTestHelper - # include SubscriberTest - # end - # end - # - # All you need to do is to ensure that your subscriber is added to Rails::Subscriber, - # as in the second line of the code above. The test helpers is reponsible for setting - # up the queue, subscriptions and turning colors in logs off. - # - # The messages are available in the @logger instance, which is a logger with limited - # powers (it actually do not send anything to your output), and you can collect them - # doing @logger.logged(level), where level is the level used in logging, like info, - # debug, warn and so on. - # - module TestHelper - def setup - @logger = MockLogger.new - @notifier = ActiveSupport::Notifications::Notifier.new(queue) - - Rails::Subscriber.colorize_logging = false - @notifier.subscribe { |*args| Rails::Subscriber.dispatch(args) } - - set_logger(@logger) - ActiveSupport::Notifications.notifier = @notifier - end - - def teardown - set_logger(nil) - ActiveSupport::Notifications.notifier = nil - end - - class MockLogger - attr_reader :flush_count - - def initialize - @flush_count = 0 - @logged = Hash.new { |h,k| h[k] = [] } - end - - def method_missing(level, message) - @logged[level] << message - end - - def logged(level) - @logged[level].compact.map { |l| l.to_s.strip } - end - - def flush - @flush_count += 1 - end - end - - # Wait notifications to be published. - def wait - @notifier.wait - end - - # Overwrite if you use another logger in your subscriber: - # - # def logger - # ActiveRecord::Base.logger = @logger - # end - # - def set_logger(logger) - Rails.logger = logger - end - - def queue - ActiveSupport::Notifications::Fanout.new - end - end - end -end \ No newline at end of file diff --git a/railties/test/application/initializers/notifications_test.rb b/railties/test/application/initializers/notifications_test.rb index 061bb34c19..b99cf5bb4f 100644 --- a/railties/test/application/initializers/notifications_test.rb +++ b/railties/test/application/initializers/notifications_test.rb @@ -28,7 +28,7 @@ module ApplicationTests ActiveSupport::Notifications.notifier.wait end - test "rails subscribers are added" do + test "rails log_subscribers are added" do add_to_config <<-RUBY config.colorize_logging = false RUBY diff --git a/railties/test/log_subscriber_test.rb b/railties/test/log_subscriber_test.rb new file mode 100644 index 0000000000..be176df1bb --- /dev/null +++ b/railties/test/log_subscriber_test.rb @@ -0,0 +1,119 @@ +require 'abstract_unit' +require 'rails/log_subscriber/test_helper' + +class MyLogSubscriber < Rails::LogSubscriber + attr_reader :event + + def some_event(event) + @event = event + info event.name + end + + def foo(event) + debug "debug" + info "info" + warn "warn" + end + + def bar(event) + info "#{color("cool", :red)}, #{color("isn't it?", :blue, true)}" + end + + def puke(event) + raise "puke" + end +end + +class SyncLogSubscriberTest < ActiveSupport::TestCase + include Rails::LogSubscriber::TestHelper + + def setup + super + @log_subscriber = MyLogSubscriber.new + Rails::LogSubscriber.instance_variable_set(:@log_tailer, nil) + end + + def teardown + super + Rails::LogSubscriber.log_subscribers.clear + Rails::LogSubscriber.instance_variable_set(:@log_tailer, nil) + end + + def instrument(*args, &block) + ActiveSupport::Notifications.instrument(*args, &block) + end + + def test_proxies_method_to_rails_logger + @log_subscriber.foo(nil) + assert_equal %w(debug), @logger.logged(:debug) + assert_equal %w(info), @logger.logged(:info) + assert_equal %w(warn), @logger.logged(:warn) + end + + def test_set_color_for_messages + Rails::LogSubscriber.colorize_logging = true + @log_subscriber.bar(nil) + assert_equal "\e[31mcool\e[0m, \e[1m\e[34misn't it?\e[0m", @logger.logged(:info).last + end + + def test_does_not_set_color_if_colorize_logging_is_set_to_false + @log_subscriber.bar(nil) + assert_equal "cool, isn't it?", @logger.logged(:info).last + end + + def test_event_is_sent_to_the_registered_class + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "my_log_subscriber.some_event" + wait + assert_equal %w(my_log_subscriber.some_event), @logger.logged(:info) + end + + def test_event_is_an_active_support_notifications_event + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "my_log_subscriber.some_event" + wait + assert_kind_of ActiveSupport::Notifications::Event, @log_subscriber.event + end + + def test_does_not_send_the_event_if_it_doesnt_match_the_class + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "my_log_subscriber.unknown_event" + wait + # If we get here, it means that NoMethodError was raised. + end + + def test_does_not_send_the_event_if_logger_is_nil + Rails.logger = nil + @log_subscriber.expects(:some_event).never + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "my_log_subscriber.some_event" + wait + end + + def test_flushes_loggers + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + Rails::LogSubscriber.flush_all! + assert_equal 1, @logger.flush_count + end + + def test_flushes_the_same_logger_just_once + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + Rails::LogSubscriber.add :another, @log_subscriber + Rails::LogSubscriber.flush_all! + wait + assert_equal 1, @logger.flush_count + end + + def test_logging_does_not_die_on_failures + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "my_log_subscriber.puke" + instrument "my_log_subscriber.some_event" + wait + + assert_equal 1, @logger.logged(:info).size + assert_equal 'my_log_subscriber.some_event', @logger.logged(:info).last + + assert_equal 1, @logger.logged(:error).size + assert_equal 'Could not log "my_log_subscriber.puke" event. RuntimeError: puke', @logger.logged(:error).last + end +end \ No newline at end of file diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb index b723e08281..9eb4e9993a 100644 --- a/railties/test/railties/railtie_test.rb +++ b/railties/test/railties/railtie_test.rb @@ -51,12 +51,12 @@ module RailtiesTest assert_equal "bar", Bar.config.foo.bar end - test "railtie can add subscribers" do + test "railtie can add log subscribers" do begin - class Foo < Rails::Railtie ; subscriber(Rails::Subscriber.new) ; end - assert_kind_of Rails::Subscriber, Rails::Subscriber.subscribers[:foo] + class Foo < Rails::Railtie ; log_subscriber(Rails::LogSubscriber.new) ; end + assert_kind_of Rails::LogSubscriber, Rails::LogSubscriber.log_subscribers[:foo] ensure - Rails::Subscriber.subscribers.clear + Rails::LogSubscriber.log_subscribers.clear end end diff --git a/railties/test/subscriber_test.rb b/railties/test/subscriber_test.rb deleted file mode 100644 index f6c895093f..0000000000 --- a/railties/test/subscriber_test.rb +++ /dev/null @@ -1,119 +0,0 @@ -require 'abstract_unit' -require 'rails/subscriber/test_helper' - -class MySubscriber < Rails::Subscriber - attr_reader :event - - def some_event(event) - @event = event - info event.name - end - - def foo(event) - debug "debug" - info "info" - warn "warn" - end - - def bar(event) - info "#{color("cool", :red)}, #{color("isn't it?", :blue, true)}" - end - - def puke(event) - raise "puke" - end -end - -class SyncSubscriberTest < ActiveSupport::TestCase - include Rails::Subscriber::TestHelper - - def setup - super - @subscriber = MySubscriber.new - Rails::Subscriber.instance_variable_set(:@log_tailer, nil) - end - - def teardown - super - Rails::Subscriber.subscribers.clear - Rails::Subscriber.instance_variable_set(:@log_tailer, nil) - end - - def instrument(*args, &block) - ActiveSupport::Notifications.instrument(*args, &block) - end - - def test_proxies_method_to_rails_logger - @subscriber.foo(nil) - assert_equal %w(debug), @logger.logged(:debug) - assert_equal %w(info), @logger.logged(:info) - assert_equal %w(warn), @logger.logged(:warn) - end - - def test_set_color_for_messages - Rails::Subscriber.colorize_logging = true - @subscriber.bar(nil) - assert_equal "\e[31mcool\e[0m, \e[1m\e[34misn't it?\e[0m", @logger.logged(:info).last - end - - def test_does_not_set_color_if_colorize_logging_is_set_to_false - @subscriber.bar(nil) - assert_equal "cool, isn't it?", @logger.logged(:info).last - end - - def test_event_is_sent_to_the_registered_class - Rails::Subscriber.add :my_subscriber, @subscriber - instrument "my_subscriber.some_event" - wait - assert_equal %w(my_subscriber.some_event), @logger.logged(:info) - end - - def test_event_is_an_active_support_notifications_event - Rails::Subscriber.add :my_subscriber, @subscriber - instrument "my_subscriber.some_event" - wait - assert_kind_of ActiveSupport::Notifications::Event, @subscriber.event - end - - def test_does_not_send_the_event_if_it_doesnt_match_the_class - Rails::Subscriber.add :my_subscriber, @subscriber - instrument "my_subscriber.unknown_event" - wait - # If we get here, it means that NoMethodError was raised. - end - - def test_does_not_send_the_event_if_logger_is_nil - Rails.logger = nil - @subscriber.expects(:some_event).never - Rails::Subscriber.add :my_subscriber, @subscriber - instrument "my_subscriber.some_event" - wait - end - - def test_flushes_loggers - Rails::Subscriber.add :my_subscriber, @subscriber - Rails::Subscriber.flush_all! - assert_equal 1, @logger.flush_count - end - - def test_flushes_the_same_logger_just_once - Rails::Subscriber.add :my_subscriber, @subscriber - Rails::Subscriber.add :another, @subscriber - Rails::Subscriber.flush_all! - wait - assert_equal 1, @logger.flush_count - end - - def test_logging_does_not_die_on_failures - Rails::Subscriber.add :my_subscriber, @subscriber - instrument "my_subscriber.puke" - instrument "my_subscriber.some_event" - wait - - assert_equal 1, @logger.logged(:info).size - assert_equal 'my_subscriber.some_event', @logger.logged(:info).last - - assert_equal 1, @logger.logged(:error).size - assert_equal 'Could not log "my_subscriber.puke" event. RuntimeError: puke', @logger.logged(:error).last - end -end \ No newline at end of file -- cgit v1.2.3 From 01cd9d66ede0a528725728f2d73cf6e7796ccb02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 16 Feb 2010 21:37:30 +0100 Subject: Subscriber should not explode if a non namespaced instrumentation is given. --- railties/lib/rails/log_subscriber.rb | 3 ++- railties/test/log_subscriber_test.rb | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/log_subscriber.rb b/railties/lib/rails/log_subscriber.rb index c867b92b6b..05cb70690a 100644 --- a/railties/lib/rails/log_subscriber.rb +++ b/railties/lib/rails/log_subscriber.rb @@ -60,8 +60,9 @@ module Rails def self.dispatch(args) namespace, name = args[0].split(".") - log_subscriber = log_subscribers[namespace.to_sym] + return unless namespace && name + log_subscriber = log_subscribers[namespace.to_sym] if log_subscriber.respond_to?(name) && log_subscriber.logger begin log_subscriber.send(name, ActiveSupport::Notifications::Event.new(*args)) diff --git a/railties/test/log_subscriber_test.rb b/railties/test/log_subscriber_test.rb index be176df1bb..a4de023e65 100644 --- a/railties/test/log_subscriber_test.rb +++ b/railties/test/log_subscriber_test.rb @@ -79,7 +79,7 @@ class SyncLogSubscriberTest < ActiveSupport::TestCase Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber instrument "my_log_subscriber.unknown_event" wait - # If we get here, it means that NoMethodError was raised. + # If we get here, it means that NoMethodError was not raised. end def test_does_not_send_the_event_if_logger_is_nil @@ -90,6 +90,12 @@ class SyncLogSubscriberTest < ActiveSupport::TestCase wait end + def test_does_not_fail_with_non_namespaced_events + Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber + instrument "whatever" + wait + end + def test_flushes_loggers Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber Rails::LogSubscriber.flush_all! -- cgit v1.2.3 From 23fd1f12801c8585ff3b114e74264b67ad6264e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 17 Feb 2010 00:15:21 +0100 Subject: Show deprecation message for rails/init.rb in plugins. --- railties/lib/rails/plugin.rb | 10 ++++++++-- railties/test/railties/plugin_test.rb | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb index 64d03e7599..882f2dc28e 100644 --- a/railties/lib/rails/plugin.rb +++ b/railties/lib/rails/plugin.rb @@ -29,7 +29,7 @@ module Rails unless extra_tasks.empty? ActiveSupport::Deprecation.warn "Having rake tasks in PLUGIN_PATH/tasks or " << - "PLUGIN_PATH/rails/tasks is deprecated. Use to PLUGIN_PATH/lib/tasks instead" + "PLUGIN_PATH/rails/tasks is deprecated. Use PLUGIN_PATH/lib/tasks instead" extra_tasks.sort.each { |ext| load(ext) } end end @@ -44,7 +44,13 @@ module Rails end initializer :load_init_rb, :before => :load_application_initializers do |app| - file = Dir["#{root}/{rails/init,init}.rb"].first + if File.file?(file = File.expand_path("rails/init.rb", root)) + ActiveSupport::Deprecation.warn "PLUGIN_PATH/rails/init.rb in plugins is deprecated. " << + "Use PLUGIN_PATH/init.rb instead" + else + file = File.expand_path("init.rb", root) + end + config = app.config eval(File.read(file), binding, file) if file && File.file?(file) end diff --git a/railties/test/railties/plugin_test.rb b/railties/test/railties/plugin_test.rb index 09b859dcdd..0f5f29468c 100644 --- a/railties/test/railties/plugin_test.rb +++ b/railties/test/railties/plugin_test.rb @@ -94,6 +94,15 @@ module RailtiesTest assert rescued, "Expected boot rails to fail" end + test "loads deprecated rails/init.rb" do + @plugin.write "rails/init.rb", <<-RUBY + $loaded = true + RUBY + + boot_rails + assert $loaded + end + test "deprecated tasks are also loaded" do $executed = false @plugin.write "tasks/foo.rake", <<-RUBY -- cgit v1.2.3 From d4e008fd0f9ebac3383a0c3ac093de68db9e2e66 Mon Sep 17 00:00:00 2001 From: Kyle Maxwell Date: Thu, 11 Feb 2010 16:04:24 -0800 Subject: Invalid namespace on app generation raises an error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- railties/lib/generators/rails/app/app_generator.rb | 9 +++++++-- railties/test/generators/app_generator_test.rb | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/generators/rails/app/app_generator.rb b/railties/lib/generators/rails/app/app_generator.rb index c439ed89f5..ea1930a966 100644 --- a/railties/lib/generators/rails/app/app_generator.rb +++ b/railties/lib/generators/rails/app/app_generator.rb @@ -7,6 +7,10 @@ module Rails::Generators # can change in Ruby 1.8.7 when we FileUtils.cd. RAILS_DEV_PATH = File.expand_path("../../../../..", File.dirname(__FILE__)) + RESERVED_NAMES = %w[generate console server dbconsole + application destroy benchmarker profiler + plugin runner test] + class AppGenerator < Base DATABASES = %w( mysql oracle postgresql sqlite3 frontbase ibm_db ) @@ -209,9 +213,10 @@ module Rails::Generators end def valid_app_const? - case app_const - when /^\d/ + if app_const =~ /^\d/ raise Error, "Invalid application name #{app_name}. Please give a name which does not start with numbers." + elsif RESERVED_NAMES.include?(app_name) + raise Error, "Invalid application name #{app_name}. Please give a name which does not match one of the reserved rails words." end end diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 0a746b200f..01d643cd8c 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -50,6 +50,11 @@ class AppGeneratorTest < Rails::Generators::TestCase ).each{ |path| assert_file path } end + def test_name_collision_raises_an_error + content = capture(:stderr){ run_generator [File.join(destination_root, "generate")] } + assert_equal "Invalid application name generate. Please give a name which does not match one of the reserved rails words.\n", content + end + def test_invalid_database_option_raises_an_error content = capture(:stderr){ run_generator([destination_root, "-d", "unknown"]) } assert_match /Invalid value for \-\-database option/, content -- cgit v1.2.3 From d0454e57661ceeaebd6f3fce4a608ec624257b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 17 Feb 2010 18:09:13 +0100 Subject: Add readme as method in Rails::Generators::Actions (as we had in 2.3) --- railties/lib/rails/generators/actions.rb | 10 ++++++++++ railties/railties.gemspec | 2 +- railties/test/generators/actions_test.rb | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/generators/actions.rb b/railties/lib/rails/generators/actions.rb index d41da773c6..e39fa3ff11 100644 --- a/railties/lib/rails/generators/actions.rb +++ b/railties/lib/rails/generators/actions.rb @@ -280,6 +280,16 @@ module Rails end end + # Reads the given file at the source root and prints it in the console. + # + # === Example + # + # readme "README" + # + def readme(path) + say File.read(find_in_source_paths(path)) + end + protected # Define log for backwards compatibility. If just one argument is sent, diff --git a/railties/railties.gemspec b/railties/railties.gemspec index 9b07fcc30f..44475b82cf 100644 --- a/railties/railties.gemspec +++ b/railties/railties.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.has_rdoc = false s.add_dependency('rake', '>= 0.8.3') - s.add_dependency('thor', '~> 0.13.0') + s.add_dependency('thor', '~> 0.13.3') s.add_dependency('activesupport', '= 3.0.0.beta1') s.add_dependency('actionpack', '= 3.0.0.beta1') end diff --git a/railties/test/generators/actions_test.rb b/railties/test/generators/actions_test.rb index 5929db6318..3585e6e7c0 100644 --- a/railties/test/generators/actions_test.rb +++ b/railties/test/generators/actions_test.rb @@ -210,6 +210,12 @@ class ActionsTest < Rails::Generators::TestCase assert_file 'config/routes.rb', /#{Regexp.escape(route_command)}/ end + def test_readme + run_generator + Rails::Generators::AppGenerator.expects(:source_root).returns(destination_root) + assert_match(/Welcome to Rails/, action(:readme, "README")) + end + protected def action(*args, &block) -- cgit v1.2.3 From 1477a6101da631a117427a1e53668dfe093a3726 Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 18 Feb 2010 09:21:01 -0800 Subject: Fix called_from under Windows so engines works properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 53e54d7400..a158bb7b70 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -15,7 +15,7 @@ module Rails def inherited(base) unless abstract_railtie?(base) base.called_from = begin - call_stack = caller.map { |p| p.split(':').first } + call_stack = caller.map { |p| p.split(':')[0..-2].join(':') } File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-]*/lib/rails|rack[\w\-]*/lib/rack] }) end end -- cgit v1.2.3 From a5684dfa3c16472bfa5d5d861ba78cb6dbadcb59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 18 Feb 2010 18:39:39 +0100 Subject: Ensure config.after_initializer is executed before building the middleware stack. --- railties/lib/rails/application/finisher.rb | 10 ++++++---- railties/lib/rails/engine.rb | 1 + .../test/application/initializers/initializers_test.rb | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index b722679ec2..afa79cad1c 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -27,17 +27,19 @@ module Rails end end - initializer :build_middleware_stack do - app - end - # Fires the user-supplied after_initialize block (config.after_initialize) + # Should run before the middleware stack is built, because building the + # middleware already fires to_prepare callbacks in test and production. initializer :after_initialize do config.after_initialize_blocks.each do |block| block.call(self) end end + initializer :build_middleware_stack do + app + end + # Disable dependency loading during request cycle initializer :disable_dependency_loading do if config.cache_classes && !config.dependency_loading diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index a158bb7b70..efa11b466a 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -15,6 +15,7 @@ module Rails def inherited(base) unless abstract_railtie?(base) base.called_from = begin + # Remove the line number from backtraces making sure we don't leave anything behind call_stack = caller.map { |p| p.split(':')[0..-2].join(':') } File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-]*/lib/rails|rack[\w\-]*/lib/rack] }) end diff --git a/railties/test/application/initializers/initializers_test.rb b/railties/test/application/initializers/initializers_test.rb index 0c3de7ce33..a6d37b15f1 100644 --- a/railties/test/application/initializers/initializers_test.rb +++ b/railties/test/application/initializers/initializers_test.rb @@ -51,5 +51,19 @@ module ApplicationTests assert $activerecord_configurations assert $activerecord_configurations['development'] end + + test "after_initialize happens before to_prepare (i.e. before the middleware stack is built) on production" do + $order = [] + add_to_config <<-RUBY + config.after_initialize { $order << :after_initialize } + config.to_prepare { $order << :to_prepare } + RUBY + + require "#{app_path}/config/application" + Rails.env.replace "production" + require "#{app_path}/config/environment" + assert [:after_initialize, :to_prepare], $order + end + end end -- cgit v1.2.3 From e49f94d71cdcdd3b891959e59203fd5e664c8add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 19 Feb 2010 08:02:28 +0100 Subject: Revert behavior from a5684dfa3c16472bfa5d5d861ba78cb6dbadcb59 and ensure after_initializer is executed after to_prepare callbacks. --- railties/lib/rails/application/finisher.rb | 11 ++++------- .../test/application/initializers/initializers_test.rb | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index afa79cad1c..cb38d5a5db 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -27,19 +27,16 @@ module Rails end end - # Fires the user-supplied after_initialize block (config.after_initialize) - # Should run before the middleware stack is built, because building the - # middleware already fires to_prepare callbacks in test and production. + initializer :build_middleware_stack do + app + end + initializer :after_initialize do config.after_initialize_blocks.each do |block| block.call(self) end end - initializer :build_middleware_stack do - app - end - # Disable dependency loading during request cycle initializer :disable_dependency_loading do if config.cache_classes && !config.dependency_loading diff --git a/railties/test/application/initializers/initializers_test.rb b/railties/test/application/initializers/initializers_test.rb index a6d37b15f1..2e6a707175 100644 --- a/railties/test/application/initializers/initializers_test.rb +++ b/railties/test/application/initializers/initializers_test.rb @@ -52,9 +52,22 @@ module ApplicationTests assert $activerecord_configurations['development'] end - test "after_initialize happens before to_prepare (i.e. before the middleware stack is built) on production" do + test "after_initialize happens after to_prepare in development" do $order = [] add_to_config <<-RUBY + config.cache_classes = false + config.after_initialize { $order << :after_initialize } + config.to_prepare { $order << :to_prepare } + RUBY + + require "#{app_path}/config/environment" + assert [:to_prepare, :after_initialize], $order + end + + test "after_initialize happens after to_prepare in production" do + $order = [] + add_to_config <<-RUBY + config.cache_classes = true config.after_initialize { $order << :after_initialize } config.to_prepare { $order << :to_prepare } RUBY @@ -62,8 +75,7 @@ module ApplicationTests require "#{app_path}/config/application" Rails.env.replace "production" require "#{app_path}/config/environment" - assert [:after_initialize, :to_prepare], $order + assert [:to_prepare, :after_initialize], $order end - end end -- cgit v1.2.3 From fed72b5842e5e8604917602a15c126d48cf12fde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 20 Feb 2010 15:46:55 +0100 Subject: Rename engines_load_path to railties_load_path. --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index efa11b466a..1696bb7b86 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -90,7 +90,7 @@ module Rails # I18n load paths are a special case since the ones added # later have higher priority. initializer :add_locales do - config.i18n.engines_load_path.concat(paths.config.locales.to_a) + config.i18n.railties_load_path.concat(paths.config.locales.to_a) end initializer :add_view_paths do -- cgit v1.2.3 From 7fe4ca3253e902c67d4765eeece285ffc49f3d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 21 Feb 2010 13:19:21 +0100 Subject: Add a test for default_url_options in AM. --- railties/test/application/initializers/frameworks_test.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'railties') diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb index 1e7b9c9997..94d3505518 100644 --- a/railties/test/application/initializers/frameworks_test.rb +++ b/railties/test/application/initializers/frameworks_test.rb @@ -32,6 +32,17 @@ module ApplicationTests ActionMailer::Base.view_paths.include?(File.expand_path("app/views", app_path)) end + test "allows me to configure default url options for ActionMailer" do + app_file "config/environments/development.rb", <<-RUBY + Rails::Application.configure do + config.action_mailer.default_url_options = { :host => "test.rails" } + end + RUBY + + require "#{app_path}/config/environment" + assert "test.rails", ActionMailer::Base.default_url_options[:host] + end + # AS test "if there's no config.active_support.bare, all of ActiveSupport is required" do use_frameworks [] -- cgit v1.2.3 From 4477bccda6d388755c46326df964850962c12c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 21 Feb 2010 13:44:08 +0100 Subject: Also check if application is a valid constant in rake rails:update. --- railties/lib/rails/tasks/framework.rake | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/tasks/framework.rake b/railties/lib/rails/tasks/framework.rake index 65d3c48f2d..dbe2ac54ed 100644 --- a/railties/lib/rails/tasks/framework.rake +++ b/railties/lib/rails/tasks/framework.rake @@ -32,12 +32,18 @@ namespace :rails do namespace :update do def invoke_from_app_generator(method) - require 'rails/generators' - require 'generators/rails/app/app_generator' + app_generator.invoke(method) + end - generator = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, - :destination_root => Rails.root - generator.invoke(method) + def app_generator + @app_generator ||= begin + require 'rails/generators' + require 'generators/rails/app/app_generator' + gen = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, + :destination_root => Rails.root + gen.send(:valid_app_const?) + gen + end end desc "Update config/boot.rb from your current rails install" -- cgit v1.2.3 From 4cdfe98d925397a613c9220bca65be5081c92f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Sch=C3=BCrrer?= Date: Sun, 21 Feb 2010 03:05:31 +0100 Subject: Typo --- railties/lib/rails/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 9384492486..b3a57e2ced 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -56,7 +56,7 @@ module Rails end def metal_loader - @metal_laoder ||= MetalLoader.new + @metal_loader ||= MetalLoader.new end def routes_reloader -- cgit v1.2.3 From 6bc24d40d56332593bc22612d4618a2f80b1d91b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Sch=C3=BCrrer?= Date: Sun, 21 Feb 2010 17:21:25 +0100 Subject: Use ActionDispatch::Routing everywhere --- railties/builtin/routes.rb | 4 ++-- railties/lib/rails/application.rb | 2 +- railties/lib/rails/tasks/routes.rake | 4 ++-- railties/test/rails_info_controller_test.rb | 2 +- railties/test/railties/shared_tests.rb | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) (limited to 'railties') diff --git a/railties/builtin/routes.rb b/railties/builtin/routes.rb index ef9d9e756d..b4fdb95a64 100644 --- a/railties/builtin/routes.rb +++ b/railties/builtin/routes.rb @@ -1,3 +1,3 @@ -ActionController::Routing::Routes.draw do |map| +ActionDispatch::Routing::Routes.draw do |map| match '/rails/info/properties' => "rails/info#properties" -end \ No newline at end of file +end diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index b3a57e2ced..67094392ee 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -48,7 +48,7 @@ module Rails end def routes - ::ActionController::Routing::Routes + ::ActionDispatch::Routing::Routes end def railties diff --git a/railties/lib/rails/tasks/routes.rake b/railties/lib/rails/tasks/routes.rake index ac0f440896..1d0ac38c96 100644 --- a/railties/lib/rails/tasks/routes.rake +++ b/railties/lib/rails/tasks/routes.rake @@ -1,9 +1,9 @@ desc 'Print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' task :routes => :environment do Rails::Application.reload_routes! - all_routes = ENV['CONTROLLER'] ? ActionController::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionController::Routing::Routes.routes + all_routes = ENV['CONTROLLER'] ? ActionDispatch::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionDispatch::Routing::Routes.routes routes = all_routes.collect do |route| - name = ActionController::Routing::Routes.named_routes.routes.index(route).to_s + name = ActionDispatch::Routing::Routes.named_routes.routes.index(route).to_s reqs = route.requirements.empty? ? "" : route.requirements.inspect {:name => name, :verb => route.verb.to_s, :path => route.path, :reqs => reqs} end diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index 4163fb2c6d..9cfa1d6aaa 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -14,7 +14,7 @@ class InfoControllerTest < ActionController::TestCase tests Rails::InfoController def setup - ActionController::Routing::Routes.draw do |map| + ActionDispatch::Routing::Routes.draw do |map| match ':controller/:action' end @controller.stubs(:consider_all_requests_local? => false, :local_request? => true) diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb index d51a0d153c..c9e6e6081a 100644 --- a/railties/test/railties/shared_tests.rb +++ b/railties/test/railties/shared_tests.rb @@ -133,7 +133,7 @@ module RailtiesTest end end - ActionController::Routing::Routes.draw do + ActionDispatch::Routing::Routes.draw do match "/sprokkit", :to => Sprokkit end RUBY @@ -170,7 +170,7 @@ module RailtiesTest RUBY @plugin.write "config/routes.rb", <<-RUBY - ActionController::Routing::Routes.draw do |map| + ActionDispatch::Routing::Routes.draw do |map| match 'foo', :to => 'bar#index' match 'bar', :to => 'bar#index' end @@ -261,7 +261,7 @@ YAML def test_namespaced_controllers_with_namespaced_routes @plugin.write "config/routes.rb", <<-RUBY - ActionController::Routing::Routes.draw do + ActionDispatch::Routing::Routes.draw do namespace :admin do match "index", :to => "admin/foo#index" end @@ -312,4 +312,4 @@ YAML boot_rails end end -end \ No newline at end of file +end -- cgit v1.2.3 From a6684eeb786663839cf383ea54b681d429a83177 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 21 Feb 2010 11:19:23 -0600 Subject: don't set @expected.date in generated mailer test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mikel Lindsaar Signed-off-by: José Valim --- railties/lib/generators/test_unit/mailer/templates/functional_test.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/generators/test_unit/mailer/templates/functional_test.rb b/railties/lib/generators/test_unit/mailer/templates/functional_test.rb index e1aeb2db90..a2b1f1ed05 100644 --- a/railties/lib/generators/test_unit/mailer/templates/functional_test.rb +++ b/railties/lib/generators/test_unit/mailer/templates/functional_test.rb @@ -7,7 +7,6 @@ class <%= class_name %>Test < ActionMailer::TestCase @expected.to = "to@example.org" @expected.from = "from@example.com" @expected.body = read_fixture("<%= action %>") - @expected.date = Time.now assert_equal @expected, <%= class_name %>.<%= action %> end -- cgit v1.2.3 From 5e2bd08023344f3fd4675e80203a10967ffe9000 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 23 Feb 2010 17:03:06 -0800 Subject: Makes send_file work again by deferring to Rack::Sendfile. * Add the Rack::Sendfile middleware * Make the header to use configurable via config.action_dispatch.x_sendfile_header (default to "X-Sendfile"). * Add Railties tests to confirm that these work * Remove the :stream, :buffer_size, and :x_senfile default options to send_file * Change the log subscriber to always say "Sent file" * Add deprecation warnings for options that are now no-ops Note that servers can configure this by setting X-Sendfile-Type. Hosting companies and those creating packages of servers specially designed for Rails applications are encouraged to specify this header so that this can work transparently. --- railties/lib/rails/configuration.rb | 1 + railties/test/application/configuration_test.rb | 55 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+) (limited to 'railties') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 50675d19b8..811c3a9fd9 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -12,6 +12,7 @@ module Rails middleware.use('::Rack::Runtime') middleware.use('::Rails::Rack::Logger') middleware.use('::ActionDispatch::ShowExceptions', lambda { Rails.application.config.consider_all_requests_local }) + middleware.use('::Rack::Sendfile', lambda { Rails.application.config.action_dispatch.x_sendfile_header }) middleware.use('::ActionDispatch::Callbacks', lambda { !Rails.application.config.cache_classes }) middleware.use('::ActionDispatch::Cookies') middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options }) diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 7ca605ec23..3e03a01ff3 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -171,5 +171,60 @@ module ApplicationTests get "/" assert $prepared end + + test "config.action_dispatch.x_sendfile_header defaults to X-Sendfile" do + require "rails" + require "action_controller/railtie" + + class MyApp < Rails::Application + config.action_controller.session = { :key => "_myapp_session", :secret => "3b7cd727ee24e8444053437c36cc66c4" } + end + + MyApp.initialize! + + class ::OmgController < ActionController::Base + def index + send_file __FILE__ + end + end + + MyApp.routes.draw do + match "/" => "omg#index" + end + + require 'rack/test' + extend Rack::Test::Methods + + get "/" + assert_equal File.expand_path(__FILE__), last_response.headers["X-Sendfile"] + end + + test "config.action_dispatch.x_sendfile_header is sent to Rack::Sendfile" do + require "rails" + require "action_controller/railtie" + + class MyApp < Rails::Application + config.action_controller.session = { :key => "_myapp_session", :secret => "3b7cd727ee24e8444053437c36cc66c4" } + config.action_dispatch.x_sendfile_header = 'X-Lighttpd-Send-File' + end + + MyApp.initialize! + + class ::OmgController < ActionController::Base + def index + send_file __FILE__ + end + end + + MyApp.routes.draw do + match "/" => "omg#index" + end + + require 'rack/test' + extend Rack::Test::Methods + + get "/" + assert_equal File.expand_path(__FILE__), last_response.headers["X-Lighttpd-Send-File"] + end end end -- cgit v1.2.3 From 24ab5665b2f12a589e96a4b742cc49c08bf0e9df Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 23 Feb 2010 17:31:17 -0800 Subject: Revert "Fix test load paths for those not using bundler" This reverts commit eec2d301d4ce9df9c71c1a5aa63053eb970b6818. This commit broke tests. You cannot have a file called "bundler" on the load path. --- railties/Rakefile | 2 +- railties/test/abstract_unit.rb | 7 +------ railties/test/application/configuration_test.rb | 2 +- railties/test/edge_rails.rb | 14 -------------- railties/test/isolation/abstract_unit.rb | 14 ++++++++++---- 5 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 railties/test/edge_rails.rb (limited to 'railties') diff --git a/railties/Rakefile b/railties/Rakefile index d4b446bc24..f32a794544 100644 --- a/railties/Rakefile +++ b/railties/Rakefile @@ -1,4 +1,4 @@ -require File.expand_path('../../bundler', __FILE__) +require File.expand_path('../../load_paths', __FILE__) require 'rake' require 'rake/testtask' diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb index 2ac165fc49..aa66dbb9be 100644 --- a/railties/test/abstract_unit.rb +++ b/railties/test/abstract_unit.rb @@ -1,13 +1,8 @@ ORIG_ARGV = ARGV.dup -require File.expand_path("../../../bundler", __FILE__) +require File.expand_path("../../../load_paths", __FILE__) $:.unshift File.expand_path("../../builtin/rails_info", __FILE__) -lib = File.expand_path("#{File.dirname(__FILE__)}/../lib") -$:.unshift(lib) unless $:.include?('lib') || $:.include?(lib) - -require 'edge_rails' - require 'stringio' require 'test/unit' require 'fileutils' diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 3e03a01ff3..acf752a448 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -140,7 +140,7 @@ module ApplicationTests require "#{app_path}/config/environment" end end - + test "filter_parameters should be able to set via config.filter_parameters" do add_to_config <<-RUBY config.filter_parameters += [ :foo, 'bar', lambda { |key, value| diff --git a/railties/test/edge_rails.rb b/railties/test/edge_rails.rb deleted file mode 100644 index bd8a674738..0000000000 --- a/railties/test/edge_rails.rb +++ /dev/null @@ -1,14 +0,0 @@ -require File.expand_path('../../../bundler', __FILE__) - -%w( - actionmailer - actionpack - activemodel - activerecord - activeresource - activesupport - railties -).each do |framework| - framework_path = File.expand_path("../../../#{framework}/lib", __FILE__) - $:.unshift(framework_path) if File.directory?(framework_path) && !$:.include?(framework_path) -end diff --git a/railties/test/isolation/abstract_unit.rb b/railties/test/isolation/abstract_unit.rb index f3c1d64f7b..364dbd8e55 100644 --- a/railties/test/isolation/abstract_unit.rb +++ b/railties/test/isolation/abstract_unit.rb @@ -187,7 +187,7 @@ module TestHelpers end def boot_rails - require File.expand_path('../../edge_rails', __FILE__) + require File.expand_path('../../../../load_paths', __FILE__) end end end @@ -208,12 +208,18 @@ Module.new do end FileUtils.mkdir(tmp_path) - environment = File.expand_path('../../edge_rails', __FILE__) - require_environment = "-r #{environment}" + environment = File.expand_path('../../../../load_paths', __FILE__) + if File.exist?("#{environment}.rb") + require_environment = "-r #{environment}" + end `#{Gem.ruby} #{require_environment} #{RAILS_FRAMEWORK_ROOT}/railties/bin/rails #{tmp_path('app_template')}` File.open("#{tmp_path}/app_template/config/boot.rb", 'w') do |f| - f.puts "require '#{environment}'" + if require_environment + f.puts "Dir.chdir('#{File.dirname(environment)}') do" + f.puts " require '#{environment}'" + f.puts "end" + end f.puts "require 'rails/all'" end end -- cgit v1.2.3 From 47498a7f59d0196e9b8aa8e3569cbb4937477cef Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 23 Feb 2010 17:42:14 -0800 Subject: Woops, forgot to actually add active_support/core_ext/file/path.rb --- railties/test/application/middleware_test.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'railties') diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb index ce9cd510a3..5e869bff1e 100644 --- a/railties/test/application/middleware_test.rb +++ b/railties/test/application/middleware_test.rb @@ -19,6 +19,7 @@ module ApplicationTests "Rack::Runtime", "Rails::Rack::Logger", "ActionDispatch::ShowExceptions", + "Rack::Sendfile", "ActionDispatch::Callbacks", "ActionDispatch::Cookies", "ActionDispatch::Session::CookieStore", -- cgit v1.2.3 From ba57575e03647df78f8f2d4b56f1395c10061366 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Tue, 23 Feb 2010 17:56:28 -0800 Subject: Remove references to ActionDispatch::Routing::Routes in favor of Rails.appication.routes. --- railties/builtin/routes.rb | 2 +- railties/lib/rails/tasks/routes.rake | 4 ++-- railties/test/rails_info_controller_test.rb | 2 +- railties/test/railties/shared_tests.rb | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) (limited to 'railties') diff --git a/railties/builtin/routes.rb b/railties/builtin/routes.rb index b4fdb95a64..bd58034d8f 100644 --- a/railties/builtin/routes.rb +++ b/railties/builtin/routes.rb @@ -1,3 +1,3 @@ -ActionDispatch::Routing::Routes.draw do |map| +Rails.application.routes.draw do |map| match '/rails/info/properties' => "rails/info#properties" end diff --git a/railties/lib/rails/tasks/routes.rake b/railties/lib/rails/tasks/routes.rake index 1d0ac38c96..42e01d5e51 100644 --- a/railties/lib/rails/tasks/routes.rake +++ b/railties/lib/rails/tasks/routes.rake @@ -1,9 +1,9 @@ desc 'Print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' task :routes => :environment do Rails::Application.reload_routes! - all_routes = ENV['CONTROLLER'] ? ActionDispatch::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionDispatch::Routing::Routes.routes + all_routes = ENV['CONTROLLER'] ? Rails.application.routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : Rails.application.routes.routes routes = all_routes.collect do |route| - name = ActionDispatch::Routing::Routes.named_routes.routes.index(route).to_s + name = Rails.application.routes.named_routes.routes.index(route).to_s reqs = route.requirements.empty? ? "" : route.requirements.inspect {:name => name, :verb => route.verb.to_s, :path => route.path, :reqs => reqs} end diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index 9cfa1d6aaa..a6fc23d95b 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -14,7 +14,7 @@ class InfoControllerTest < ActionController::TestCase tests Rails::InfoController def setup - ActionDispatch::Routing::Routes.draw do |map| + Rails.application.routes.draw do |map| match ':controller/:action' end @controller.stubs(:consider_all_requests_local? => false, :local_request? => true) diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb index c9e6e6081a..151abe21f8 100644 --- a/railties/test/railties/shared_tests.rb +++ b/railties/test/railties/shared_tests.rb @@ -133,7 +133,7 @@ module RailtiesTest end end - ActionDispatch::Routing::Routes.draw do + Rails.application.routes.draw do match "/sprokkit", :to => Sprokkit end RUBY @@ -170,7 +170,7 @@ module RailtiesTest RUBY @plugin.write "config/routes.rb", <<-RUBY - ActionDispatch::Routing::Routes.draw do |map| + Rails.application.routes.draw do |map| match 'foo', :to => 'bar#index' match 'bar', :to => 'bar#index' end @@ -261,7 +261,7 @@ YAML def test_namespaced_controllers_with_namespaced_routes @plugin.write "config/routes.rb", <<-RUBY - ActionDispatch::Routing::Routes.draw do + Rails.application.routes.draw do namespace :admin do match "index", :to => "admin/foo#index" end -- cgit v1.2.3 From bf0f14579aa793f2ab29ec092c517d04e702dbe3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 25 Feb 2010 08:32:37 -0800 Subject: let the rails command recurse upwards looking for script/rails, and exec ruby on it for better portability [Xavier Noria] (Closes #4008) --- railties/bin/rails | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'railties') diff --git a/railties/bin/rails b/railties/bin/rails index 72c47b533f..173f122445 100755 --- a/railties/bin/rails +++ b/railties/bin/rails @@ -1,11 +1,30 @@ -if File.exists?(Dir.getwd + '/script/rails') - exec(Dir.getwd + '/script/rails', *ARGV) -else - railties_path = File.expand_path('../../lib', __FILE__) - $:.unshift(railties_path) if File.directory?(railties_path) && !$:.include?(railties_path) +require 'rbconfig' - require 'rails/ruby_version_check' - Signal.trap("INT") { puts; exit } +module Rails + module ScriptRailsLoader + RUBY = File.join(*RbConfig::CONFIG.values_at("bindir", "ruby_install_name")) + RbConfig::CONFIG["EXEEXT"] + SCRIPT_RAILS = File.join('script', 'rails') - require 'rails/commands/application' -end \ No newline at end of file + def self.exec_script_rails! + cwd = Dir.pwd + exec RUBY, SCRIPT_RAILS, *ARGV if File.exists?(SCRIPT_RAILS) + Dir.chdir("..") do + # Recurse in a chdir block: if the search fails we want to be sure + # the application is generated in the original working directory. + exec_script_rails! unless cwd == Dir.pwd + end + rescue SystemCallError + # could not chdir, no problem just return + end + end +end + +Rails::ScriptRailsLoader.exec_script_rails! + +railties_path = File.expand_path('../../lib', __FILE__) +$:.unshift(railties_path) if File.directory?(railties_path) && !$:.include?(railties_path) + +require 'rails/ruby_version_check' +Signal.trap("INT") { puts; exit } + +require 'rails/commands/application' -- cgit v1.2.3 From f7b0a857e97304a5daeb47313759b9bf0d7e2fc9 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 25 Feb 2010 09:32:29 -0800 Subject: Use Object#singleton_class instead of #metaclass. Prefer Ruby's choice. --- railties/lib/rails/generators.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index c01018aab2..f24dc620de 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/metaclass' +require 'active_support/core_ext/object/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' @@ -291,4 +291,4 @@ end # If the application was already defined, configure generators, # otherwise you have to configure it by hand. -Rails::Generators.configure! if Rails.respond_to?(:application) && Rails.application \ No newline at end of file +Rails::Generators.configure! if Rails.respond_to?(:application) && Rails.application -- cgit v1.2.3 From 45ceacd6ded0d3fc4c567c17cc45c6979c34cc2a Mon Sep 17 00:00:00 2001 From: "Thomas R. Koll" Date: Fri, 12 Feb 2010 11:06:30 +0100 Subject: load_path is expecting a String in the application.rb generator Signed-off-by: Jeremy Kemper --- railties/lib/generators/rails/app/templates/config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/generators/rails/app/templates/config/application.rb b/railties/lib/generators/rails/app/templates/config/application.rb index 7c555c2542..dc20ffb2fa 100644 --- a/railties/lib/generators/rails/app/templates/config/application.rb +++ b/railties/lib/generators/rails/app/templates/config/application.rb @@ -35,7 +35,7 @@ module <%= app_const_base %> # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')] + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.default_locale = :de # Configure generators values. Many other options are available, be sure to check the documentation. -- cgit v1.2.3 From c7f9e8c06cb60aef33cf0a03cb3c1b927eb8c1cf Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 25 Feb 2010 10:46:29 -0800 Subject: Fix test on 1.8.8. Broken by inherited hook now running before Class.new block. --- railties/test/generators_test.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'railties') diff --git a/railties/test/generators_test.rb b/railties/test/generators_test.rb index 33cc27bd84..844497c8e3 100644 --- a/railties/test/generators_test.rb +++ b/railties/test/generators_test.rb @@ -147,12 +147,13 @@ class GeneratorsTest < Rails::Generators::TestCase def test_developer_options_are_overwriten_by_user_options Rails::Generators.options[:new_generator] = { :generate => false } - klass = Class.new(Rails::Generators::Base) do - def self.name() 'NewGenerator' end - class_option :generate, :default => true - end + self.class.class_eval <<-end_eval + class NewGenerator < Rails::Generators::Base + class_option :generate, :default => true + end + end_eval - assert_equal false, klass.class_options[:generate].default + assert_equal false, NewGenerator.class_options[:generate].default ensure Rails::Generators.subclasses.delete(klass) end -- cgit v1.2.3 From ffc45f3e7128f0ef1efca0f39d4717447c15f5b8 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 25 Feb 2010 11:01:15 -0800 Subject: Fix dangling klass reference --- railties/test/generators_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/test/generators_test.rb b/railties/test/generators_test.rb index 844497c8e3..07bc92c55c 100644 --- a/railties/test/generators_test.rb +++ b/railties/test/generators_test.rb @@ -155,7 +155,7 @@ class GeneratorsTest < Rails::Generators::TestCase assert_equal false, NewGenerator.class_options[:generate].default ensure - Rails::Generators.subclasses.delete(klass) + Rails::Generators.subclasses.delete(NewGenerator) end def test_load_generators_from_railties -- cgit v1.2.3 From e2795383cfaafe5c1e38f47d520419662433ffca Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 25 Feb 2010 16:32:24 -0800 Subject: Update plugin tasks dirs deprecation warning --- railties/lib/rails/plugin.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb index 882f2dc28e..c1a2c5c87b 100644 --- a/railties/lib/rails/plugin.rb +++ b/railties/lib/rails/plugin.rb @@ -1,4 +1,5 @@ require 'rails/engine' +require 'active_support/core_ext/array/conversions' module Rails class Plugin < Engine @@ -28,8 +29,7 @@ module Rails extra_tasks = Dir["#{root}/{tasks,rails/tasks}/**/*.rake"] unless extra_tasks.empty? - ActiveSupport::Deprecation.warn "Having rake tasks in PLUGIN_PATH/tasks or " << - "PLUGIN_PATH/rails/tasks is deprecated. Use PLUGIN_PATH/lib/tasks instead" + ActiveSupport::Deprecation.warn "Rake tasks in #{extra_tasks.to_sentence} are deprecated. Use lib/tasks instead." extra_tasks.sort.each { |ext| load(ext) } end end -- cgit v1.2.3 From 6e78fdbef06e0fc7135dac5bc71cdcb4b81911c6 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 25 Feb 2010 16:45:59 -0800 Subject: Remove doubled period --- railties/lib/rails/plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb index c1a2c5c87b..0bc3991b33 100644 --- a/railties/lib/rails/plugin.rb +++ b/railties/lib/rails/plugin.rb @@ -29,7 +29,7 @@ module Rails extra_tasks = Dir["#{root}/{tasks,rails/tasks}/**/*.rake"] unless extra_tasks.empty? - ActiveSupport::Deprecation.warn "Rake tasks in #{extra_tasks.to_sentence} are deprecated. Use lib/tasks instead." + ActiveSupport::Deprecation.warn "Rake tasks in #{extra_tasks.to_sentence} are deprecated. Use lib/tasks instead" extra_tasks.sort.each { |ext| load(ext) } end end -- cgit v1.2.3 From 76237f163ff7ad2a64af926030e3449c547cafa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Feb 2010 02:35:14 +0100 Subject: Application detection should also allow dots in the path. --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 1696bb7b86..479d753614 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -17,7 +17,7 @@ module Rails base.called_from = begin # Remove the line number from backtraces making sure we don't leave anything behind call_stack = caller.map { |p| p.split(':')[0..-2].join(':') } - File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-]*/lib/rails|rack[\w\-]*/lib/rack] }) + File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-\.]*/lib/rails|rack[\w\-\.]*/lib/rack] }) end end -- cgit v1.2.3 From 9a5be2e5a80ab9e74294f32cfef58fbbcd9b637c Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Wed, 24 Feb 2010 16:47:43 -0800 Subject: Get Railties tests passing --- railties/lib/rails/application.rb | 2 +- railties/test/rails_info_controller_test.rb | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 67094392ee..a74550b302 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -48,7 +48,7 @@ module Rails end def routes - ::ActionDispatch::Routing::Routes + @routes ||= ActionDispatch::Routing::RouteSet.new end def railties diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index a6fc23d95b..017e51326c 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -18,6 +18,9 @@ class InfoControllerTest < ActionController::TestCase match ':controller/:action' end @controller.stubs(:consider_all_requests_local? => false, :local_request? => true) + @router = Rails.application.routes + + Rails::InfoController.send(:include, @router.named_url_helpers) end test "info controller does not allow remote requests" do -- cgit v1.2.3 From fc4582fb6684ce72f5628629ea7d061659b790f8 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Thu, 25 Feb 2010 16:48:36 -0800 Subject: Final pass at removing the router from a global constant --- railties/lib/rails/test_help.rb | 6 ++++ railties/test/application/url_generation_test.rb | 42 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 railties/test/application/url_generation_test.rb (limited to 'railties') diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index f9aa018cab..dbb1b76b95 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -24,6 +24,12 @@ if defined?(ActiveRecord) end end +class ActionController::TestCase + setup do + @router = Rails.application.routes + end +end + begin require_library_or_gem 'ruby-debug' Debugger.start diff --git a/railties/test/application/url_generation_test.rb b/railties/test/application/url_generation_test.rb new file mode 100644 index 0000000000..a0d9ff7a3a --- /dev/null +++ b/railties/test/application/url_generation_test.rb @@ -0,0 +1,42 @@ +require 'isolation/abstract_unit' + +module ApplicationTests + class UrlGenerationTest < Test::Unit::TestCase + include ActiveSupport::Testing::Isolation + + def app + Rails.application + end + + test "it works" do + boot_rails + require "rails" + require "action_controller/railtie" + + class MyApp < Rails::Application + config.action_controller.session = { :key => "_myapp_session", :secret => "3b7cd727ee24e8444053437c36cc66c4" } + end + + MyApp.initialize! + + class ::ApplicationController < ActionController::Base + end + + class ::OmgController < ::ApplicationController + def index + render :text => omg_path + end + end + + MyApp.routes.draw do + match "/" => "omg#index", :as => :omg + end + + require 'rack/test' + extend Rack::Test::Methods + + get "/" + assert_equal "/", last_response.body + end + end +end -- cgit v1.2.3 From 8760add31a0415b4635059cf7fadabc26946c0c2 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Thu, 25 Feb 2010 17:51:56 -0800 Subject: Get URL helpers working again in integration tests. --- railties/lib/rails/test_help.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'railties') diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index dbb1b76b95..5b5ce1dd7b 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -30,6 +30,10 @@ class ActionController::TestCase end end +class ActionDispatch::IntegrationTest + include Rails.application.routes.named_url_helpers +end + begin require_library_or_gem 'ruby-debug' Debugger.start -- cgit v1.2.3 From 5893baa683e9b3c85c07d2811656be03765ebad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Feb 2010 10:44:53 +0100 Subject: Add autoload to generators modules and fix failing test. --- railties/lib/rails/generators.rb | 8 +++++++- railties/test/generators_test.rb | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index f24dc620de..3c902ce0d4 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -10,10 +10,16 @@ require 'active_support/core_ext/module/attribute_accessors' require 'active_support/core_ext/string/inflections' require 'rails/generators/base' -require 'rails/generators/named_base' module Rails module Generators + autoload :Actions, 'rails/generators/actions' + autoload :ActiveModel, 'rails/generators/active_model' + autoload :Migration, 'rails/generators/migration' + autoload :NamedBase, 'rails/generators/named_base' + autoload :ResourceHelpers, 'rails/generators/resource_helpers' + autoload :TestCase, 'rails/generators/test_case' + DEFAULT_ALIASES = { :rails => { :actions => '-a', diff --git a/railties/test/generators_test.rb b/railties/test/generators_test.rb index 07bc92c55c..dd17f8f756 100644 --- a/railties/test/generators_test.rb +++ b/railties/test/generators_test.rb @@ -145,17 +145,17 @@ class GeneratorsTest < Rails::Generators::TestCase end def test_developer_options_are_overwriten_by_user_options - Rails::Generators.options[:new_generator] = { :generate => false } + Rails::Generators.options[:with_options] = { :generate => false } self.class.class_eval <<-end_eval - class NewGenerator < Rails::Generators::Base + class WithOptionsGenerator < Rails::Generators::Base class_option :generate, :default => true end end_eval - assert_equal false, NewGenerator.class_options[:generate].default + assert_equal false, WithOptionsGenerator.class_options[:generate].default ensure - Rails::Generators.subclasses.delete(NewGenerator) + Rails::Generators.subclasses.delete(WithOptionsGenerator) end def test_load_generators_from_railties -- cgit v1.2.3 From 36a234609da3955464adf529e2b9dfb3bc572427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Feb 2010 10:51:13 +0100 Subject: Update thor dependency. --- railties/railties.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/railties.gemspec b/railties/railties.gemspec index 44475b82cf..c43bb7e1e9 100644 --- a/railties/railties.gemspec +++ b/railties/railties.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.has_rdoc = false s.add_dependency('rake', '>= 0.8.3') - s.add_dependency('thor', '~> 0.13.3') + s.add_dependency('thor', '~> 0.13.4') s.add_dependency('activesupport', '= 3.0.0.beta1') s.add_dependency('actionpack', '= 3.0.0.beta1') end -- cgit v1.2.3 From 79c47abe6ce0bdcc81c35aa30da8a05c3650d04d Mon Sep 17 00:00:00 2001 From: Ramon Soares Date: Sun, 21 Feb 2010 20:49:54 -0300 Subject: the folder public/javascripts should be created by default [#4027 status:resolved] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- railties/lib/generators/rails/app/app_generator.rb | 7 +++++-- railties/test/generators/app_generator_test.rb | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/generators/rails/app/app_generator.rb b/railties/lib/generators/rails/app/app_generator.rb index ea1930a966..92e0d37436 100644 --- a/railties/lib/generators/rails/app/app_generator.rb +++ b/railties/lib/generators/rails/app/app_generator.rb @@ -138,8 +138,11 @@ module Rails::Generators end def create_prototype_files - return if options[:skip_prototype] - directory "public/javascripts" + unless options[:skip_prototype] + directory "public/javascripts" + else + empty_directory_with_gitkeep "public/javascripts" + end end def create_script_files diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 01d643cd8c..412034029e 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -107,6 +107,7 @@ class AppGeneratorTest < Rails::Generators::TestCase def test_prototype_and_test_unit_are_skipped_if_required run_generator [destination_root, "--skip-prototype", "--skip-testunit"] assert_no_file "public/javascripts/prototype.js" + assert_file "public/javascripts" assert_no_file "test" end -- cgit v1.2.3 From b56b9ee7d6807d8ea9e1575afb7a28e89980b348 Mon Sep 17 00:00:00 2001 From: Dr Nic Williams Date: Mon, 22 Feb 2010 22:43:54 +1000 Subject: #add_source: Fixed docco + added required newline to line added to Gemfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- railties/lib/rails/generators/actions.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/generators/actions.rb b/railties/lib/rails/generators/actions.rb index e39fa3ff11..7dec4d446a 100644 --- a/railties/lib/rails/generators/actions.rb +++ b/railties/lib/rails/generators/actions.rb @@ -89,12 +89,12 @@ module Rails # # ==== Example # - # source "http://gems.github.com/" + # add_source "http://gems.github.com/" def add_source(source, options={}) log :source, source in_root do - prepend_file "Gemfile", "source #{source.inspect}", :verbose => false + prepend_file "Gemfile", "source #{source.inspect}\n", :verbose => false end end -- cgit v1.2.3 From e6dffb70e6c1d524eeb5a40e1f8e01b067781143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Feb 2010 12:09:39 +0100 Subject: reload! on console now works as expected. [#3822 status:resolved] --- railties/lib/rails/console/app.rb | 2 +- railties/test/application/console_test.rb | 32 ++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/console/app.rb b/railties/lib/rails/console/app.rb index 7e8fd027e6..4524aca809 100644 --- a/railties/lib/rails/console/app.rb +++ b/railties/lib/rails/console/app.rb @@ -26,7 +26,7 @@ end # reloads the environment def reload!(print=true) puts "Reloading..." if print - ActionDispatch::Callbacks.new(lambda {}, false) + ActionDispatch::Callbacks.new(lambda {}, false).call({}) true end diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb index 22ab60f4a0..8ff69f0208 100644 --- a/railties/test/application/console_test.rb +++ b/railties/test/application/console_test.rb @@ -6,7 +6,9 @@ class ConsoleTest < Test::Unit::TestCase def setup build_app boot_rails + end + def load_environment # Load steps taken from rails/commands/console.rb require "#{rails_root}/config/environment" require 'rails/console/app' @@ -14,18 +16,21 @@ class ConsoleTest < Test::Unit::TestCase end def test_app_method_should_return_integration_session + load_environment console_session = app assert_not_nil console_session assert_instance_of ActionController::Integration::Session, console_session end def test_new_session_should_return_integration_session + load_environment session = new_session assert_not_nil session assert_instance_of ActionController::Integration::Session, session end def test_reload_should_fire_preparation_callbacks + load_environment a = b = c = nil # TODO: These should be defined on the initializer @@ -34,16 +39,37 @@ class ConsoleTest < Test::Unit::TestCase ActionDispatch::Callbacks.to_prepare { c = 3 } # Hide Reloading... output - silence_stream(STDOUT) do - reload! - end + silence_stream(STDOUT) { reload! } assert_equal 1, a assert_equal 2, b assert_equal 3, c end + def test_reload_should_reload_constants + app_file "app/models/user.rb", <<-MODEL + class User + attr_accessor :name + end + MODEL + + load_environment + assert User.new.respond_to?(:name) + assert !User.new.respond_to?(:age) + + app_file "app/models/user.rb", <<-MODEL + class User + attr_accessor :name, :age + end + MODEL + + assert !User.new.respond_to?(:age) + silence_stream(STDOUT) { reload! } + assert User.new.respond_to?(:age) + end + def test_access_to_helpers + load_environment assert_not_nil helper assert_instance_of ActionView::Base, helper assert_equal 'Once upon a time in a world...', -- cgit v1.2.3 From 98f77e08278658ec47c9eb2e8f819d781c1eaebf Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Fri, 26 Feb 2010 15:00:33 -0800 Subject: Rename named_url_helpers to url_helpers and url_helpers to url_for --- railties/lib/rails/test_help.rb | 2 +- railties/test/rails_info_controller_test.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index 5b5ce1dd7b..06270f6c43 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -31,7 +31,7 @@ class ActionController::TestCase end class ActionDispatch::IntegrationTest - include Rails.application.routes.named_url_helpers + include Rails.application.routes.url_helpers end begin diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index 017e51326c..7275755130 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -20,7 +20,7 @@ class InfoControllerTest < ActionController::TestCase @controller.stubs(:consider_all_requests_local? => false, :local_request? => true) @router = Rails.application.routes - Rails::InfoController.send(:include, @router.named_url_helpers) + Rails::InfoController.send(:include, @router.url_helpers) end test "info controller does not allow remote requests" do -- cgit v1.2.3 From 6324eeefd7d1dd7b628afdcf436649062d12bbab Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Fri, 26 Feb 2010 13:29:44 -0800 Subject: plugin rails/init.rb deprecation message --- railties/lib/rails/engine.rb | 6 +++--- railties/lib/rails/plugin.rb | 26 ++++++++++++++------------ 2 files changed, 17 insertions(+), 15 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 479d753614..b6ac48768d 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -95,8 +95,8 @@ module Rails initializer :add_view_paths do views = paths.app.views.to_a - ActionController::Base.view_paths.unshift(*views) if defined?(ActionController) - ActionMailer::Base.view_paths.unshift(*views) if defined?(ActionMailer) + ActionController::Base.prepend_view_path(views) if defined?(ActionController) + ActionMailer::Base.prepend_view_path(views) if defined?(ActionMailer) end initializer :add_metals do |app| @@ -132,4 +132,4 @@ module Rails app.config.reload_engines end end -end \ No newline at end of file +end diff --git a/railties/lib/rails/plugin.rb b/railties/lib/rails/plugin.rb index 0bc3991b33..98f329cc17 100644 --- a/railties/lib/rails/plugin.rb +++ b/railties/lib/rails/plugin.rb @@ -26,11 +26,14 @@ module Rails def load_tasks super - extra_tasks = Dir["#{root}/{tasks,rails/tasks}/**/*.rake"] + load_deprecated_tasks + end - unless extra_tasks.empty? - ActiveSupport::Deprecation.warn "Rake tasks in #{extra_tasks.to_sentence} are deprecated. Use lib/tasks instead" - extra_tasks.sort.each { |ext| load(ext) } + def load_deprecated_tasks + tasks = Dir["#{root}/{tasks,rails/tasks}/**/*.rake"].sort + if tasks.any? + ActiveSupport::Deprecation.warn "Rake tasks in #{tasks.to_sentence} are deprecated. Use lib/tasks instead" + tasks.each { |ext| load(ext) } end end @@ -44,15 +47,14 @@ module Rails end initializer :load_init_rb, :before => :load_application_initializers do |app| - if File.file?(file = File.expand_path("rails/init.rb", root)) - ActiveSupport::Deprecation.warn "PLUGIN_PATH/rails/init.rb in plugins is deprecated. " << - "Use PLUGIN_PATH/init.rb instead" - else - file = File.expand_path("init.rb", root) + 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 + ActiveSupport::Deprecation.warn "Use toplevel init.rb; rails/init.rb is deprecated: #{initrb}" + end + config = app.config + eval(File.read(initrb), binding, initrb) end - - config = app.config - eval(File.read(file), binding, file) if file && File.file?(file) end initializer :sanity_check_railties_collision do -- cgit v1.2.3 From 6189480b1878cdadb092fdfa32ba156a91e6a0e1 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 27 Feb 2010 16:59:18 -0800 Subject: Revert "Application detection should also allow dots in the path." Ruby 1.9 regression. This reverts commit 76237f163ff7ad2a64af926030e3449c547cafa2. --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index b6ac48768d..a259edc826 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -17,7 +17,7 @@ module Rails base.called_from = begin # Remove the line number from backtraces making sure we don't leave anything behind call_stack = caller.map { |p| p.split(':')[0..-2].join(':') } - File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-\.]*/lib/rails|rack[\w\-\.]*/lib/rack] }) + File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-]*/lib/rails|rack[\w\-]*/lib/rack] }) end end -- cgit v1.2.3 From b1b922d6ea96bca0d0406032b02b1cd4b6e7f6c7 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 27 Feb 2010 17:10:04 -0800 Subject: Revert "Revert "Application detection should also allow dots in the path."" Works after all. Culprit was 226dfc2. This reverts commit 6189480b1878cdadb092fdfa32ba156a91e6a0e1. --- railties/lib/rails/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index a259edc826..b6ac48768d 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -17,7 +17,7 @@ module Rails base.called_from = begin # Remove the line number from backtraces making sure we don't leave anything behind call_stack = caller.map { |p| p.split(':')[0..-2].join(':') } - File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-]*/lib/rails|rack[\w\-]*/lib/rack] }) + File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-\.]*/lib/rails|rack[\w\-\.]*/lib/rack] }) end end -- cgit v1.2.3 From b51c0d4d2521ef5e21f767d741252836e5fc5a30 Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Sat, 27 Feb 2010 17:28:29 -0800 Subject: 1.9 doesn't like lambda {} being called with arguments --- railties/lib/rails/console/app.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/console/app.rb b/railties/lib/rails/console/app.rb index 4524aca809..f62d1c14ba 100644 --- a/railties/lib/rails/console/app.rb +++ b/railties/lib/rails/console/app.rb @@ -26,7 +26,7 @@ end # reloads the environment def reload!(print=true) puts "Reloading..." if print - ActionDispatch::Callbacks.new(lambda {}, false).call({}) + ActionDispatch::Callbacks.new(Proc.new {}, false).call({}) true end -- cgit v1.2.3 From 6ffc8364dc7cc40312364f2e5978021c3e7d8ab9 Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Sat, 27 Feb 2010 17:29:28 -0800 Subject: Explain why we're calling an empty callback --- railties/lib/rails/console/app.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'railties') diff --git a/railties/lib/rails/console/app.rb b/railties/lib/rails/console/app.rb index f62d1c14ba..4959e18e33 100644 --- a/railties/lib/rails/console/app.rb +++ b/railties/lib/rails/console/app.rb @@ -26,6 +26,7 @@ end # reloads the environment def reload!(print=true) puts "Reloading..." if print + # This triggers the to_prepare callbacks ActionDispatch::Callbacks.new(Proc.new {}, false).call({}) true end -- cgit v1.2.3 From 020fdb28ee1d1bdb2dd1aa182869eb2e7c6115cb Mon Sep 17 00:00:00 2001 From: Joao Carlos Date: Wed, 24 Feb 2010 18:41:02 +0000 Subject: #exit accepts an integer, not a string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- railties/lib/rails/test_help.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/test_help.rb b/railties/lib/rails/test_help.rb index 06270f6c43..c6d67bfc19 100644 --- a/railties/lib/rails/test_help.rb +++ b/railties/lib/rails/test_help.rb @@ -1,6 +1,9 @@ # Make double-sure the RAILS_ENV is set to test, # so fixtures are loaded to the right database -exit("Abort testing: Your Rails environment is not running in test mode!") unless Rails.env.test? +unless Rails.env.test? + puts "Abort testing: Your Rails environment is not running in test mode!" + exit +end require 'test/unit' require 'active_support/core_ext/kernel/requires' -- cgit v1.2.3 From 7317d9ef4c1361219671dc4405a02ed3896f1742 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 28 Feb 2010 16:39:01 -0600 Subject: Remove implicit controller namespacing from new dsl --- railties/lib/rails/engine.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index b6ac48768d..af47227510 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -43,7 +43,7 @@ module Rails delegate :middleware, :paths, :root, :to => :config def load_tasks - super + super config.paths.lib.tasks.to_a.sort.each { |ext| load(ext) } end @@ -77,6 +77,7 @@ module Rails end end + # DEPRECATED: Remove in 3.1 initializer :add_routing_namespaces do |app| paths.app.controllers.to_a.each do |load_path| load_path = File.expand_path(load_path) -- cgit v1.2.3 From a5da48d231bf1e4041e149a8d052d8450e41a4e9 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 28 Feb 2010 18:32:46 -0600 Subject: vendor/rails doesn't work anymore, remove it from the blank slate suggestion --- railties/lib/generators/rails/app/templates/config/boot.rb | 9 --------- 1 file changed, 9 deletions(-) (limited to 'railties') diff --git a/railties/lib/generators/rails/app/templates/config/boot.rb b/railties/lib/generators/rails/app/templates/config/boot.rb index 29c9d506e5..3cb561d41f 100644 --- a/railties/lib/generators/rails/app/templates/config/boot.rb +++ b/railties/lib/generators/rails/app/templates/config/boot.rb @@ -5,13 +5,4 @@ rescue LoadError require 'rubygems' require 'bundler' Bundler.setup - - # To use 2.x style vendor/rails and RubyGems - # - # vendor_rails = File.expand_path('../../vendor/rails', __FILE__) - # if File.exist?(vendor_rails) - # Dir["#{vendor_rails}/*/lib"].each { |path| $:.unshift(path) } - # end - # - # require 'rubygems' end -- cgit v1.2.3 From 82deaf5f052caf0a906ed0e83c6efd00c057b5ba Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 28 Feb 2010 18:43:20 -0600 Subject: nested controllers need to be explicitly declared with the new mapper --- railties/test/application/routing_test.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/test/application/routing_test.rb b/railties/test/application/routing_test.rb index b93e349a46..dcac1a87d9 100644 --- a/railties/test/application/routing_test.rb +++ b/railties/test/application/routing_test.rb @@ -120,7 +120,8 @@ module ApplicationTests app_file 'config/routes.rb', <<-RUBY AppTemplate::Application.routes.draw do |map| - match ':controller(/:action)' + match 'admin/foo', :to => 'admin/foo#index' + match 'foo', :to => 'foo#index' end RUBY -- cgit v1.2.3 From 8bb162f008bb8e3a66b4a0d98b9f56cad45a4ab3 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 1 Mar 2010 18:52:07 -0800 Subject: Fix unstated usage of inflector --- railties/lib/rails/railtie.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb index 67afae5862..37c802fb60 100644 --- a/railties/lib/rails/railtie.rb +++ b/railties/lib/rails/railtie.rb @@ -1,5 +1,6 @@ require 'rails/initializable' require 'rails/configuration' +require 'active_support/inflector' module Rails class Railtie @@ -23,9 +24,8 @@ module Rails end def railtie_name(railtie_name = nil) - @railtie_name ||= name.demodulize.underscore @railtie_name = railtie_name if railtie_name - @railtie_name + @railtie_name ||= default_name end def railtie_names @@ -53,6 +53,10 @@ module Rails def abstract_railtie?(base) ABSTRACT_RAILTIES.include?(base.name) end + + def default_name + ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(name)) + end end def rake_tasks -- cgit v1.2.3 From 11db694e0b825e3077e7545b08c1bf975997021f Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 1 Mar 2010 21:55:43 -0500 Subject: Remove cruft in the gem packaging and release code --- railties/Rakefile | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'railties') diff --git a/railties/Rakefile b/railties/Rakefile index f32a794544..d62bfb71eb 100644 --- a/railties/Rakefile +++ b/railties/Rakefile @@ -11,17 +11,6 @@ require 'rbconfig' $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/lib" require 'rails/version' -PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : '' -PKG_NAME = 'railties' -PKG_VERSION = Rails::VERSION::STRING + PKG_BUILD -PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" -PKG_DESTINATION = ENV["RAILS_PKG_DESTINATION"] || "../#{PKG_NAME}" - -RELEASE_NAME = "REL #{PKG_VERSION}" - -RUBY_FORGE_PROJECT = "rails" -RUBY_FORGE_USER = "webster132" - task :default => :test task :test => 'test:isolated' -- cgit v1.2.3 From 812136a0b23787aa0e81c28d0bbc71a9ccf0f6ea Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 1 Mar 2010 19:29:12 -0800 Subject: Fix unstated usage of Pathname --- railties/lib/rails/engine.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index af47227510..07218dcfa8 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -1,5 +1,6 @@ -require 'active_support/core_ext/module/delegation' require 'rails/railtie' +require 'active_support/core_ext/module/delegation' +require 'pathname' module Rails class Engine < Railtie -- cgit v1.2.3 From a0e8eca30bc1f3cf7519bea37456cbfc98b56047 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 1 Mar 2010 21:29:47 -0800 Subject: Fix unstated usage of Action Dispatch --- railties/lib/rails/configuration.rb | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 811c3a9fd9..bcd98c67f8 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -6,22 +6,7 @@ module Rails module Configuration module Shared def middleware - @@default_middleware_stack ||= ActionDispatch::MiddlewareStack.new.tap do |middleware| - middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { Rails.application.config.serve_static_assets }) - middleware.use('::Rack::Lock', :if => lambda { !Rails.application.config.allow_concurrency }) - middleware.use('::Rack::Runtime') - middleware.use('::Rails::Rack::Logger') - middleware.use('::ActionDispatch::ShowExceptions', lambda { Rails.application.config.consider_all_requests_local }) - middleware.use('::Rack::Sendfile', lambda { Rails.application.config.action_dispatch.x_sendfile_header }) - middleware.use('::ActionDispatch::Callbacks', lambda { !Rails.application.config.cache_classes }) - middleware.use('::ActionDispatch::Cookies') - middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options }) - middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store }) - middleware.use(lambda { Rails.application.metal_loader.build_middleware(Rails.application.config.metals) }, :if => lambda { Rails.application.metal_loader.metals.any? }) - middleware.use('ActionDispatch::ParamsParser') - middleware.use('::Rack::MethodOverride') - middleware.use('::ActionDispatch::Head') - end + @@default_middleware_stack ||= default_middleware end # Holds generators configuration: @@ -86,6 +71,26 @@ module Rails def options @@options ||= Hash.new { |h,k| h[k] = ActiveSupport::OrderedOptions.new } end + + def default_middleware + require 'action_dispatch' + ActionDispatch::MiddlewareStack.new.tap do |middleware| + middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { Rails.application.config.serve_static_assets }) + middleware.use('::Rack::Lock', :if => lambda { !Rails.application.config.allow_concurrency }) + middleware.use('::Rack::Runtime') + middleware.use('::Rails::Rack::Logger') + middleware.use('::ActionDispatch::ShowExceptions', lambda { Rails.application.config.consider_all_requests_local }) + middleware.use('::Rack::Sendfile', lambda { Rails.application.config.action_dispatch.x_sendfile_header }) + middleware.use('::ActionDispatch::Callbacks', lambda { !Rails.application.config.cache_classes }) + middleware.use('::ActionDispatch::Cookies') + middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options }) + middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store }) + middleware.use(lambda { Rails.application.metal_loader.build_middleware(Rails.application.config.metals) }, :if => lambda { Rails.application.metal_loader.metals.any? }) + middleware.use('ActionDispatch::ParamsParser') + middleware.use('::Rack::MethodOverride') + middleware.use('::ActionDispatch::Head') + end + end end class Generators #:nodoc: -- cgit v1.2.3 From a4111bbca0884e4a748ab32ba7d7b550ec8d9186 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 1 Mar 2010 23:03:07 -0500 Subject: Update versions of all components to normalize them to new format --- railties/lib/rails/version.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/version.rb b/railties/lib/rails/version.rb index d0c7cb45db..1dd8fa0ec7 100644 --- a/railties/lib/rails/version.rb +++ b/railties/lib/rails/version.rb @@ -2,8 +2,9 @@ module Rails module VERSION #:nodoc: MAJOR = 3 MINOR = 0 - TINY = "0.beta1" + TINY = 0 + BUILD = "beta1" - STRING = [MAJOR, MINOR, TINY].join('.') + STRING = [MAJOR, MINOR, TINY, BUILD].join('.') end end -- cgit v1.2.3 From f221a6f19f4cee31e2d103ea9a1930f59223fc25 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Mon, 1 Mar 2010 23:36:54 -0500 Subject: Leverage VERSION constants from gemspecs to avoid tedious updates when releasing --- railties/Rakefile | 3 --- railties/lib/rails/tasks/documentation.rake | 2 +- railties/railties.gemspec | 9 ++++++--- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'railties') diff --git a/railties/Rakefile b/railties/Rakefile index d62bfb71eb..fe049d565f 100644 --- a/railties/Rakefile +++ b/railties/Rakefile @@ -8,9 +8,6 @@ require 'rake/gempackagetask' require 'date' require 'rbconfig' -$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/lib" -require 'rails/version' - task :default => :test task :test => 'test:isolated' diff --git a/railties/lib/rails/tasks/documentation.rake b/railties/lib/rails/tasks/documentation.rake index f7cc6ff4be..1f4067d29e 100644 --- a/railties/lib/rails/tasks/documentation.rake +++ b/railties/lib/rails/tasks/documentation.rake @@ -14,7 +14,7 @@ namespace :doc do desc 'Generate documentation for the Rails framework. Specify path with PATH="/path/to/rails"' Rake::RDocTask.new("rails") { |rdoc| path = ENV['RAILS_PATH'] || 'vendor/gems/gems' - version = '-3.0.0.beta1' unless ENV['RAILS_PATH'] + version = "-#{Rails::VERSION::STRING}" unless ENV['RAILS_PATH'] rdoc.rdoc_dir = 'doc/api' rdoc.template = "#{ENV['template']}.rb" if ENV['template'] rdoc.title = "Rails Framework Documentation" diff --git a/railties/railties.gemspec b/railties/railties.gemspec index c43bb7e1e9..e2758a84e5 100644 --- a/railties/railties.gemspec +++ b/railties/railties.gemspec @@ -1,7 +1,10 @@ +$:.unshift "lib" +require "rails/version" + Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'railties' - s.version = '3.0.0.beta1' + s.version = Rails::VERSION::STRING s.summary = 'Controls boot-up, rake tasks and generators for the Rails framework.' s.description = 'Controls boot-up, rake tasks and generators for the Rails framework.' s.required_ruby_version = '>= 1.8.7' @@ -22,6 +25,6 @@ Gem::Specification.new do |s| s.add_dependency('rake', '>= 0.8.3') s.add_dependency('thor', '~> 0.13.4') - s.add_dependency('activesupport', '= 3.0.0.beta1') - s.add_dependency('actionpack', '= 3.0.0.beta1') + s.add_dependency('activesupport', "= #{Rails::VERSION::STRING}") + s.add_dependency('actionpack', "= #{Rails::VERSION::STRING}") end -- cgit v1.2.3 From 56ea20605a54386158e90e290caa6d15e7623ade Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Tue, 2 Mar 2010 10:32:09 -0800 Subject: Wordsmith gem descriptions --- railties/railties.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties') diff --git a/railties/railties.gemspec b/railties/railties.gemspec index e2758a84e5..7b17642667 100644 --- a/railties/railties.gemspec +++ b/railties/railties.gemspec @@ -5,8 +5,8 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'railties' s.version = Rails::VERSION::STRING - s.summary = 'Controls boot-up, rake tasks and generators for the Rails framework.' - s.description = 'Controls boot-up, rake tasks and generators for the Rails framework.' + s.summary = 'Tools for creating, working with, and running Rails applications.' + s.description = 'Rails internals: application bootup, plugins, generators, and rake tasks.' s.required_ruby_version = '>= 1.8.7' s.author = 'David Heinemeier Hansson' -- cgit v1.2.3 From a64fcc1a8d84b274691b5e332257eabf0cb5c2a8 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 12:06:40 -0800 Subject: :controller doesn't work for namespaced controllers anymore. --- railties/test/rails_info_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/test/rails_info_controller_test.rb b/railties/test/rails_info_controller_test.rb index 7275755130..d904d7b461 100644 --- a/railties/test/rails_info_controller_test.rb +++ b/railties/test/rails_info_controller_test.rb @@ -15,7 +15,7 @@ class InfoControllerTest < ActionController::TestCase def setup Rails.application.routes.draw do |map| - match ':controller/:action' + match '/rails/info/properties' => "rails/info#properties" end @controller.stubs(:consider_all_requests_local? => false, :local_request? => true) @router = Rails.application.routes -- cgit v1.2.3 From 57bae9764e45ad19dff7a879eeb46d1dffc5ca22 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 12:31:29 -0800 Subject: Fix a test that assumes that defined?(ActiveRecord) == defined?(ActiveRecord::Base) --- railties/test/application/initializers/frameworks_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties') diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb index 94d3505518..91f31df2e7 100644 --- a/railties/test/application/initializers/frameworks_test.rb +++ b/railties/test/application/initializers/frameworks_test.rb @@ -91,7 +91,7 @@ module ApplicationTests test "database middleware doesn't initialize when activerecord is not in frameworks" do use_frameworks [] require "#{app_path}/config/environment" - assert_nil defined?(ActiveRecord) + assert_nil defined?(ActiveRecord::Base) end end end -- cgit v1.2.3 From b01db07a9f009016186da34c4936a9efb2c224c6 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 12:32:31 -0800 Subject: Moved initializers for ActionMailer and ActionController into their own railties --- railties/lib/rails/application/bootstrap.rb | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/application/bootstrap.rb b/railties/lib/rails/application/bootstrap.rb index 0714b34b31..06243f2e5e 100644 --- a/railties/lib/rails/application/bootstrap.rb +++ b/railties/lib/rails/application/bootstrap.rb @@ -1,3 +1,5 @@ +require "active_support/notifications" + module Rails class Application module Bootstrap @@ -49,20 +51,6 @@ module Rails end end - # Initialize rails log subscriber on top of notifications. - initializer :initialize_log_subscriber do - require 'active_support/notifications' - - if config.colorize_logging == false - Rails::LogSubscriber.colorize_logging = false - config.generators.colorize_logging = false - end - - ActiveSupport::Notifications.subscribe do |*args| - Rails::LogSubscriber.dispatch(args) - end - end - initializer :set_clear_dependencies_hook do unless config.cache_classes ActionDispatch::Callbacks.after do -- cgit v1.2.3 From d434c5406846fb280b8a9d6ec40247b1f1b464c6 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 12:34:26 -0800 Subject: Log Tailer doesn't exist anymore. Removing some traces left over in tests. --- railties/test/log_subscriber_test.rb | 2 -- 1 file changed, 2 deletions(-) (limited to 'railties') diff --git a/railties/test/log_subscriber_test.rb b/railties/test/log_subscriber_test.rb index a4de023e65..49288cfaa8 100644 --- a/railties/test/log_subscriber_test.rb +++ b/railties/test/log_subscriber_test.rb @@ -30,13 +30,11 @@ class SyncLogSubscriberTest < ActiveSupport::TestCase def setup super @log_subscriber = MyLogSubscriber.new - Rails::LogSubscriber.instance_variable_set(:@log_tailer, nil) end def teardown super Rails::LogSubscriber.log_subscribers.clear - Rails::LogSubscriber.instance_variable_set(:@log_tailer, nil) end def instrument(*args, &block) -- cgit v1.2.3 From c2dbc391a9292e6f73cadce2f0ba1be871b29e82 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 13:05:25 -0800 Subject: Have log subscribers subscribe to the actual events, so the subscriber doesn't subscribe to *every* event, so we can have events that are slow-ish but are not actually run in production. --- railties/lib/rails/application/configuration.rb | 13 +++++++-- railties/lib/rails/log_subscriber.rb | 34 +++++++++++------------- railties/lib/rails/log_subscriber/test_helper.rb | 1 - 3 files changed, 27 insertions(+), 21 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/application/configuration.rb b/railties/lib/rails/application/configuration.rb index d6ad045294..a00f9c43ae 100644 --- a/railties/lib/rails/application/configuration.rb +++ b/railties/lib/rails/application/configuration.rb @@ -5,7 +5,7 @@ module Rails class Configuration < ::Rails::Engine::Configuration include ::Rails::Configuration::Deprecated - attr_accessor :allow_concurrency, :cache_classes, :cache_store, :colorize_logging, + attr_accessor :allow_concurrency, :cache_classes, :cache_store, :consider_all_requests_local, :dependency_loading, :filter_parameters, :log_level, :logger, :metals, :plugins, :preload_frameworks, :reload_engines, :reload_plugins, @@ -14,7 +14,6 @@ module Rails def initialize(*) super @allow_concurrency = false - @colorize_logging = true @filter_parameters = [] @dependency_loading = true @serve_static_assets = true @@ -81,6 +80,16 @@ module Rails def log_level @log_level ||= Rails.env.production? ? :info : :debug end + + def colorize_logging + @colorize_logging + end + + def colorize_logging=(val) + @colorize_logging = val + Rails::LogSubscriber.colorize_logging = val + self.generators.colorize_logging = val + end end end end \ No newline at end of file diff --git a/railties/lib/rails/log_subscriber.rb b/railties/lib/rails/log_subscriber.rb index 05cb70690a..0fbc19d89c 100644 --- a/railties/lib/rails/log_subscriber.rb +++ b/railties/lib/rails/log_subscriber.rb @@ -29,7 +29,7 @@ module Rails # This is useful because it avoids spanning several log subscribers just for logging # purposes(which slows down the main thread). Besides of providing a centralized # facility on top of Rails.logger. - # + # # Log subscriber also has some helpers to deal with logging and automatically flushes # all logs when the request finishes (via action_dispatch.callback notification). class LogSubscriber @@ -50,31 +50,29 @@ module Rails CYAN = "\e[36m" WHITE = "\e[37m" - def self.add(namespace, log_subscriber) - log_subscribers[namespace.to_sym] = log_subscriber - end - - def self.log_subscribers - @log_subscribers ||= {} - end + def self.add(namespace, log_subscriber, notifier = ActiveSupport::Notifications) + log_subscribers << log_subscriber - def self.dispatch(args) - namespace, name = args[0].split(".") - return unless namespace && name + log_subscriber.public_methods(false).each do |event| + notifier.subscribe("#{namespace}.#{event}") do |*args| + next if log_subscriber.logger.nil? - log_subscriber = log_subscribers[namespace.to_sym] - if log_subscriber.respond_to?(name) && log_subscriber.logger - begin - log_subscriber.send(name, ActiveSupport::Notifications::Event.new(*args)) - rescue Exception => e - Rails.logger.error "Could not log #{args[0].inspect} event. #{e.class}: #{e.message}" + begin + log_subscriber.send(event, ActiveSupport::Notifications::Event.new(*args)) + rescue Exception => e + Rails.logger.error "Could not log #{args[0].inspect} event. #{e.class}: #{e.message}" + end end end end + def self.log_subscribers + @log_subscribers ||= [] + end + # Flush all log_subscribers' logger. def self.flush_all! - loggers = log_subscribers.values.map(&:logger) + loggers = log_subscribers.map(&:logger) loggers.uniq! loggers.each { |l| l.flush if l.respond_to?(:flush) } end diff --git a/railties/lib/rails/log_subscriber/test_helper.rb b/railties/lib/rails/log_subscriber/test_helper.rb index 9ede56cad4..02f5079462 100644 --- a/railties/lib/rails/log_subscriber/test_helper.rb +++ b/railties/lib/rails/log_subscriber/test_helper.rb @@ -43,7 +43,6 @@ module Rails @notifier = ActiveSupport::Notifications::Notifier.new(queue) Rails::LogSubscriber.colorize_logging = false - @notifier.subscribe { |*args| Rails::LogSubscriber.dispatch(args) } set_logger(@logger) ActiveSupport::Notifications.notifier = @notifier -- cgit v1.2.3 From aa749a74f63547a503772f4489fb60b5e4fbea1a Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Tue, 2 Mar 2010 14:00:17 -0800 Subject: Get the railties tests to pass again. --- railties/lib/rails/engine.rb | 4 ++-- railties/test/railties/railtie_test.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'railties') diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 07218dcfa8..79183480a3 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -97,8 +97,8 @@ module Rails initializer :add_view_paths do views = paths.app.views.to_a - ActionController::Base.prepend_view_path(views) if defined?(ActionController) - ActionMailer::Base.prepend_view_path(views) if defined?(ActionMailer) + ActionController::Base.prepend_view_path(views) if defined?(ActionController::Base) + ActionMailer::Base.prepend_view_path(views) if defined?(ActionMailer::Base) end initializer :add_metals do |app| diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb index 9eb4e9993a..9fefb285b4 100644 --- a/railties/test/railties/railtie_test.rb +++ b/railties/test/railties/railtie_test.rb @@ -54,7 +54,7 @@ module RailtiesTest test "railtie can add log subscribers" do begin class Foo < Rails::Railtie ; log_subscriber(Rails::LogSubscriber.new) ; end - assert_kind_of Rails::LogSubscriber, Rails::LogSubscriber.log_subscribers[:foo] + assert_kind_of Rails::LogSubscriber, Rails::LogSubscriber.log_subscribers[0] ensure Rails::LogSubscriber.log_subscribers.clear end -- cgit v1.2.3 From 6193be26ce49bc24d67eb97f2f5f49c86f9f6bb7 Mon Sep 17 00:00:00 2001 From: Mikel Lindsaar Date: Wed, 3 Mar 2010 13:39:36 +1100 Subject: Removing prototype and just using vanilla js --- .../rails/app/templates/public/index.html | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'railties') diff --git a/railties/lib/generators/rails/app/templates/public/index.html b/railties/lib/generators/rails/app/templates/public/index.html index ef916f9c5a..836da1b689 100644 --- a/railties/lib/generators/rails/app/templates/public/index.html +++ b/railties/lib/generators/rails/app/templates/public/index.html @@ -181,27 +181,27 @@ } - - @@ -210,7 +210,7 @@