1. 19 5月, 2015 1 次提交
  2. 16 5月, 2015 1 次提交
  3. 14 5月, 2015 2 次提交
  4. 23 4月, 2015 2 次提交
    • A
      Improve ActiveSupport::TimeWithZone conversion to YAML · 3aa26cfb
      Andrew White 提交于
      Previously when converting AS::TimeWithZone to YAML it would be output
      as a UTC timestamp. Whilst this preserves the time information accurately
      it loses the timezone information. This commit changes that so that it is
      saved along with the time information. It also provides nicer encoding of
      AS::TimeZone instances themselves which previously embedded all of the
      data from the TZInfo records.
      
      Fixes #9183.
      3aa26cfb
    • P
      Add ActiveSupport::TimeZone#strptime. · a5e507fa
      Paul A Jungwirth 提交于
      This makes it easier to parse user-inputted times as from a given time zone.
      a5e507fa
  5. 22 4月, 2015 1 次提交
  6. 03 4月, 2015 1 次提交
    • I
      Raise ArgumentError if an unrecognised callback is skipped · d2876141
      Iain Beeston 提交于
      At present, if you skip a callback that hasn't been defined,
      activesupport callbacks silently does nothing. However, it's easy to
      mistype the name of a callback and mistakenly think that it's being
      skipped, when it is not.
      
      This problem even exists in the current test suite.
      CallbacksTest::SkipCallbacksTest#test_skip_person attempts to skip
      callbacks that were never set up.
      
      This PR changes `skip_callback` to raise an `ArgumentError` if the
      specified callback cannot be found.
      d2876141
  7. 31 3月, 2015 1 次提交
  8. 28 3月, 2015 1 次提交
  9. 25 3月, 2015 1 次提交
    • G
      Add ActiveSupport::ArrayInquirer and Array#inquiry · c64b99ec
      George Claghorn 提交于
      Wrapping an array in an `ArrayInquirer` gives a friendlier way to check its
      string-like contents. For example, `request.variant` returns an `ArrayInquirer`
      object. To check a request's variants, you can call:
      
          request.variant.phone?
          request.variant.any?(:phone, :tablet)
      
      ...instead of:
      
          request.variant.include?(:phone)
          request.variant.any? { |v| v.in?([:phone, :tablet]) }
      
      `Array#inquiry` is a shortcut for wrapping the receiving array in an
      `ArrayInquirer`:
      
          pets = [:cat, :dog]
          pets.cat?    # => true
          pets.ferret? # => false
          pets.any?(:cat, :ferret} # => true
      c64b99ec
  10. 23 3月, 2015 1 次提交
  11. 09 3月, 2015 1 次提交
    • A
      Revert "Take DST into account when locating TimeZone from Numeric." · 34b27701
      Andrew White 提交于
      Reverting this as it's not the implementation that we would like it to be.
      This is being used inside of ActiveSUpport::TimeZone[] and it's unaware
      of the context in which to find the timezone period so the timezone found
      changes depending on whether DST is in effect for the current period.
      This means that `'2001-01-01'.in_time_zone(-9)` changes from winter/summer
      even though it's the same date that we're trying to convert.
      
      Since finding timezones by numeric offsets is a bit hit and miss we should
      introduce a new API for finding them which supplies the date context in
      which we want to search and we should probably also deprecate the finding
      of timezones via the [] method, though this needs further discussion.
      
      This reverts commit 2cc2fa36.
      34b27701
  12. 06 3月, 2015 2 次提交
  13. 04 3月, 2015 1 次提交
  14. 02 3月, 2015 1 次提交
  15. 25 2月, 2015 1 次提交
  16. 23 2月, 2015 1 次提交
  17. 12 2月, 2015 1 次提交
    • G
      Properly dump primitive-like AS::SafeBuffer strings as YAML · debe7aed
      Godfrey Chan 提交于
      `coder.represent_scalar` means something along the lines of "Here is a quoted
      string, you can just add it to the output", which is not the case here. It only
      works for simple strings that can appear unquoted in YAML, but causes problems
      for e.g. primitive-like strings ("1", "true").
      
      `coder.represent_object` on the other hand, means that "This is the Ruby-object
      representation for this thing suitable for use in YAML dumping", which is what
      we want here.
      
      Before:
      
         YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml  # => "Hello"
         YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml   # => true
         YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml  # => false
         YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml      # => 1
         YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml    # => 1.1
      
       After:
      
         YAML.load ActiveSupport::SafeBuffer.new("Hello").to_yaml  # => "Hello"
         YAML.load ActiveSupport::SafeBuffer.new("true").to_yaml   # => "true"
         YAML.load ActiveSupport::SafeBuffer.new("false").to_yaml  # => "false"
         YAML.load ActiveSupport::SafeBuffer.new("1").to_yaml      # => "1"
         YAML.load ActiveSupport::SafeBuffer.new("1.1").to_yaml    # => "1.1"
      
      If we ever want Ruby to behave more like PHP or JavaScript though, this is an
      excellent trick to use ;)
      debe7aed
  18. 06 2月, 2015 1 次提交
  19. 03 2月, 2015 1 次提交
  20. 28 1月, 2015 1 次提交
  21. 17 1月, 2015 1 次提交
  22. 14 1月, 2015 1 次提交
  23. 10 1月, 2015 2 次提交
  24. 06 1月, 2015 3 次提交
  25. 04 1月, 2015 7 次提交
  26. 03 1月, 2015 3 次提交
    • C
      Add config to halt callback chain on return false · 9c65c539
      claudiob 提交于
      This stems from [a comment](rails#17227 (comment)) by @dhh.
      In summary:
      
      * New Rails 5.0 apps will not accept `return false` as a way to halt callback chains, and will not display a deprecation warning.
      * Existing apps ported to Rails 5.0 will still accept `return false` as a way to halt callback chains, albeit with a deprecation warning.
      
      For this purpose, this commit introduces a Rails configuration option:
      
      ```ruby
      config.active_support.halt_callback_chains_on_return_false
      ```
      
      For new Rails 5.0 apps, this option will be set to `false` by a new initializer
      `config/initializers/callback_terminator.rb`:
      
      ```ruby
      Rails.application.config.active_support.halt_callback_chains_on_return_false = false
      ```
      
      For existing apps ported to Rails 5.0, the initializers above will not exist.
      Even running `rake rails:update` will not create this initializer.
      
      Since the default value of `halt_callback_chains_on_return_false` is set to
      `true`, these apps will still accept `return true` as a way to halt callback
      chains, displaying a deprecation warning.
      
      Developers will be able to switch to the new behavior (and stop the warning)
      by manually adding the line above to their `config/application.rb`.
      
      A gist with the suggested release notes to add to Rails 5.0 after this
      commit is available at https://gist.github.com/claudiob/614c59409fb7d11f2931
      9c65c539
    • C
      Deprecate `false` as the way to halt AS callbacks · d217daf6
      claudiob 提交于
      After this commit, returning `false` in a callback will display a deprecation
      warning to make developers aware of the fact that they need to explicitly
      `throw(:abort)` if their intention is to halt a callback chain.
      
      This commit also patches two internal uses of AS::Callbacks (inside
      ActiveRecord and ActionDispatch) which sometimes return `false` but whose
      returned value is not meaningful for the purpose of execution.
      
      In both cases, the returned value is set to `true`, which does not affect the
      execution of the callbacks but prevents unrequested deprecation warnings from
      showing up.
      d217daf6
    • C
      Throw :abort halts default CallbackChains · 2386daab
      claudiob 提交于
      This commit changes arguments and default value of CallbackChain's :terminator
      option.
      
      After this commit, Chains of callbacks defined **without** an explicit
      `:terminator` option will be halted as soon as a `before_` callback throws
      `:abort`.
      
      Chains of callbacks defined **with** a `:terminator` option will maintain their
      existing behavior of halting as soon as a `before_` callback matches the
      terminator's expectation. For instance, ActiveModel's callbacks will still
      halt the chain when a `before_` callback returns `false`.
      2386daab