| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
option added (default is Monday)
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Because Process::Status has no instance_variables, the
ActiveSupport version of #to_json produces {}, which isn't good.
Therefore, we implement our own #as_json, which makes it useful
again.
Fixes #4857
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Hash#merge accepts block that you can use to customize how hash values
are merged. This change makes merge and deep_merge compatible.
|
| | | | |
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
ActiveSupport::Deprecation is now a class rather than a module. You can
get instance of ActiveSupport::Deprecation calling #instance method.
ActiveSupport::Deprecation.instance
But when you need to get new object od ActiveSupport::Deprecation you
need to just call #new.
@instance = ActiveSupport::Deprecation.new
Since you can create a new object, you can change the version and the
name of the library where the deprecator concerned.
ActiveSupport::Deprecation.new('2.0', 'MyGem')
If you need use another deprecator instance you can select it in the
options of deprecate method.
deprecate :method, :deprecator => deprecator_instance
Documentation has been updated.
|
|/ / |
|
|\ \ |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Refactored common date and time calculations.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Added the `DateAndTime::Calculations` module that is included in Time
and Date. It houses common calculations to reduce duplicated code.
* Simplified and cleaned-up the calculation code.
* Removed duplication in tests by adding a behavior module for shared
tests. I also added some missing tests.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | | |
The revised test assumed that the default permissions of a file
matched the umask of the process, but in the general case that
depends also on the file system. This test was failing in the
/vagrant shared folder of Rails development boxes.
|
|\ \ \
| | | |
| | | | |
Remove j alias for ERB::Util.json_escape
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Removed in 0228a73b1094a3e19ad291d2ce4789890c09578a, pull request #7310.
|
| |/ /
|/| | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
activemodel/lib/active_model/secure_password.rb
activerecord/lib/active_record/associations/collection_proxy.rb
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content
Closes #7215
|
|\ \ \ \
| | | | |
| | | | | |
Make ActiveSupport::Inflector locale aware and multilingual
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The Inflector is currently not very supportive of internationalized
websites. If a user wants to singularize and/or pluralize words based on
any locale other than English, they must define each case in locale
files. Rather than create large locale files with mappings between
singular and plural words, why not allow the Inflector to accept a
locale?
This patch makes ActiveSupport::Inflector locale aware and uses `:en`` unless
otherwise specified. Users will still be provided a list of English (:en)
inflections, but they may additionally define inflection rules for other
locales. Each list is kept separately and permanently. There is no reason to
limit users to one list of inflections:
ActiveSupport::Inflector.inflections(:es) do |inflect|
inflect.plural(/$/, 's')
inflect.plural(/([^aeéiou])$/i, '\1es')
inflect.plural(/([aeiou]s)$/i, '\1')
inflect.plural(/z$/i, 'ces')
inflect.plural(/á([sn])$/i, 'a\1es')
inflect.plural(/é([sn])$/i, 'e\1es')
inflect.plural(/í([sn])$/i, 'i\1es')
inflect.plural(/ó([sn])$/i, 'o\1es')
inflect.plural(/ú([sn])$/i, 'u\1es')
inflect.singular(/s$/, '')
inflect.singular(/es$/, '')
inflect.irregular('el', 'los')
end
'ley'.pluralize(:es) # => "leyes"
'ley'.pluralize(:en) # => "leys"
'avión'.pluralize(:es) # => "aviones"
'avión'.pluralize(:en) # => "avións"
A multilingual Inflector should be of use to anybody that is tasked with
internationalizing their Rails application.
Signed-off-by: David Celis <david@davidcelis.com>
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
class_attribute is a building block and using define_method
can be much slower for such basic method definitions.
This reverts commit d59208d7032e2be855a89ad8d4685cc08dd7cdb3.
|
| | | | |
|
| | | | |
|
|/ / /
| | |
| | |
| | | |
object does not implement the method
|
|\ \ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This file uses Time.zone, which is defined in
active_support/core_ext/time/zones.rb.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
This way you can `require 'active_record/core_ext/time'` for example
I see these libs are available through `active_record/time` but not
individually
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Calculate the seconds since the UNIX epoch using the difference in
Julian day numbers from the epoch date. By reducing the Rational math
to just the offset component this gives a significant improvement.
Benchmark:
Calculating --------------------------------------------
new 27733 i/100ms
current 15031 i/100ms
new 27737 i/100ms
current 15549 i/100ms
--------------------------------------------------------
new 548182.1 (±0.9%) i/s - 2745567 in 5.008943s
current 216380.9 (±1.6%) i/s - 1082232 in 5.002781s
new 510281.9 (±1.2%) i/s - 2551804 in 5.001525s
current 219858.3 (±1.8%) i/s - 1103979 in 5.023039s
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There appears to be a bug with DateTime#strftime("%s") on 32-bit platforms.
Bug report: http://bugs.ruby-lang.org/issues/6683
This reverts commit 210cd756a628cc19c0d6e44bee8c33dfb2d9d598.
|
| | |
| | |
| | |
| | |
| | | |
Use Time.new to create times where the current offset is not zero or
not in the local time zone - closes #4847 and #6651.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently if the offset is not zero then to_time returns self which
can lead to errors where a developer assumes that the value is a
Time. To solve this we can use the native implementation of
DateTime#to_time in Ruby 1.9.3 as it handles offsets properly and
is faster than our override.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The native implementation of the seconds since the UNIX epoch in
strftime is significantly faster than our method.
Benchmark:
----------
require 'benchmark/ips'
require 'date'
require 'time'
date = DateTime.civil(1253,7,6,20,4,0)
Benchmark.ips do |x|
x.report("strftime.to_i") { date.strftime('%s').to_i }
x.report("ssue.to_i") { ((date - DateTime.civil(1970)) * 86400).to_i }
x.report("strftime.to_f") { date.strftime('%s').to_f }
x.report("ssue.to_f") { ((date - DateTime.civil(1970)) * 86400).to_f }
end
Output:
-------
Calculating -------------------------------------
strftime.to_i 26480 i/100ms
ssue.to_i 13818 i/100ms
strftime.to_f 26561 i/100ms
ssue.to_f 14479 i/100ms
-------------------------------------------------
strftime.to_i 616937.3 (±2.4%) i/s - 3098160 in 5.024749s
ssue.to_i 200108.8 (±6.9%) i/s - 994896 in 4.999278s
strftime.to_f 553581.3 (±2.2%) i/s - 2788905 in 5.040397s
ssue.to_f 204260.3 (±4.3%) i/s - 1028009 in 5.043072s
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
activemodel/lib/active_model/errors.rb
|
| | | |
| | | |
| | | |
| | | | |
1eecd9483b0439ab4913beea36f0d0e2aa0518c7
|
| | | |
| | | |
| | | | |
See https://gist.github.com/3007749 for justification
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Also simplify I18n logic for Array#to_sentence, doing only one lookup
for all keys and using merge!, instead of one lookup for each option key.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If you selectively require core_exts (e.g., require
'active_support/core_ext/string'), it is possible for
'active_support/core_ext/time/calculations' to be required when
`ActiveSupport::TimeWithZone` is not available. If this happens, the next call
to Time.=== will fail with a NameError.
|
| | | |
|
| | | |
|
|\ \ \ |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Ruby2.0 already has LoadError#path.
|
| | | | |
|
|/ / /
| | |
| | |
| | | |
Module#methods are Symbols in Ruby >= 1.9
|
|\ \ \ |
|
| | | | |
|