diff options
Diffstat (limited to 'activesupport/lib/active_support')
16 files changed, 26 insertions, 65 deletions
diff --git a/activesupport/lib/active_support/buffered_logger.rb b/activesupport/lib/active_support/buffered_logger.rb index b937d4c50d..26412cd7f4 100644 --- a/activesupport/lib/active_support/buffered_logger.rb +++ b/activesupport/lib/active_support/buffered_logger.rb @@ -56,9 +56,9 @@ module ActiveSupport end def open_log(log, mode) - open(log, mode).tap do |log| - log.set_encoding(Encoding::BINARY) if log.respond_to?(:set_encoding) - log.sync = true + open(log, mode).tap do |open_log| + open_log.set_encoding(Encoding::BINARY) if open_log.respond_to?(:set_encoding) + open_log.sync = true end end @@ -77,7 +77,7 @@ module ActiveSupport # def info # def warn # def debug - for severity in Severity.constants + Severity.constants.each do |severity| class_eval <<-EOT, __FILE__, __LINE__ + 1 def #{severity.downcase}(message = nil, progname = nil, &block) # def debug(message = nil, progname = nil, &block) add(#{severity}, message, progname, &block) # add(DEBUG, message, progname, &block) diff --git a/activesupport/lib/active_support/core_ext/kernel.rb b/activesupport/lib/active_support/core_ext/kernel.rb index 01cfe7fc10..0275f4c037 100644 --- a/activesupport/lib/active_support/core_ext/kernel.rb +++ b/activesupport/lib/active_support/core_ext/kernel.rb @@ -1,5 +1,4 @@ require 'active_support/core_ext/kernel/reporting' require 'active_support/core_ext/kernel/agnostics' -require 'active_support/core_ext/kernel/requires' require 'active_support/core_ext/kernel/debugger' require 'active_support/core_ext/kernel/singleton_class' diff --git a/activesupport/lib/active_support/core_ext/kernel/debugger.rb b/activesupport/lib/active_support/core_ext/kernel/debugger.rb index 692340c7c7..7516f41e0b 100644 --- a/activesupport/lib/active_support/core_ext/kernel/debugger.rb +++ b/activesupport/lib/active_support/core_ext/kernel/debugger.rb @@ -5,12 +5,6 @@ module Kernel message = "\n***** Debugger requested, but was not available (ensure ruby-debug is listed in Gemfile/installed as gem): Start server with --debugger to enable *****\n" defined?(Rails) ? Rails.logger.info(message) : $stderr.puts(message) end - end - - undef :breakpoint if respond_to?(:breakpoint) - def breakpoint - message = "\n***** The 'breakpoint' command has been renamed 'debugger' -- please change *****\n" - defined?(Rails) ? Rails.logger.info(message) : $stderr.puts(message) - debugger + alias breakpoint debugger unless respond_to?(:breakpoint) end end diff --git a/activesupport/lib/active_support/core_ext/kernel/requires.rb b/activesupport/lib/active_support/core_ext/kernel/requires.rb deleted file mode 100644 index 6b149e3813..0000000000 --- a/activesupport/lib/active_support/core_ext/kernel/requires.rb +++ /dev/null @@ -1,26 +0,0 @@ -require 'active_support/core_ext/kernel/reporting' - -module Kernel - # Require a library with fallback to RubyGems. Warnings during library - # loading are silenced to increase signal/noise for application warnings. - def require_library_or_gem(library_name) - silence_warnings do - begin - require library_name - rescue LoadError => cannot_require - # 1. Requiring the module is unsuccessful, maybe it's a gem and nobody required rubygems yet. Try. - begin - require 'rubygems' - rescue LoadError # => rubygems_not_installed - raise cannot_require - end - # 2. Rubygems is installed and loaded. Try to load the library again - begin - require library_name - rescue LoadError # => gem_not_installed - raise cannot_require - end - end - end - end -end diff --git a/activesupport/lib/active_support/core_ext/object/try.rb b/activesupport/lib/active_support/core_ext/object/try.rb index e77a9da0ec..4797c93e63 100644 --- a/activesupport/lib/active_support/core_ext/object/try.rb +++ b/activesupport/lib/active_support/core_ext/object/try.rb @@ -28,6 +28,8 @@ class Object def try(*a, &b) if a.empty? && block_given? yield self + elsif !a.empty? && !respond_to?(a.first) + nil else __send__(*a, &b) end diff --git a/activesupport/lib/active_support/duration.rb b/activesupport/lib/active_support/duration.rb index 00c67a470d..89b0923882 100644 --- a/activesupport/lib/active_support/duration.rb +++ b/activesupport/lib/active_support/duration.rb @@ -10,6 +10,7 @@ module ActiveSupport # 1.month.ago # equivalent to Time.now.advance(:months => -1) class Duration < BasicObject attr_accessor :value, :parts + delegate :duplicable?, :to => :value # required when using ActiveSupport's BasicObject on 1.8 def initialize(value, parts) #:nodoc: @value, @parts = value, parts diff --git a/activesupport/lib/active_support/hash_with_indifferent_access.rb b/activesupport/lib/active_support/hash_with_indifferent_access.rb index 39ebc1ec82..15a3717ea1 100644 --- a/activesupport/lib/active_support/hash_with_indifferent_access.rb +++ b/activesupport/lib/active_support/hash_with_indifferent_access.rb @@ -11,7 +11,7 @@ module ActiveSupport end def with_indifferent_access - self + dup end def initialize(constructor = {}) diff --git a/activesupport/lib/active_support/i18n.rb b/activesupport/lib/active_support/i18n.rb index 00ea8813dd..f9c5e5e2f8 100644 --- a/activesupport/lib/active_support/i18n.rb +++ b/activesupport/lib/active_support/i18n.rb @@ -2,7 +2,7 @@ begin require 'i18n' require 'active_support/lazy_load_hooks' rescue LoadError => e - $stderr.puts "You don't have i18n installed in your application. Please add it to your Gemfile and run bundle install" + $stderr.puts "The i18n gem is not available. Please add it to your Gemfile and run bundle install" raise e end diff --git a/activesupport/lib/active_support/json/encoding.rb b/activesupport/lib/active_support/json/encoding.rb index d22fe14b33..c2c45e9f9d 100644 --- a/activesupport/lib/active_support/json/encoding.rb +++ b/activesupport/lib/active_support/json/encoding.rb @@ -14,6 +14,7 @@ require 'time' require 'active_support/core_ext/time/conversions' require 'active_support/core_ext/date_time/conversions' require 'active_support/core_ext/date/conversions' +require 'set' module ActiveSupport class << self @@ -39,7 +40,7 @@ module ActiveSupport def initialize(options = nil) @options = options - @seen = [] + @seen = Set.new end def encode(value, use_options = true) @@ -71,13 +72,12 @@ module ActiveSupport private def check_for_circular_references(value) - if @seen.any? { |object| object.equal?(value) } + unless @seen.add?(value.__id__) raise CircularReferenceError, 'object references itself' end - @seen.unshift value yield ensure - @seen.shift + @seen.delete(value.__id__) end end diff --git a/activesupport/lib/active_support/notifications/instrumenter.rb b/activesupport/lib/active_support/notifications/instrumenter.rb index 441fefb491..3941c285a2 100644 --- a/activesupport/lib/active_support/notifications/instrumenter.rb +++ b/activesupport/lib/active_support/notifications/instrumenter.rb @@ -1,4 +1,3 @@ -require 'active_support/secure_random' require 'active_support/core_ext/module/delegation' module ActiveSupport diff --git a/activesupport/lib/active_support/secure_random.rb b/activesupport/lib/active_support/secure_random.rb deleted file mode 100644 index 52f8c72b77..0000000000 --- a/activesupport/lib/active_support/secure_random.rb +++ /dev/null @@ -1,6 +0,0 @@ -require 'securerandom' - -module ActiveSupport - # Use Ruby's SecureRandom library. - SecureRandom = ::SecureRandom # :nodoc: -end diff --git a/activesupport/lib/active_support/testing/performance/jruby.rb b/activesupport/lib/active_support/testing/performance/jruby.rb index 6b27959840..326904bbac 100644 --- a/activesupport/lib/active_support/testing/performance/jruby.rb +++ b/activesupport/lib/active_support/testing/performance/jruby.rb @@ -1,6 +1,6 @@ require 'jruby/profiler' require 'java' -import java.lang.management.ManagementFactory +java_import java.lang.management.ManagementFactory module ActiveSupport module Testing diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb index abd585b64f..728921a069 100644 --- a/activesupport/lib/active_support/values/time_zone.rb +++ b/activesupport/lib/active_support/values/time_zone.rb @@ -315,10 +315,8 @@ module ActiveSupport tzinfo.period_for_local(time, dst) end - # TODO: Preload instead of lazy load for thread safety def self.find_tzinfo(name) - require 'active_support/tzinfo' unless defined?(::TZInfo) - ::TZInfo::TimezoneProxy.new(MAPPING[name] || name) + TZInfo::TimezoneProxy.new(MAPPING[name] || name) end class << self diff --git a/activesupport/lib/active_support/version.rb b/activesupport/lib/active_support/version.rb index c2cf39e391..e135872bf6 100644 --- a/activesupport/lib/active_support/version.rb +++ b/activesupport/lib/active_support/version.rb @@ -3,7 +3,7 @@ module ActiveSupport MAJOR = 3 MINOR = 1 TINY = 0 - PRE = "beta1" + PRE = "rc1" STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.') end diff --git a/activesupport/lib/active_support/xml_mini.rb b/activesupport/lib/active_support/xml_mini.rb index 6e12404ad4..1ea9a9d7e1 100644 --- a/activesupport/lib/active_support/xml_mini.rb +++ b/activesupport/lib/active_support/xml_mini.rb @@ -1,3 +1,4 @@ +require 'time' require 'active_support/core_ext/module/delegation' require 'active_support/core_ext/string/inflections' @@ -51,13 +52,12 @@ module ActiveSupport "yaml" => Proc.new { |yaml| yaml.to_yaml } } unless defined?(FORMATTING) - # TODO: use Time.xmlschema instead of Time.parse; - # use regexp instead of Date.parse + # TODO use regexp instead of Date.parse unless defined?(PARSING) PARSING = { "symbol" => Proc.new { |symbol| symbol.to_sym }, "date" => Proc.new { |date| ::Date.parse(date) }, - "datetime" => Proc.new { |time| ::Time.parse(time).utc rescue ::DateTime.parse(time).utc }, + "datetime" => Proc.new { |time| Time.xmlschema(time).utc rescue ::DateTime.parse(time).utc }, "integer" => Proc.new { |integer| integer.to_i }, "float" => Proc.new { |float| float.to_f }, "decimal" => Proc.new { |number| BigDecimal(number) }, diff --git a/activesupport/lib/active_support/xml_mini/jdom.rb b/activesupport/lib/active_support/xml_mini/jdom.rb index 48c1cb3fe9..7aefabfdd1 100644 --- a/activesupport/lib/active_support/xml_mini/jdom.rb +++ b/activesupport/lib/active_support/xml_mini/jdom.rb @@ -5,12 +5,12 @@ include Java require 'active_support/core_ext/object/blank' -import javax.xml.parsers.DocumentBuilder unless defined? DocumentBuilder -import javax.xml.parsers.DocumentBuilderFactory unless defined? DocumentBuilderFactory -import java.io.StringReader unless defined? StringReader -import org.xml.sax.InputSource unless defined? InputSource -import org.xml.sax.Attributes unless defined? Attributes -import org.w3c.dom.Node unless defined? Node +java_import javax.xml.parsers.DocumentBuilder unless defined? DocumentBuilder +java_import javax.xml.parsers.DocumentBuilderFactory unless defined? DocumentBuilderFactory +java_import java.io.StringReader unless defined? StringReader +java_import org.xml.sax.InputSource unless defined? InputSource +java_import org.xml.sax.Attributes unless defined? Attributes +java_import org.w3c.dom.Node unless defined? Node # = XmlMini JRuby JDOM implementation module ActiveSupport |