activesupport 2.3.5 → 3.0.0.beta3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +66 -9
- data/lib/active_support/all.rb +2 -7
- data/lib/active_support/backtrace_cleaner.rb +31 -9
- data/lib/active_support/base64.rb +9 -0
- data/lib/active_support/basic_object.rb +7 -10
- data/lib/active_support/benchmarkable.rb +60 -0
- data/lib/active_support/buffered_logger.rb +14 -9
- data/lib/active_support/cache/compressed_mem_cache_store.rb +2 -0
- data/lib/active_support/cache/file_store.rb +35 -17
- data/lib/active_support/cache/mem_cache_store.rb +32 -23
- data/lib/active_support/cache/memory_store.rb +17 -10
- data/lib/active_support/cache/strategy/local_cache.rb +9 -1
- data/lib/active_support/cache.rb +75 -55
- data/lib/active_support/callbacks.rb +490 -169
- data/lib/active_support/concern.rb +29 -0
- data/lib/active_support/configurable.rb +35 -0
- data/lib/active_support/core_ext/array/access.rb +39 -46
- data/lib/active_support/core_ext/array/conversions.rb +145 -182
- data/lib/active_support/core_ext/array/extract_options.rb +26 -17
- data/lib/active_support/core_ext/array/grouping.rb +87 -93
- data/lib/active_support/core_ext/array/random_access.rb +4 -10
- data/lib/active_support/core_ext/array/uniq_by.rb +17 -0
- data/lib/active_support/core_ext/array/wrap.rb +22 -0
- data/lib/active_support/core_ext/array.rb +2 -10
- data/lib/active_support/core_ext/big_decimal/conversions.rb +27 -0
- data/lib/active_support/core_ext/big_decimal.rb +1 -0
- data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +16 -20
- data/lib/active_support/core_ext/cgi.rb +0 -4
- data/lib/active_support/core_ext/class/attribute.rb +70 -0
- data/lib/active_support/core_ext/class/attribute_accessors.rb +40 -31
- data/lib/active_support/core_ext/class/delegating_attributes.rb +37 -40
- data/lib/active_support/core_ext/class/inheritable_attributes.rb +100 -11
- data/lib/active_support/core_ext/class/subclasses.rb +55 -0
- data/lib/active_support/core_ext/class.rb +1 -1
- data/lib/active_support/core_ext/date/acts_like.rb +8 -0
- data/lib/active_support/core_ext/date/calculations.rb +218 -228
- data/lib/active_support/core_ext/date/conversions.rb +87 -96
- data/lib/active_support/core_ext/date/freeze.rb +31 -0
- data/lib/active_support/core_ext/date_time/acts_like.rb +13 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +97 -110
- data/lib/active_support/core_ext/date_time/conversions.rb +85 -85
- data/lib/active_support/core_ext/date_time/zones.rb +17 -0
- data/lib/active_support/core_ext/enumerable.rb +18 -13
- data/lib/active_support/core_ext/exception.rb +1 -43
- data/lib/active_support/core_ext/file/atomic.rb +35 -40
- data/lib/active_support/core_ext/file/path.rb +5 -0
- data/lib/active_support/core_ext/file.rb +0 -4
- data/lib/active_support/core_ext/float/rounding.rb +15 -20
- data/lib/active_support/core_ext/float.rb +0 -6
- data/lib/active_support/core_ext/hash/conversions.rb +255 -229
- data/lib/active_support/core_ext/hash/deep_merge.rb +12 -19
- data/lib/active_support/core_ext/hash/diff.rb +11 -17
- data/lib/active_support/core_ext/hash/except.rb +21 -22
- data/lib/active_support/core_ext/hash/indifferent_access.rb +8 -137
- data/lib/active_support/core_ext/hash/keys.rb +38 -45
- data/lib/active_support/core_ext/hash/reverse_merge.rb +25 -32
- data/lib/active_support/core_ext/hash/slice.rb +35 -37
- data/lib/active_support/core_ext/hash.rb +8 -14
- data/lib/active_support/core_ext/integer/inflections.rb +10 -16
- data/lib/active_support/core_ext/integer/multiple.rb +6 -0
- data/lib/active_support/core_ext/integer/time.rb +36 -42
- data/lib/active_support/core_ext/integer.rb +1 -7
- data/lib/active_support/core_ext/kernel/debugger.rb +1 -1
- data/lib/active_support/core_ext/kernel/reporting.rb +9 -7
- data/lib/active_support/core_ext/kernel/requires.rb +3 -1
- data/lib/active_support/core_ext/kernel/singleton_class.rb +13 -0
- data/lib/active_support/core_ext/kernel.rb +1 -1
- data/lib/active_support/core_ext/load_error.rb +16 -32
- data/lib/active_support/core_ext/logger.rb +3 -2
- data/lib/active_support/core_ext/module/aliasing.rb +64 -68
- data/lib/active_support/core_ext/module/anonymous.rb +24 -0
- data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +1 -1
- data/lib/active_support/core_ext/module/attr_internal.rb +4 -4
- data/lib/active_support/core_ext/module/attribute_accessors.rb +48 -42
- data/lib/active_support/core_ext/module/delegation.rb +22 -11
- data/lib/active_support/core_ext/module/deprecation.rb +9 -0
- data/lib/active_support/core_ext/module/introspection.rb +77 -79
- data/lib/active_support/core_ext/module/method_names.rb +14 -0
- data/lib/active_support/core_ext/module/reachable.rb +10 -0
- data/lib/active_support/core_ext/module/remove_method.rb +6 -0
- data/lib/active_support/core_ext/module/synchronization.rb +4 -1
- data/lib/active_support/core_ext/module.rb +7 -18
- data/lib/active_support/core_ext/name_error.rb +3 -4
- data/lib/active_support/core_ext/numeric/bytes.rb +35 -41
- data/lib/active_support/core_ext/numeric/time.rb +70 -74
- data/lib/active_support/core_ext/numeric.rb +1 -8
- data/lib/active_support/core_ext/object/acts_like.rb +10 -0
- data/lib/active_support/core_ext/object/blank.rb +20 -2
- data/lib/active_support/core_ext/object/conversions.rb +4 -15
- data/lib/active_support/core_ext/object/duplicable.rb +65 -0
- data/lib/active_support/core_ext/object/extending.rb +8 -77
- data/lib/active_support/core_ext/object/instance_variables.rb +0 -7
- data/lib/active_support/core_ext/object/misc.rb +2 -90
- data/lib/active_support/core_ext/object/returning.rb +42 -0
- data/lib/active_support/core_ext/object/to_param.rb +49 -0
- data/lib/active_support/core_ext/object/to_query.rb +27 -0
- data/lib/active_support/core_ext/{try.rb → object/try.rb} +4 -4
- data/lib/active_support/core_ext/object/with_options.rb +24 -0
- data/lib/active_support/core_ext/object.rb +10 -2
- data/lib/active_support/core_ext/proc.rb +3 -1
- data/lib/active_support/core_ext/process/daemon.rb +17 -19
- data/lib/active_support/core_ext/range/blockless_step.rb +24 -27
- data/lib/active_support/core_ext/range/conversions.rb +17 -23
- data/lib/active_support/core_ext/range/include_range.rb +18 -27
- data/lib/active_support/core_ext/range/overlaps.rb +6 -13
- data/lib/active_support/core_ext/range.rb +2 -9
- data/lib/active_support/core_ext/regexp.rb +5 -0
- data/lib/active_support/core_ext/rexml.rb +12 -7
- data/lib/active_support/core_ext/string/access.rb +88 -95
- data/lib/active_support/core_ext/string/behavior.rb +6 -12
- data/lib/active_support/core_ext/string/conversions.rb +20 -21
- data/lib/active_support/core_ext/string/exclude.rb +6 -0
- data/lib/active_support/core_ext/string/filters.rb +17 -23
- data/lib/active_support/core_ext/string/inflections.rb +147 -154
- data/lib/active_support/core_ext/string/interpolation.rb +1 -0
- data/lib/active_support/core_ext/string/multibyte.rb +68 -74
- data/lib/active_support/core_ext/string/output_safety.rb +105 -44
- data/lib/active_support/core_ext/string/starts_ends_with.rb +3 -34
- data/lib/active_support/core_ext/string/xchar.rb +10 -3
- data/lib/active_support/core_ext/string.rb +6 -20
- data/lib/active_support/core_ext/time/acts_like.rb +8 -0
- data/lib/active_support/core_ext/time/calculations.rb +276 -299
- data/lib/active_support/core_ext/time/conversions.rb +79 -84
- data/lib/active_support/core_ext/time/marshal.rb +56 -0
- data/lib/active_support/core_ext/time/publicize_conversion_methods.rb +10 -0
- data/lib/active_support/core_ext/time/zones.rb +73 -81
- data/lib/active_support/core_ext/uri.rb +2 -1
- data/lib/active_support/core_ext.rb +2 -7
- data/lib/active_support/dependencies/autoload.rb +50 -0
- data/lib/active_support/dependencies.rb +168 -197
- data/lib/active_support/deprecation/behaviors.rb +38 -0
- data/lib/active_support/deprecation/method_wrappers.rb +29 -0
- data/lib/active_support/deprecation/proxy_wrappers.rb +74 -0
- data/lib/active_support/deprecation/reporting.rb +56 -0
- data/lib/active_support/deprecation.rb +9 -187
- data/lib/active_support/duration.rb +6 -2
- data/lib/active_support/hash_with_indifferent_access.rb +141 -0
- data/lib/active_support/i18n.rb +3 -0
- data/lib/active_support/inflections.rb +1 -1
- data/lib/active_support/inflector/inflections.rb +211 -0
- data/lib/active_support/inflector/methods.rb +141 -0
- data/lib/active_support/inflector/transliterate.rb +77 -0
- data/lib/active_support/inflector.rb +4 -403
- data/lib/active_support/json/backends/jsongem.rb +16 -10
- data/lib/active_support/json/backends/yajl.rb +40 -0
- data/lib/active_support/json/backends/yaml.rb +14 -8
- data/lib/active_support/json/decoding.rb +17 -1
- data/lib/active_support/json/encoding.rb +164 -35
- data/lib/active_support/json/variable.rb +4 -3
- data/lib/active_support/lazy_load_hooks.rb +17 -0
- data/lib/active_support/memoizable.rb +8 -5
- data/lib/active_support/message_encryptor.rb +1 -0
- data/lib/active_support/message_verifier.rb +12 -29
- data/lib/active_support/multibyte/chars.rb +88 -31
- data/lib/active_support/multibyte/unicode_database.rb +5 -5
- data/lib/active_support/multibyte/utils.rb +6 -7
- data/lib/active_support/multibyte.rb +11 -6
- data/lib/active_support/notifications/fanout.rb +83 -0
- data/lib/active_support/notifications/instrumenter.rb +50 -0
- data/lib/active_support/notifications.rb +81 -0
- data/lib/active_support/option_merger.rb +2 -0
- data/lib/active_support/ordered_hash.rb +28 -11
- data/lib/active_support/ordered_options.rb +9 -1
- data/lib/active_support/railtie.rb +64 -0
- data/lib/active_support/rescuable.rb +11 -6
- data/lib/active_support/ruby/shim.rb +21 -0
- data/lib/active_support/test_case.rb +10 -8
- data/lib/active_support/testing/assertions.rb +17 -0
- data/lib/active_support/testing/declarative.rb +31 -12
- data/lib/active_support/testing/deprecation.rb +8 -10
- data/lib/active_support/testing/isolation.rb +153 -0
- data/lib/active_support/testing/pending.rb +48 -0
- data/lib/active_support/testing/performance.rb +342 -339
- data/lib/active_support/testing/setup_and_teardown.rb +48 -31
- data/lib/active_support/time/autoload.rb +5 -0
- data/lib/active_support/time.rb +34 -0
- data/lib/active_support/time_with_zone.rb +18 -12
- data/lib/active_support/values/time_zone.rb +51 -68
- data/lib/active_support/version.rb +5 -4
- data/lib/active_support/whiny_nil.rb +5 -9
- data/lib/active_support/xml_mini/jdom.rb +13 -7
- data/lib/active_support/xml_mini/libxml.rb +38 -91
- data/lib/active_support/xml_mini/libxmlsax.rb +85 -0
- data/lib/active_support/xml_mini/nokogiri.rb +40 -31
- data/lib/active_support/xml_mini/nokogirisax.rb +83 -0
- data/lib/active_support/xml_mini/rexml.rb +30 -9
- data/lib/active_support/xml_mini.rb +2 -0
- data/lib/active_support.rb +46 -30
- metadata +136 -215
- data/lib/active_support/cache/drb_store.rb +0 -14
- data/lib/active_support/core_ext/array/wrapper.rb +0 -24
- data/lib/active_support/core_ext/base64/encoding.rb +0 -16
- data/lib/active_support/core_ext/base64.rb +0 -4
- data/lib/active_support/core_ext/bigdecimal/conversions.rb +0 -37
- data/lib/active_support/core_ext/bigdecimal.rb +0 -6
- data/lib/active_support/core_ext/blank.rb +0 -2
- data/lib/active_support/core_ext/class/removal.rb +0 -50
- data/lib/active_support/core_ext/date/behavior.rb +0 -42
- data/lib/active_support/core_ext/date.rb +0 -10
- data/lib/active_support/core_ext/date_time.rb +0 -12
- data/lib/active_support/core_ext/duplicable.rb +0 -43
- data/lib/active_support/core_ext/float/time.rb +0 -27
- data/lib/active_support/core_ext/integer/even_odd.rb +0 -29
- data/lib/active_support/core_ext/kernel/daemonizing.rb +0 -7
- data/lib/active_support/core_ext/module/inclusion.rb +0 -30
- data/lib/active_support/core_ext/module/loading.rb +0 -23
- data/lib/active_support/core_ext/module/model_naming.rb +0 -25
- data/lib/active_support/core_ext/numeric/conversions.rb +0 -19
- data/lib/active_support/core_ext/object/metaclass.rb +0 -13
- data/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
- data/lib/active_support/core_ext/pathname.rb +0 -7
- data/lib/active_support/core_ext/string/bytesize.rb +0 -5
- data/lib/active_support/core_ext/string/iterators.rb +0 -23
- data/lib/active_support/core_ext/symbol.rb +0 -14
- data/lib/active_support/core_ext/time/behavior.rb +0 -13
- data/lib/active_support/core_ext/time.rb +0 -42
- data/lib/active_support/json/encoders/date.rb +0 -22
- data/lib/active_support/json/encoders/date_time.rb +0 -22
- data/lib/active_support/json/encoders/enumerable.rb +0 -17
- data/lib/active_support/json/encoders/false_class.rb +0 -7
- data/lib/active_support/json/encoders/hash.rb +0 -56
- data/lib/active_support/json/encoders/nil_class.rb +0 -7
- data/lib/active_support/json/encoders/numeric.rb +0 -21
- data/lib/active_support/json/encoders/object.rb +0 -10
- data/lib/active_support/json/encoders/regexp.rb +0 -9
- data/lib/active_support/json/encoders/string.rb +0 -9
- data/lib/active_support/json/encoders/symbol.rb +0 -5
- data/lib/active_support/json/encoders/time.rb +0 -22
- data/lib/active_support/json/encoders/true_class.rb +0 -7
- data/lib/active_support/vendor/builder-2.1.2/blankslate.rb +0 -113
- data/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +0 -20
- data/lib/active_support/vendor/builder-2.1.2/builder/css.rb +0 -250
- data/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +0 -115
- data/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +0 -139
- data/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +0 -63
- data/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +0 -328
- data/lib/active_support/vendor/builder-2.1.2/builder.rb +0 -13
- data/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE +0 -20
- data/lib/active_support/vendor/i18n-0.1.3/README.textile +0 -20
- data/lib/active_support/vendor/i18n-0.1.3/Rakefile +0 -5
- data/lib/active_support/vendor/i18n-0.1.3/i18n.gemspec +0 -27
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb +0 -214
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb +0 -53
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb +0 -199
- data/lib/active_support/vendor/i18n-0.1.3/test/all.rb +0 -5
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -99
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -124
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.rb +0 -1
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.yml +0 -3
- data/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -567
- data/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +0 -1107
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +0 -47
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +0 -228
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +0 -55
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +0 -219
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +0 -40
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +0 -166
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +0 -86
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +0 -283
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +0 -136
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +0 -204
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +0 -161
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +0 -274
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +0 -149
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +0 -194
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +0 -139
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +0 -144
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +0 -131
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +0 -282
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +0 -74
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +0 -205
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +0 -171
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +0 -288
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +0 -196
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +0 -67
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +0 -73
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +0 -161
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +0 -87
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +0 -31
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +0 -164
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +0 -24
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +0 -34
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +0 -59
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +0 -47
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +0 -78
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +0 -121
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +0 -65
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +0 -164
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +0 -270
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +0 -187
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +0 -29
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +0 -193
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +0 -37
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +0 -16
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +0 -228
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +0 -188
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +0 -181
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +0 -197
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +0 -179
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +0 -276
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +0 -218
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +0 -168
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +0 -268
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +0 -288
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +0 -211
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +0 -170
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +0 -181
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +0 -187
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +0 -176
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +0 -215
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +0 -173
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +0 -172
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +0 -183
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +0 -170
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +0 -212
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +0 -202
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +0 -28
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +0 -26
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +0 -52
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +0 -51
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +0 -44
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +0 -98
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +0 -56
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +0 -292
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +0 -508
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +0 -56
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +0 -40
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +0 -94
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +0 -198
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +0 -129
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +0 -33
- data/lib/active_support/vendor.rb +0 -28
- data/lib/activesupport.rb +0 -2
|
@@ -1,18 +1,26 @@
|
|
|
1
|
-
require 'active_support/callbacks'
|
|
2
|
-
|
|
3
1
|
module ActiveSupport
|
|
4
2
|
module Testing
|
|
5
3
|
module SetupAndTeardown
|
|
6
|
-
|
|
7
|
-
base.class_eval do
|
|
8
|
-
include ActiveSupport::Callbacks
|
|
9
|
-
define_callbacks :setup, :teardown
|
|
4
|
+
extend ActiveSupport::Concern
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
included do
|
|
7
|
+
include ActiveSupport::Callbacks
|
|
8
|
+
define_callbacks :setup, :teardown
|
|
9
|
+
|
|
10
|
+
if defined?(MiniTest::Assertions) && TestCase < MiniTest::Assertions
|
|
11
|
+
include ForMiniTest
|
|
12
|
+
else
|
|
13
|
+
include ForClassicTestUnit
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
module ClassMethods
|
|
18
|
+
def setup(*args, &block)
|
|
19
|
+
set_callback(:setup, :before, *args, &block)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def teardown(*args, &block)
|
|
23
|
+
set_callback(:teardown, :after, *args, &block)
|
|
16
24
|
end
|
|
17
25
|
end
|
|
18
26
|
|
|
@@ -20,15 +28,16 @@ module ActiveSupport
|
|
|
20
28
|
def run(runner)
|
|
21
29
|
result = '.'
|
|
22
30
|
begin
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
_run_setup_callbacks do
|
|
32
|
+
result = super
|
|
33
|
+
end
|
|
25
34
|
rescue Exception => e
|
|
26
|
-
result = runner.puke(self.class,
|
|
35
|
+
result = runner.puke(self.class, method_name, e)
|
|
27
36
|
ensure
|
|
28
37
|
begin
|
|
29
|
-
|
|
38
|
+
_run_teardown_callbacks
|
|
30
39
|
rescue Exception => e
|
|
31
|
-
result = runner.puke(self.class,
|
|
40
|
+
result = runner.puke(self.class, method_name, e)
|
|
32
41
|
end
|
|
33
42
|
end
|
|
34
43
|
result
|
|
@@ -44,23 +53,17 @@ module ActiveSupport
|
|
|
44
53
|
def run(result)
|
|
45
54
|
return if @method_name.to_s == "default_test"
|
|
46
55
|
|
|
47
|
-
|
|
48
|
-
assertion_counter_klass = if defined?(Mocha::TestCaseAdapter::AssertionCounter)
|
|
49
|
-
Mocha::TestCaseAdapter::AssertionCounter
|
|
50
|
-
else
|
|
51
|
-
Mocha::Integration::TestUnit::AssertionCounter
|
|
52
|
-
end
|
|
53
|
-
assertion_counter = assertion_counter_klass.new(result)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
+
mocha_counter = retrieve_mocha_counter(result)
|
|
56
57
|
yield(Test::Unit::TestCase::STARTED, name)
|
|
57
58
|
@_result = result
|
|
59
|
+
|
|
58
60
|
begin
|
|
59
61
|
begin
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
_run_setup_callbacks do
|
|
63
|
+
setup
|
|
64
|
+
__send__(@method_name)
|
|
65
|
+
mocha_verify(mocha_counter) if mocha_counter
|
|
66
|
+
end
|
|
64
67
|
rescue Mocha::ExpectationError => e
|
|
65
68
|
add_failure(e.message, e.backtrace)
|
|
66
69
|
rescue Test::Unit::AssertionFailedError => e
|
|
@@ -71,7 +74,7 @@ module ActiveSupport
|
|
|
71
74
|
ensure
|
|
72
75
|
begin
|
|
73
76
|
teardown
|
|
74
|
-
|
|
77
|
+
_run_teardown_callbacks
|
|
75
78
|
rescue Test::Unit::AssertionFailedError => e
|
|
76
79
|
add_failure(e.message, e.backtrace)
|
|
77
80
|
rescue Exception => e
|
|
@@ -80,12 +83,26 @@ module ActiveSupport
|
|
|
80
83
|
end
|
|
81
84
|
end
|
|
82
85
|
ensure
|
|
83
|
-
mocha_teardown if
|
|
86
|
+
mocha_teardown if mocha_counter
|
|
84
87
|
end
|
|
88
|
+
|
|
85
89
|
result.add_run
|
|
86
90
|
yield(Test::Unit::TestCase::FINISHED, name)
|
|
87
91
|
end
|
|
92
|
+
|
|
93
|
+
protected
|
|
94
|
+
|
|
95
|
+
def retrieve_mocha_counter(result) #:nodoc:
|
|
96
|
+
if using_mocha = respond_to?(:mocha_verify)
|
|
97
|
+
if defined?(Mocha::TestCaseAdapter::AssertionCounter)
|
|
98
|
+
Mocha::TestCaseAdapter::AssertionCounter.new(result)
|
|
99
|
+
else
|
|
100
|
+
Mocha::Integration::TestUnit::AssertionCounter.new(result)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
88
104
|
end
|
|
105
|
+
|
|
89
106
|
end
|
|
90
107
|
end
|
|
91
108
|
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
|
|
3
|
+
module ActiveSupport
|
|
4
|
+
autoload :Duration, 'active_support/duration'
|
|
5
|
+
autoload :TimeWithZone, 'active_support/time_with_zone'
|
|
6
|
+
autoload :TimeZone, 'active_support/values/time_zone'
|
|
7
|
+
|
|
8
|
+
on_load_all do
|
|
9
|
+
[Duration, TimeWithZone, TimeZone]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
require 'date'
|
|
14
|
+
require 'time'
|
|
15
|
+
|
|
16
|
+
require 'active_support/core_ext/time/publicize_conversion_methods'
|
|
17
|
+
require 'active_support/core_ext/time/marshal'
|
|
18
|
+
require 'active_support/core_ext/time/acts_like'
|
|
19
|
+
require 'active_support/core_ext/time/calculations'
|
|
20
|
+
require 'active_support/core_ext/time/conversions'
|
|
21
|
+
require 'active_support/core_ext/time/zones'
|
|
22
|
+
|
|
23
|
+
require 'active_support/core_ext/date/acts_like'
|
|
24
|
+
require 'active_support/core_ext/date/freeze'
|
|
25
|
+
require 'active_support/core_ext/date/calculations'
|
|
26
|
+
require 'active_support/core_ext/date/conversions'
|
|
27
|
+
|
|
28
|
+
require 'active_support/core_ext/date_time/acts_like'
|
|
29
|
+
require 'active_support/core_ext/date_time/calculations'
|
|
30
|
+
require 'active_support/core_ext/date_time/conversions'
|
|
31
|
+
require 'active_support/core_ext/date_time/zones'
|
|
32
|
+
|
|
33
|
+
require 'active_support/core_ext/integer/time'
|
|
34
|
+
require 'active_support/core_ext/numeric/time'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "active_support/values/time_zone"
|
|
2
|
+
require 'active_support/core_ext/object/acts_like'
|
|
2
3
|
|
|
3
4
|
module ActiveSupport
|
|
4
5
|
# A Time-like class that can represent a time in any time zone. Necessary because standard Ruby Time instances are
|
|
@@ -15,7 +16,7 @@ module ActiveSupport
|
|
|
15
16
|
# Time.zone.now # => Sun, 18 May 2008 13:07:55 EDT -04:00
|
|
16
17
|
# Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone # => Sat, 10 Feb 2007 15:30:45 EST -05:00
|
|
17
18
|
#
|
|
18
|
-
# See
|
|
19
|
+
# See Time and TimeZone for further documentation of these methods.
|
|
19
20
|
#
|
|
20
21
|
# TimeWithZone instances implement the same API as Ruby Time instances, so that Time and TimeWithZone instances are interchangable. Examples:
|
|
21
22
|
#
|
|
@@ -31,6 +32,10 @@ module ActiveSupport
|
|
|
31
32
|
# t.is_a?(Time) # => true
|
|
32
33
|
# t.is_a?(ActiveSupport::TimeWithZone) # => true
|
|
33
34
|
class TimeWithZone
|
|
35
|
+
def self.name
|
|
36
|
+
'Time' # Report class name as 'Time' to thwart type checking
|
|
37
|
+
end
|
|
38
|
+
|
|
34
39
|
include Comparable
|
|
35
40
|
attr_reader :time_zone
|
|
36
41
|
|
|
@@ -87,7 +92,7 @@ module ActiveSupport
|
|
|
87
92
|
alias_method :gmtoff, :utc_offset
|
|
88
93
|
|
|
89
94
|
def formatted_offset(colon = true, alternate_utc_string = nil)
|
|
90
|
-
utc? && alternate_utc_string ||
|
|
95
|
+
utc? && alternate_utc_string || TimeZone.seconds_to_utc_offset(utc_offset, colon)
|
|
91
96
|
end
|
|
92
97
|
|
|
93
98
|
# Time uses +zone+ to display the time zone abbreviation, so we're duck-typing it.
|
|
@@ -108,9 +113,9 @@ module ActiveSupport
|
|
|
108
113
|
end
|
|
109
114
|
alias_method :iso8601, :xmlschema
|
|
110
115
|
|
|
111
|
-
# Coerces the date to a string for JSON encoding.
|
|
112
|
-
#
|
|
113
|
-
#
|
|
116
|
+
# Coerces the date to a string for JSON encoding. The default format is ISO 8601. You can get
|
|
117
|
+
# %Y/%m/%d %H:%M:%S +offset style by setting ActiveSupport::JSON::Encoding.use_standard_json_time_format
|
|
118
|
+
# to false.
|
|
114
119
|
#
|
|
115
120
|
# ==== Examples
|
|
116
121
|
#
|
|
@@ -149,8 +154,9 @@ module ActiveSupport
|
|
|
149
154
|
# <tt>:db</tt> format outputs time in UTC; all others output time in local.
|
|
150
155
|
# Uses TimeWithZone's +strftime+, so <tt>%Z</tt> and <tt>%z</tt> work correctly.
|
|
151
156
|
def to_s(format = :default)
|
|
152
|
-
|
|
153
|
-
|
|
157
|
+
if format == :db
|
|
158
|
+
utc.to_s(format)
|
|
159
|
+
elsif formatter = ::Time::DATE_FORMATS[format]
|
|
154
160
|
formatter.respond_to?(:call) ? formatter.call(self).to_s : strftime(formatter)
|
|
155
161
|
else
|
|
156
162
|
"#{time.strftime("%Y-%m-%d %H:%M:%S")} #{formatted_offset(false, 'UTC')}" # mimicking Ruby 1.9 Time#to_s format
|
|
@@ -239,10 +245,10 @@ module ActiveSupport
|
|
|
239
245
|
end
|
|
240
246
|
|
|
241
247
|
%w(year mon month day mday wday yday hour min sec to_date).each do |method_name|
|
|
242
|
-
class_eval <<-EOV
|
|
243
|
-
def #{method_name}
|
|
244
|
-
time.#{method_name}
|
|
245
|
-
end
|
|
248
|
+
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
|
249
|
+
def #{method_name} # def month
|
|
250
|
+
time.#{method_name} # time.month
|
|
251
|
+
end # end
|
|
246
252
|
EOV
|
|
247
253
|
end
|
|
248
254
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'active_support/core_ext/object/blank'
|
|
2
|
+
|
|
1
3
|
# The TimeZone class serves as a wrapper around TZInfo::Timezone instances. It allows us to do the following:
|
|
2
4
|
#
|
|
3
5
|
# * Limit the set of zones provided by TZInfo to a meaningful subset of 142 zones.
|
|
@@ -53,13 +55,13 @@ module ActiveSupport
|
|
|
53
55
|
"Newfoundland" => "America/St_Johns",
|
|
54
56
|
"Brasilia" => "America/Sao_Paulo",
|
|
55
57
|
"Buenos Aires" => "America/Argentina/Buenos_Aires",
|
|
56
|
-
"Georgetown" => "America/
|
|
58
|
+
"Georgetown" => "America/Guyana",
|
|
57
59
|
"Greenland" => "America/Godthab",
|
|
58
60
|
"Mid-Atlantic" => "Atlantic/South_Georgia",
|
|
59
61
|
"Azores" => "Atlantic/Azores",
|
|
60
62
|
"Cape Verde Is." => "Atlantic/Cape_Verde",
|
|
61
63
|
"Dublin" => "Europe/Dublin",
|
|
62
|
-
"Edinburgh" => "Europe/
|
|
64
|
+
"Edinburgh" => "Europe/London",
|
|
63
65
|
"Lisbon" => "Europe/Lisbon",
|
|
64
66
|
"London" => "Europe/London",
|
|
65
67
|
"Casablanca" => "Africa/Casablanca",
|
|
@@ -88,7 +90,7 @@ module ActiveSupport
|
|
|
88
90
|
"Bucharest" => "Europe/Bucharest",
|
|
89
91
|
"Cairo" => "Africa/Cairo",
|
|
90
92
|
"Helsinki" => "Europe/Helsinki",
|
|
91
|
-
"
|
|
93
|
+
"Kyiv" => "Europe/Kiev",
|
|
92
94
|
"Riga" => "Europe/Riga",
|
|
93
95
|
"Sofia" => "Europe/Sofia",
|
|
94
96
|
"Tallinn" => "Europe/Tallinn",
|
|
@@ -121,7 +123,7 @@ module ActiveSupport
|
|
|
121
123
|
"Kolkata" => "Asia/Kolkata",
|
|
122
124
|
"Mumbai" => "Asia/Kolkata",
|
|
123
125
|
"New Delhi" => "Asia/Kolkata",
|
|
124
|
-
"Kathmandu" => "Asia/
|
|
126
|
+
"Kathmandu" => "Asia/Kathmandu",
|
|
125
127
|
"Astana" => "Asia/Dhaka",
|
|
126
128
|
"Dhaka" => "Asia/Dhaka",
|
|
127
129
|
"Sri Jayawardenepura" => "Asia/Colombo",
|
|
@@ -170,6 +172,21 @@ module ActiveSupport
|
|
|
170
172
|
MAPPING.freeze
|
|
171
173
|
end
|
|
172
174
|
|
|
175
|
+
UTC_OFFSET_WITH_COLON = '%s%02d:%02d'
|
|
176
|
+
UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')
|
|
177
|
+
|
|
178
|
+
# Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
|
|
179
|
+
# and turns this into an +HH:MM formatted string. Example:
|
|
180
|
+
#
|
|
181
|
+
# TimeZone.seconds_to_utc_offset(-21_600) # => "-06:00"
|
|
182
|
+
def self.seconds_to_utc_offset(seconds, colon = true)
|
|
183
|
+
format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON
|
|
184
|
+
sign = (seconds < 0 ? '-' : '+')
|
|
185
|
+
hours = seconds.abs / 3600
|
|
186
|
+
minutes = (seconds.abs % 3600) / 60
|
|
187
|
+
format % [sign, hours, minutes]
|
|
188
|
+
end
|
|
189
|
+
|
|
173
190
|
include Comparable
|
|
174
191
|
attr_reader :name
|
|
175
192
|
|
|
@@ -177,20 +194,26 @@ module ActiveSupport
|
|
|
177
194
|
# offset is the number of seconds that this time zone is offset from UTC
|
|
178
195
|
# (GMT). Seconds were chosen as the offset unit because that is the unit that
|
|
179
196
|
# Ruby uses to represent time zone offsets (see Time#utc_offset).
|
|
180
|
-
def initialize(name, utc_offset, tzinfo = nil)
|
|
197
|
+
def initialize(name, utc_offset = nil, tzinfo = nil)
|
|
181
198
|
@name = name
|
|
182
199
|
@utc_offset = utc_offset
|
|
183
200
|
@tzinfo = tzinfo
|
|
201
|
+
@current_period = nil
|
|
184
202
|
end
|
|
185
203
|
|
|
186
204
|
def utc_offset
|
|
187
|
-
@utc_offset
|
|
205
|
+
if @utc_offset
|
|
206
|
+
@utc_offset
|
|
207
|
+
else
|
|
208
|
+
@current_period ||= tzinfo.current_period
|
|
209
|
+
@current_period.utc_offset
|
|
210
|
+
end
|
|
188
211
|
end
|
|
189
212
|
|
|
190
213
|
# Returns the offset of this time zone as a formatted string, of the
|
|
191
214
|
# format "+HH:MM".
|
|
192
215
|
def formatted_offset(colon=true, alternate_utc_string = nil)
|
|
193
|
-
utc_offset == 0 && alternate_utc_string ||
|
|
216
|
+
utc_offset == 0 && alternate_utc_string || self.class.seconds_to_utc_offset(utc_offset, colon)
|
|
194
217
|
end
|
|
195
218
|
|
|
196
219
|
# Compare this time zone to the parameter. The two are comapred first on
|
|
@@ -286,75 +309,29 @@ module ActiveSupport
|
|
|
286
309
|
tzinfo.period_for_local(time, dst)
|
|
287
310
|
end
|
|
288
311
|
|
|
289
|
-
# TODO: Preload instead of lazy load for thread safety
|
|
290
312
|
def tzinfo
|
|
291
|
-
|
|
292
|
-
|
|
313
|
+
@tzinfo ||= TimeZone.find_tzinfo(name)
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
# TODO: Preload instead of lazy load for thread safety
|
|
317
|
+
def self.find_tzinfo(name)
|
|
318
|
+
require 'tzinfo' unless defined?(::TZInfo)
|
|
319
|
+
::TZInfo::Timezone.get(MAPPING[name] || name)
|
|
320
|
+
rescue TZInfo::InvalidTimezoneIdentifier
|
|
321
|
+
nil
|
|
293
322
|
end
|
|
294
323
|
|
|
295
324
|
unless const_defined?(:ZONES)
|
|
296
325
|
ZONES = []
|
|
297
326
|
ZONES_MAP = {}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
"Arizona" ],
|
|
304
|
-
[-21_600, "Central Time (US & Canada)", "Saskatchewan", "Guadalajara",
|
|
305
|
-
"Mexico City", "Monterrey", "Central America" ],
|
|
306
|
-
[-18_000, "Eastern Time (US & Canada)", "Indiana (East)", "Bogota",
|
|
307
|
-
"Lima", "Quito" ],
|
|
308
|
-
[-16_200, "Caracas" ],
|
|
309
|
-
[-14_400, "Atlantic Time (Canada)", "La Paz", "Santiago" ],
|
|
310
|
-
[-12_600, "Newfoundland" ],
|
|
311
|
-
[-10_800, "Brasilia", "Buenos Aires", "Georgetown", "Greenland" ],
|
|
312
|
-
[ -7_200, "Mid-Atlantic" ],
|
|
313
|
-
[ -3_600, "Azores", "Cape Verde Is." ],
|
|
314
|
-
[ 0, "Dublin", "Edinburgh", "Lisbon", "London", "Casablanca",
|
|
315
|
-
"Monrovia", "UTC" ],
|
|
316
|
-
[ 3_600, "Belgrade", "Bratislava", "Budapest", "Ljubljana", "Prague",
|
|
317
|
-
"Sarajevo", "Skopje", "Warsaw", "Zagreb", "Brussels",
|
|
318
|
-
"Copenhagen", "Madrid", "Paris", "Amsterdam", "Berlin",
|
|
319
|
-
"Bern", "Rome", "Stockholm", "Vienna",
|
|
320
|
-
"West Central Africa" ],
|
|
321
|
-
[ 7_200, "Bucharest", "Cairo", "Helsinki", "Kyev", "Riga", "Sofia",
|
|
322
|
-
"Tallinn", "Vilnius", "Athens", "Istanbul", "Minsk",
|
|
323
|
-
"Jerusalem", "Harare", "Pretoria" ],
|
|
324
|
-
[ 10_800, "Moscow", "St. Petersburg", "Volgograd", "Kuwait", "Riyadh",
|
|
325
|
-
"Nairobi", "Baghdad" ],
|
|
326
|
-
[ 12_600, "Tehran" ],
|
|
327
|
-
[ 14_400, "Abu Dhabi", "Muscat", "Baku", "Tbilisi", "Yerevan" ],
|
|
328
|
-
[ 16_200, "Kabul" ],
|
|
329
|
-
[ 18_000, "Ekaterinburg", "Islamabad", "Karachi", "Tashkent" ],
|
|
330
|
-
[ 19_800, "Chennai", "Kolkata", "Mumbai", "New Delhi", "Sri Jayawardenepura" ],
|
|
331
|
-
[ 20_700, "Kathmandu" ],
|
|
332
|
-
[ 21_600, "Astana", "Dhaka", "Almaty",
|
|
333
|
-
"Novosibirsk" ],
|
|
334
|
-
[ 23_400, "Rangoon" ],
|
|
335
|
-
[ 25_200, "Bangkok", "Hanoi", "Jakarta", "Krasnoyarsk" ],
|
|
336
|
-
[ 28_800, "Beijing", "Chongqing", "Hong Kong", "Urumqi",
|
|
337
|
-
"Kuala Lumpur", "Singapore", "Taipei", "Perth", "Irkutsk",
|
|
338
|
-
"Ulaan Bataar" ],
|
|
339
|
-
[ 32_400, "Seoul", "Osaka", "Sapporo", "Tokyo", "Yakutsk" ],
|
|
340
|
-
[ 34_200, "Darwin", "Adelaide" ],
|
|
341
|
-
[ 36_000, "Canberra", "Melbourne", "Sydney", "Brisbane", "Hobart",
|
|
342
|
-
"Vladivostok", "Guam", "Port Moresby" ],
|
|
343
|
-
[ 39_600, "Magadan", "Solomon Is.", "New Caledonia" ],
|
|
344
|
-
[ 43_200, "Fiji", "Kamchatka", "Marshall Is.", "Auckland",
|
|
345
|
-
"Wellington" ],
|
|
346
|
-
[ 46_800, "Nuku'alofa" ]].
|
|
347
|
-
each do |offset, *places|
|
|
348
|
-
places.each do |place|
|
|
349
|
-
place.freeze
|
|
350
|
-
zone = new(place, offset)
|
|
351
|
-
ZONES << zone
|
|
352
|
-
ZONES_MAP[place] = zone
|
|
353
|
-
end
|
|
327
|
+
MAPPING.each_key do |place|
|
|
328
|
+
place.freeze
|
|
329
|
+
zone = new(place)
|
|
330
|
+
ZONES << zone
|
|
331
|
+
ZONES_MAP[place] = zone
|
|
354
332
|
end
|
|
355
333
|
ZONES.sort!
|
|
356
334
|
ZONES.freeze
|
|
357
|
-
ZONES_MAP.freeze
|
|
358
335
|
|
|
359
336
|
US_ZONES = ZONES.find_all { |z| z.name =~ /US|Arizona|Indiana|Hawaii|Alaska/ }
|
|
360
337
|
US_ZONES.freeze
|
|
@@ -385,7 +362,7 @@ module ActiveSupport
|
|
|
385
362
|
def [](arg)
|
|
386
363
|
case arg
|
|
387
364
|
when String
|
|
388
|
-
ZONES_MAP[arg]
|
|
365
|
+
ZONES_MAP[arg] ||= lookup(arg)
|
|
389
366
|
when Numeric, ActiveSupport::Duration
|
|
390
367
|
arg *= 3600 if arg.abs <= 13
|
|
391
368
|
all.find { |z| z.utc_offset == arg.to_i }
|
|
@@ -399,6 +376,12 @@ module ActiveSupport
|
|
|
399
376
|
def us_zones
|
|
400
377
|
US_ZONES
|
|
401
378
|
end
|
|
379
|
+
|
|
380
|
+
private
|
|
381
|
+
|
|
382
|
+
def lookup(name)
|
|
383
|
+
(tzinfo = find_tzinfo(name)) && create(tzinfo.name.freeze)
|
|
384
|
+
end
|
|
402
385
|
end
|
|
403
386
|
end
|
|
404
387
|
end
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# classes in NilClass::WHINERS the error message suggests which could be the
|
|
12
12
|
# actual intended class:
|
|
13
13
|
#
|
|
14
|
-
# $
|
|
14
|
+
# $ rails runner nil.destroy
|
|
15
15
|
# ...
|
|
16
16
|
# You might have expected an instance of ActiveRecord::Base.
|
|
17
17
|
# ...
|
|
@@ -25,17 +25,16 @@
|
|
|
25
25
|
# By default it is on in development and test modes, and it is off in production
|
|
26
26
|
# mode.
|
|
27
27
|
class NilClass
|
|
28
|
-
WHINERS = [::Array]
|
|
29
|
-
WHINERS << ::ActiveRecord::Base if defined? ::ActiveRecord
|
|
30
|
-
|
|
31
28
|
METHOD_CLASS_MAP = Hash.new
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
def self.add_whiner(klass)
|
|
34
31
|
methods = klass.public_instance_methods - public_instance_methods
|
|
35
32
|
class_name = klass.name
|
|
36
33
|
methods.each { |method| METHOD_CLASS_MAP[method.to_sym] = class_name }
|
|
37
34
|
end
|
|
38
35
|
|
|
36
|
+
add_whiner ::Array
|
|
37
|
+
|
|
39
38
|
# Raises a RuntimeError when you attempt to call +id+ on +nil+.
|
|
40
39
|
def id
|
|
41
40
|
raise RuntimeError, "Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id", caller
|
|
@@ -43,10 +42,7 @@ class NilClass
|
|
|
43
42
|
|
|
44
43
|
private
|
|
45
44
|
def method_missing(method, *args, &block)
|
|
46
|
-
|
|
47
|
-
if method == :to_ary || method == :to_str
|
|
48
|
-
super
|
|
49
|
-
elsif klass = METHOD_CLASS_MAP[method]
|
|
45
|
+
if klass = METHOD_CLASS_MAP[method]
|
|
50
46
|
raise_nil_warning_for klass, method, caller
|
|
51
47
|
else
|
|
52
48
|
super
|
|
@@ -3,6 +3,8 @@ raise "JRuby is required to use the JDOM backend for XmlMini" unless RUBY_PLATFO
|
|
|
3
3
|
require 'jruby'
|
|
4
4
|
include Java
|
|
5
5
|
|
|
6
|
+
require 'active_support/core_ext/object/blank'
|
|
7
|
+
|
|
6
8
|
import javax.xml.parsers.DocumentBuilder unless defined? DocumentBuilder
|
|
7
9
|
import javax.xml.parsers.DocumentBuilderFactory unless defined? DocumentBuilderFactory
|
|
8
10
|
import java.io.StringReader unless defined? StringReader
|
|
@@ -24,15 +26,19 @@ module ActiveSupport
|
|
|
24
26
|
node_type_map = {}
|
|
25
27
|
NODE_TYPE_NAMES.each { |type| node_type_map[Node.send(type)] = type }
|
|
26
28
|
|
|
27
|
-
# Parse an XML Document string into a simple hash using Java's jdom.
|
|
28
|
-
#
|
|
29
|
-
# XML Document string to parse
|
|
30
|
-
def parse(
|
|
31
|
-
if
|
|
29
|
+
# Parse an XML Document string or IO into a simple hash using Java's jdom.
|
|
30
|
+
# data::
|
|
31
|
+
# XML Document string or IO to parse
|
|
32
|
+
def parse(data)
|
|
33
|
+
if data.respond_to?(:read)
|
|
34
|
+
data = data.read
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
if data.blank?
|
|
32
38
|
{}
|
|
33
39
|
else
|
|
34
40
|
@dbf = DocumentBuilderFactory.new_instance
|
|
35
|
-
xml_string_reader = StringReader.new(
|
|
41
|
+
xml_string_reader = StringReader.new(data)
|
|
36
42
|
xml_input_source = InputSource.new(xml_string_reader)
|
|
37
43
|
doc = @dbf.new_document_builder.parse(xml_input_source)
|
|
38
44
|
merge_element!({}, doc.document_element)
|
|
@@ -74,7 +80,7 @@ module ActiveSupport
|
|
|
74
80
|
# Merge all the texts of an element into the hash
|
|
75
81
|
#
|
|
76
82
|
# hash::
|
|
77
|
-
# Hash to add the converted
|
|
83
|
+
# Hash to add the converted element to.
|
|
78
84
|
# element::
|
|
79
85
|
# XML element whose texts are to me merged into the hash
|
|
80
86
|
def merge_texts!(hash, element)
|