Commit Graph

938 Commits

Author SHA1 Message Date
Alexey Chernenkov
0e953c94b1 Unify cattr_* interface: allow to pass a block to cattr_reader.
Example:

    class A
      cattr_reader(:defr) { 'default_reader_value' }
    end
    A.defr # => 'default_reader_value'
2013-11-15 19:54:51 +06:00
KD
133399482c Array#split preserving the calling array 2013-11-11 11:32:30 +05:30
claudiob
c61544c781 Add +capitalize+ option to Inflector.humanize
So strings can be humanized without being capitalized:

    'employee_salary'.humanize                    # => "Employee salary"
    'employee_salary'.humanize(capitalize: false) # => "employee salary"
2013-11-06 13:03:46 -08:00
David Heinemeier Hansson
423249504a Added Numeric#in_milliseconds, like 1.hour.in_milliseconds, so we can feed them to JavaScript functions like getTime(). 2013-11-02 15:40:16 -07:00
Jeremy Kemper
dae66a0c97 Merge pull request #12203 from chancancode/eager_load_json
Eagerload active_support/json/encoding in active_support/core_ext/object/to_json
2013-10-30 10:43:43 -07:00
Antonio Santos
f13fce617d slice! should not remove default hash value/proc 2013-10-24 09:17:35 +02:00
Vipul A M
ec620e0984 $SAFE = 4; has been removed with Ruby 2.1
For background -
https://bugs.ruby-lang.org/issues/8468
Changset - https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41259/diff/test/ruby/test_thread.rb
2013-10-14 21:52:25 +05:30
Jeremy Kemper
365110196a Revert "Merge pull request #12480 from iwiznia/master"
This reverts commit e5f5a838b96a362534d9bb60d02334439ed9784c, reversing
changes made to d7567f3290a50952494e9213556a1f283a6cf3a0.
2013-10-11 13:05:29 -07:00
Ionatan Wiznia
90871f7198 flatten and flatten! methods for ActiveSupport::Duration 2013-10-11 12:50:23 +02:00
Andrew White
ffc8abd41b Merge pull request #11474 from bogdan/time-with-zone-succ
Prevent server blow up when iterating over TimeWithZone Range
2013-09-22 12:33:12 -07:00
Godfrey Chan
64c88fb5d2 Moved all JSON core extensions into core_ext/object/json
TL;DR The primary driver is to remove autoload surprise.

This is related to #12106. (The root cause for that ticket is that
json/add defines Regexp#to_json among others, but here I'll reproduce
the problem without json/add.)

Before:

   >> require 'active_support/core_ext/to_json'
   => true
   >> //.as_json
   NoMethodError: undefined method `as_json' for //:Regexp
     from (irb):3
     from /Users/godfrey/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in `<main>'
   >> //.to_json
   => "\"(?-mix:)\""
   >> //.as_json
   => "(?-mix:)"

After:

   >> require 'active_support/core_ext/to_json'
   => true
   >> //.as_json
   => "(?-mix:)"

This is because ActiveSupport::JSON is autoloaded the first time
Object#to_json is called, which causes additional core extentions
(previously defined in active_support/json/encoding.rb) to be loaded.

When someone require 'active_support/core_ext', the expectation is
that it would add certain methods to the core classes NOW. The
previous behaviour causes additional methods to be loaded the first
time you call `to_json`, which could cause nasty surprises and other
unplesant side-effects.

This change moves all core extensions in to core_ext/json. AS::JSON is
still autoloaded on first #to_json call, but since it nolonger
include the core extensions, it should address the aforementioned bug.

*Requiring core_ext/object/to_json now causes a deprecation warnning*
2013-09-13 03:04:10 -07:00
Rafael Mendonça França
bca623bc53 Merge pull request #12200 from dchelimsky/simplify-duration-inspect-even-more
Reduce Duration#inspect to a single series of transformations
2013-09-11 14:58:46 -07:00
David Chelimsky
b16b08ebde Reduce Duration#inspect to a single series of transformations
* eliminates need for temp Hash

Also added a couple of examples to DurationTest to specify:

* duration can be defined with units out of order e.g.
  1.month + 1.year + 1.second + 1.day
* equality with a Fixnum works regardless of which operand is on which
  side of the operator
2013-09-11 15:28:38 +02:00
Anupam Choudhury
44f203b0e3 Removed unused modules and classes 2013-09-10 16:44:44 +05:30
Anupam Choudhury
f3e4069ede Removed unnecessary require 2013-09-10 13:22:30 +05:30
Federico Ravasio
a9f6c8f8e1 Skip tests involving $SAFE, it's not supported on Rubinius. 2013-08-21 17:07:45 +02:00
Nick Howard
dfb923e6e5 ensure freeze on Thread freezes locals 2013-08-19 12:39:40 -06:00
David Heinemeier Hansson
5da23a3f92 Add String#remove(pattern) as a short-hand for the common pattern of String#gsub(pattern, '') 2013-08-13 12:16:25 -05:00
Andrew White
dfcef831b5 Fix unused variable warning
We need to call `in_time_zone` to test that it isn't modifying the receiver
but since the variable isn't used it raises a warning so add an assertion
to make Ruby think it's being used.
2013-08-04 07:09:30 +01:00
Gilad Zohari
3102a9aa4c Refactor Date, Time, DateTime timezone methods
Similar implementations of #in_time_zone exists for Date, Time and DateTime so
method is extracted into its own module. Also some logic is extracted into
private method.
2013-08-01 00:27:25 +03:00
Andrew White
c901056131 Merge pull request #10879 from makaroni4/master
Added Time#middle_of_day method
2013-07-29 10:25:06 -07:00
Andrew White
88c0ef4d4f Fix handling of offsets with Time#to_s(:iso8601)
Use a lambda to ensure that the generated string respects the offset of
the time value. Also add DateTime#to_s(:iso8601) and Date#to_s(:iso8601)
for completeness.
2013-07-29 12:31:20 +01:00
David Heinemeier Hansson
b67a80de9b Add Time#to_s(:iso8601) for easy conversion of times to the iso8601 format for easy Javascript date parsing 2013-07-28 16:34:43 -05:00
Anatoli Makarevich
1b6bbb0953 Added Time#middle_of_day
Added middle_of_day method to Date and DateTime
2013-07-28 23:29:50 +04:00
Bogdan Gusiev
f9e60c74b6 Disable ability to iterate over a Range of TimeWithZone 2013-07-19 11:06:11 +03:00
Andrew White
07a4c76a07 Only raise DelegationError if it's is the source of the exception
This fixes situations where nested NoMethodError exceptions are masked
by delegations. This would cause confusion especially where there was a
problem in the Rails booting process because of a delegation in the
routes reloading code.

Fixes #10559
2013-07-11 09:05:32 +01:00
Andrew White
4d733d2dd4 Add failing test for #9562
Rails 4.0.0 fails when trying to encode an ActiveSupport::TimeWithZone
that wraps a DateTime instance. This is fixed on master so add a test
to prevent regression.

(cherry picked from commit ad01b8da354268cebfae1519c28d19d75576ccb1)
2013-07-10 15:49:09 +01:00
Andrew White
c42260a325 Return local time for backwards compatibility 2013-07-09 15:50:14 +01:00
Andrew White
1b3873730b Retain UTC offset when using Time.at_with_coercion
The standard Ruby behavior for Time.at is to return the same type of
time when passing an instance of Time as a single argument. Since the
an ActiveSupport::TimeWithZone instance may be a different timezone than
the system timezone and DateTime just understands offsets the best we
can do is to return an instance of Time with the correct offset.

Fixes #11350.
2013-07-09 13:43:56 +01:00
Neer Friedman
484253515c Fix microsecond precision of Time#at_with_coercion
When Time.at_with_coercion (wraps Time.at) is called with a single
argument that "acts_like?(:time)" it is coerced to integer thus losing
it's microsecond percision.

This commits changes this to use `#to_f` to prevent the problem
2013-07-09 13:43:56 +01:00
Marc Schütz
20c065594f Make HashWithIndifferentAccess#select always return the hash.
Hash#select! returns nil if the hash didn't change and thus behaves differently
from select, so it's return value can't be used as result for the latter.
2013-07-06 15:56:07 +02:00
Arun Agrawal
0cb0625c7f Fixed test broken by local_constant_names
depreciation removed
2013-07-03 19:56:49 +02:00
Arun Agrawal
36321d85e9 Remove deprecated String#encoding_aware?
core extensions (`core_ext/string/encoding`).
2013-07-03 19:50:19 +02:00
Vipul A M
ec5e03bf67 Remove deprecated Time#time_with_datetime_fallback, Time#utc_time
and `Time#local_time` in favour of `Time#utc` and `Time#local`
2013-07-03 18:52:53 +05:30
Carlos Antonio da Silva
01f0c3f308 Remove deprecated Hash#diff with no replacement.
If you're using it to compare hashes for the purpose of testing,
please use MiniTest's assert_equal instead.
2013-07-02 23:32:38 -03:00
Vipul A M
4bec1da79b Remove deprecated Date#to_time_in_current_zone 2013-07-02 11:22:19 +05:30
Carlos Antonio da Silva
f62fb985b6 Remove deprecated Proc#bind with no replacement. 2013-07-01 22:38:28 -03:00
Carlos Antonio da Silva
1c06bd17a9 Remove deprecated Array#uniq_by and Array#uniq_by!
Use native Array#uniq and Array#uniq! instead.
2013-07-01 22:33:42 -03:00
Carlos Antonio da Silva
bbbedeeb89 Move delegation error constant to inside Module 2013-06-26 20:17:58 -03:00
Yves Senn
3f50dd21c1 Merge pull request #10828 from southpolesteve/delegation_error_class
Create DelegationError class
2013-06-26 13:20:26 -07:00
Steve Faulkner
8139d727c5 Add DelegationError class. Rasied by delegation to a nil object 2013-06-26 15:12:54 -05:00
Rafael Mendonça França
78234fe605 Merge pull request #10740 from mrsimo/hash-with-indifferent-access-select
HashWithIndifferentAccess#select working as intended
2013-06-14 13:53:31 -07:00
Andrew White
a272d0cbe2 Add missing nsec test for 17f5d8e 2013-06-13 12:21:19 +01:00
Andrew White
17f5d8e062 Keep sub-second resolution when wrapping a DateTime value
Add `DateTime#usec` and `DateTime#nsec` so that `ActiveSupport::TimeWithZone`
keeps sub-second resolution when wrapping a `DateTime` value.

Fixes #10855
2013-06-13 12:01:12 +01:00
Andrew White
b7f9de27f0 Override Time.at to work with Time-like values
Time.at allows passing a single Time argument which is then converted
to an integer. The conversion code since 1.9.3r429 explicitly checks
for an instance of Time so we need to override it to allow DateTime
and ActiveSupport::TimeWithZone values.
2013-06-08 09:50:15 +01:00
Rafael Mendonça França
424fa92b35 Merge pull request #10784 from senny/10526_prevent_key_transformation
Prevent side effects in `Hash#with_indifferent_access`.
2013-06-03 16:46:59 -07:00
David Heinemeier Hansson
a6fe33d8a3 Allow Date to be compared with Time (like it was possible to compare Time with Date) 2013-06-03 16:47:48 +02:00
Yves Senn
c44a929f49 Prevent side effects in Hash#with_indifferent_access. 2013-05-29 08:43:35 +02:00
Carlos Antonio da Silva
c3890d38cb Merge pull request #10763 from senny/10758_to_sentence_with_blank_elements
test-case for `Array#to_sentence` with `blank?` items.
2013-05-26 13:51:49 -07:00
Yves Senn
27b8a99263 add test-case for `Array#to_sentence with blank items. 2013-05-26 18:47:23 +02:00