activesupport 3.0.0.beta4 → 3.0.pre
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activesupport might be problematic. Click here for more details.
- data/CHANGELOG +1 -100
- data/lib/active_support.rb +4 -38
- data/lib/active_support/autoload.rb +28 -0
- data/lib/active_support/backtrace_cleaner.rb +9 -31
- data/lib/active_support/benchmarkable.rb +0 -1
- data/lib/active_support/buffered_logger.rb +1 -0
- data/lib/active_support/cache.rb +81 -436
- data/lib/active_support/cache/compressed_mem_cache_store.rb +13 -6
- data/lib/active_support/cache/file_store.rb +41 -139
- data/lib/active_support/cache/mem_cache_store.rb +75 -120
- data/lib/active_support/cache/memory_store.rb +27 -127
- data/lib/active_support/cache/strategy/local_cache.rb +58 -111
- data/lib/active_support/cache/synchronized_memory_store.rb +38 -2
- data/lib/active_support/callbacks.rb +48 -87
- data/lib/active_support/configurable.rb +18 -19
- data/lib/active_support/core_ext/array.rb +0 -1
- data/lib/active_support/core_ext/array/access.rb +1 -1
- data/lib/active_support/core_ext/array/conversions.rb +54 -29
- data/lib/active_support/core_ext/array/extract_options.rb +1 -16
- data/lib/active_support/core_ext/array/random_access.rb +5 -19
- data/lib/active_support/core_ext/array/wrap.rb +9 -13
- data/lib/active_support/core_ext/benchmark.rb +12 -0
- data/lib/active_support/core_ext/boolean.rb +1 -0
- data/lib/active_support/core_ext/boolean/conversions.rb +11 -0
- data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -2
- data/lib/active_support/core_ext/class.rb +1 -1
- data/lib/active_support/core_ext/class/attribute_accessors.rb +27 -33
- data/lib/active_support/core_ext/class/delegating_attributes.rb +41 -35
- data/lib/active_support/core_ext/class/inheritable_attributes.rb +13 -22
- data/lib/active_support/core_ext/class/removal.rb +53 -0
- data/lib/active_support/core_ext/date.rb +7 -0
- data/lib/active_support/core_ext/date/calculations.rb +8 -30
- data/lib/active_support/core_ext/date/conversions.rb +2 -2
- data/lib/active_support/core_ext/date_time.rb +5 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +1 -2
- data/lib/active_support/core_ext/date_time/conversions.rb +5 -23
- data/lib/active_support/core_ext/enumerable.rb +9 -5
- data/lib/active_support/core_ext/exception.rb +47 -0
- data/lib/active_support/core_ext/file.rb +0 -1
- data/lib/active_support/core_ext/file/atomic.rb +2 -3
- data/lib/active_support/core_ext/float/rounding.rb +2 -3
- data/lib/active_support/core_ext/hash/conversions.rb +145 -65
- data/lib/active_support/core_ext/hash/deep_merge.rb +7 -6
- data/lib/active_support/core_ext/hash/except.rb +0 -8
- data/lib/active_support/core_ext/hash/indifferent_access.rb +0 -5
- data/lib/active_support/core_ext/hash/keys.rb +11 -10
- data/lib/active_support/core_ext/hash/slice.rb +0 -6
- data/lib/active_support/core_ext/integer.rb +1 -1
- data/lib/active_support/core_ext/integer/even_odd.rb +16 -0
- data/lib/active_support/core_ext/kernel.rb +1 -1
- data/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
- data/lib/active_support/core_ext/kernel/debugger.rb +2 -3
- data/lib/active_support/core_ext/kernel/reporting.rb +1 -2
- data/lib/active_support/core_ext/load_error.rb +30 -17
- data/lib/active_support/core_ext/logger.rb +1 -1
- data/lib/active_support/core_ext/module.rb +3 -5
- data/lib/active_support/core_ext/module/aliasing.rb +1 -1
- data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +1 -1
- data/lib/active_support/core_ext/module/attr_internal.rb +2 -2
- data/lib/active_support/core_ext/module/attribute_accessors.rb +21 -25
- data/lib/active_support/core_ext/module/delegation.rb +10 -21
- data/lib/active_support/core_ext/module/inclusion.rb +30 -0
- data/lib/active_support/core_ext/module/introspection.rb +8 -8
- data/lib/active_support/core_ext/module/loading.rb +23 -0
- data/lib/active_support/core_ext/module/synchronization.rb +1 -2
- data/lib/active_support/core_ext/name_error.rb +1 -3
- data/lib/active_support/core_ext/nil.rb +1 -0
- data/lib/active_support/core_ext/nil/conversions.rb +5 -0
- data/lib/active_support/core_ext/object.rb +2 -6
- data/lib/active_support/core_ext/object/blank.rb +2 -20
- data/lib/active_support/core_ext/object/conversions.rb +16 -2
- data/lib/active_support/core_ext/object/duplicable.rb +1 -23
- data/lib/active_support/core_ext/object/extending.rb +77 -8
- data/lib/active_support/core_ext/object/instance_variables.rb +7 -0
- data/lib/active_support/core_ext/object/metaclass.rb +13 -0
- data/lib/active_support/core_ext/object/misc.rb +1 -0
- data/lib/active_support/core_ext/object/tap.rb +16 -0
- data/lib/active_support/core_ext/object/with_options.rb +0 -2
- data/lib/active_support/core_ext/proc.rb +4 -4
- data/lib/active_support/core_ext/regexp.rb +22 -0
- data/lib/active_support/core_ext/rexml.rb +1 -4
- data/lib/active_support/core_ext/string.rb +2 -3
- data/lib/active_support/core_ext/string/access.rb +2 -4
- data/lib/active_support/core_ext/string/bytesize.rb +5 -0
- data/lib/active_support/core_ext/string/conversions.rb +1 -36
- data/lib/active_support/core_ext/string/filters.rb +0 -29
- data/lib/active_support/core_ext/string/inflections.rb +12 -1
- data/lib/active_support/core_ext/string/interpolation.rb +92 -2
- data/lib/active_support/core_ext/string/iterators.rb +13 -0
- data/lib/active_support/core_ext/string/multibyte.rb +19 -16
- data/lib/active_support/core_ext/string/output_safety.rb +35 -101
- data/lib/active_support/core_ext/string/starts_ends_with.rb +14 -0
- data/lib/active_support/core_ext/string/xchar.rb +1 -1
- data/lib/active_support/core_ext/symbol.rb +1 -0
- data/lib/active_support/core_ext/symbol/to_proc.rb +14 -0
- data/lib/active_support/core_ext/time.rb +10 -0
- data/lib/active_support/core_ext/time/calculations.rb +7 -9
- data/lib/active_support/core_ext/time/conversions.rb +0 -1
- data/lib/active_support/core_ext/time/marshal_with_utc_flag.rb +22 -0
- data/lib/active_support/core_ext/uri.rb +4 -10
- data/lib/active_support/dependencies.rb +192 -179
- data/lib/active_support/deprecated_callbacks.rb +283 -0
- data/lib/active_support/deprecation/behaviors.rb +1 -1
- data/lib/active_support/deprecation/method_wrappers.rb +9 -10
- data/lib/active_support/deprecation/reporting.rb +1 -2
- data/lib/active_support/duration.rb +2 -6
- data/lib/active_support/hash_with_indifferent_access.rb +1 -9
- data/lib/active_support/inflections.rb +1 -1
- data/lib/active_support/inflector.rb +407 -4
- data/lib/active_support/json/backends/jsongem.rb +9 -12
- data/lib/active_support/json/decoding.rb +1 -16
- data/lib/active_support/json/encoding.rb +12 -42
- data/lib/active_support/locale/en.yml +1 -4
- data/lib/active_support/memoizable.rb +1 -1
- data/lib/active_support/message_encryptor.rb +0 -1
- data/lib/active_support/message_verifier.rb +5 -6
- data/lib/active_support/multibyte.rb +22 -7
- data/lib/active_support/multibyte/chars.rb +392 -164
- data/lib/active_support/multibyte/unicode_database.rb +71 -0
- data/lib/active_support/multibyte/utils.rb +7 -6
- data/lib/active_support/notifications.rb +113 -23
- data/lib/active_support/ordered_hash.rb +11 -35
- data/lib/active_support/ordered_options.rb +0 -6
- data/lib/active_support/rescuable.rb +4 -7
- data/lib/active_support/ruby/shim.rb +6 -4
- data/lib/active_support/test_case.rb +7 -2
- data/lib/active_support/testing/assertions.rb +0 -15
- data/lib/active_support/testing/declarative.rb +1 -1
- data/lib/active_support/testing/isolation.rb +19 -63
- data/lib/active_support/testing/performance.rb +337 -342
- data/lib/active_support/testing/setup_and_teardown.rb +29 -51
- data/lib/active_support/time.rb +3 -23
- data/lib/active_support/time_with_zone.rb +10 -5
- data/lib/active_support/values/time_zone.rb +84 -40
- data/lib/active_support/values/unicode_tables.dat +0 -0
- data/lib/active_support/vendor.rb +16 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/blankslate.rb +113 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder.rb +13 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/blankslate.rb +20 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/css.rb +250 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xchar.rb +115 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlbase.rb +139 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlevents.rb +63 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlmarkup.rb +328 -0
- data/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE +20 -0
- data/lib/active_support/vendor/i18n-0.1.3/README.textile +20 -0
- data/lib/active_support/vendor/i18n-0.1.3/Rakefile +5 -0
- data/lib/active_support/vendor/i18n-0.1.3/i18n.gemspec +27 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb +204 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb +215 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb +53 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/all.rb +5 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +99 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +124 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.rb +1 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.yml +3 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +567 -0
- data/lib/active_support/vendor/memcache-client-1.7.5/lib/memcache.rb +1133 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone.rb +47 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone_info.rb +228 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Algiers.rb +55 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Cairo.rb +219 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Casablanca.rb +42 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Harare.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Monrovia.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Nairobi.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Bogota.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Caracas.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chicago.rb +283 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chihuahua.rb +136 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Denver.rb +204 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Godthab.rb +161 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Guatemala.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Halifax.rb +274 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Juneau.rb +194 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/La_Paz.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Lima.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Los_Angeles.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mazatlan.rb +139 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mexico_City.rb +144 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Monterrey.rb +131 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/New_York.rb +282 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Phoenix.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Regina.rb +74 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Santiago.rb +205 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/St_Johns.rb +288 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Tijuana.rb +196 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Almaty.rb +67 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baghdad.rb +73 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baku.rb +161 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Bangkok.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Chongqing.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Colombo.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Dhaka.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jakarta.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kabul.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Karachi.rb +32 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kathmandu.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kolkata.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuwait.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Magadan.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Muscat.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Rangoon.rb +24 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Riyadh.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Seoul.rb +34 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Shanghai.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Singapore.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Taipei.rb +59 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tashkent.rb +47 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tehran.rb +121 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tokyo.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Urumqi.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yerevan.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Azores.rb +270 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Adelaide.rb +187 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Brisbane.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Darwin.rb +29 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Hobart.rb +193 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Melbourne.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Perth.rb +37 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Sydney.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Etc/UTC.rb +16 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Athens.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Belgrade.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Berlin.rb +188 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bratislava.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Brussels.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bucharest.rb +181 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Budapest.rb +197 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Dublin.rb +276 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Helsinki.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Istanbul.rb +218 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Kiev.rb +168 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Lisbon.rb +268 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/London.rb +288 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Madrid.rb +211 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Minsk.rb +170 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Moscow.rb +181 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Paris.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Prague.rb +187 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Riga.rb +176 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Rome.rb +215 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Skopje.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sofia.rb +173 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Stockholm.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Tallinn.rb +172 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vienna.rb +183 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vilnius.rb +170 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Warsaw.rb +212 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Zagreb.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Auckland.rb +202 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Fiji.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Guam.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Majuro.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Midway.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Noumea.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/info_timezone.rb +52 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone.rb +51 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone_info.rb +44 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/offset_rationals.rb +98 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/ruby_core_support.rb +56 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/time_or_datetime.rb +292 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone.rb +508 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_definition.rb +56 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_info.rb +40 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_offset_info.rb +94 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_period.rb +198 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_transition_info.rb +129 -0
- data/lib/active_support/version.rb +2 -3
- data/lib/active_support/whiny_nil.rb +7 -9
- data/lib/active_support/xml_mini.rb +1 -126
- data/lib/active_support/xml_mini/jdom.rb +0 -2
- data/lib/active_support/xml_mini/libxml.rb +86 -24
- data/lib/active_support/xml_mini/nokogiri.rb +24 -27
- data/lib/active_support/xml_mini/rexml.rb +1 -7
- metadata +191 -49
- data/lib/active_support/builder.rb +0 -6
- data/lib/active_support/core_ext/array/uniq_by.rb +0 -17
- data/lib/active_support/core_ext/class/attribute.rb +0 -67
- data/lib/active_support/core_ext/class/subclasses.rb +0 -55
- data/lib/active_support/core_ext/file/path.rb +0 -5
- data/lib/active_support/core_ext/integer/multiple.rb +0 -6
- data/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
- data/lib/active_support/core_ext/module/anonymous.rb +0 -24
- data/lib/active_support/core_ext/module/method_names.rb +0 -14
- data/lib/active_support/core_ext/module/reachable.rb +0 -10
- data/lib/active_support/core_ext/module/remove_method.rb +0 -6
- data/lib/active_support/core_ext/object/to_param.rb +0 -49
- data/lib/active_support/core_ext/object/to_query.rb +0 -27
- data/lib/active_support/core_ext/string/encoding.rb +0 -11
- data/lib/active_support/core_ext/string/exclude.rb +0 -6
- data/lib/active_support/core_ext/time/marshal.rb +0 -56
- data/lib/active_support/dependencies/autoload.rb +0 -50
- data/lib/active_support/i18n.rb +0 -8
- data/lib/active_support/inflector/inflections.rb +0 -211
- data/lib/active_support/inflector/methods.rb +0 -141
- data/lib/active_support/inflector/transliterate.rb +0 -97
- data/lib/active_support/json/backends/yajl.rb +0 -40
- data/lib/active_support/lazy_load_hooks.rb +0 -27
- data/lib/active_support/multibyte/unicode.rb +0 -393
- data/lib/active_support/notifications/fanout.rb +0 -93
- data/lib/active_support/notifications/instrumenter.rb +0 -56
- data/lib/active_support/railtie.rb +0 -100
- data/lib/active_support/xml_mini/libxmlsax.rb +0 -85
- data/lib/active_support/xml_mini/nokogirisax.rb +0 -83
@@ -1,29 +1,16 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
require 'active_support/callbacks'
|
3
|
-
|
4
1
|
module ActiveSupport
|
5
2
|
module Testing
|
6
3
|
module SetupAndTeardown
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
define_callbacks :setup, :teardown
|
12
|
-
|
13
|
-
if defined?(MiniTest::Assertions) && TestCase < MiniTest::Assertions
|
14
|
-
include ForMiniTest
|
15
|
-
else
|
16
|
-
include ForClassicTestUnit
|
17
|
-
end
|
18
|
-
end
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
include ActiveSupport::DeprecatedCallbacks
|
7
|
+
define_callbacks :setup, :teardown
|
19
8
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def teardown(*args, &block)
|
26
|
-
set_callback(:teardown, :after, *args, &block)
|
9
|
+
if defined?(MiniTest::Assertions) && TestCase < MiniTest::Assertions
|
10
|
+
include ForMiniTest
|
11
|
+
else
|
12
|
+
include ForClassicTestUnit
|
13
|
+
end
|
27
14
|
end
|
28
15
|
end
|
29
16
|
|
@@ -31,16 +18,15 @@ module ActiveSupport
|
|
31
18
|
def run(runner)
|
32
19
|
result = '.'
|
33
20
|
begin
|
34
|
-
|
35
|
-
|
36
|
-
end
|
21
|
+
run_callbacks :setup
|
22
|
+
result = super
|
37
23
|
rescue Exception => e
|
38
|
-
result = runner.puke(self.class,
|
24
|
+
result = runner.puke(self.class, self.name, e)
|
39
25
|
ensure
|
40
26
|
begin
|
41
|
-
|
27
|
+
run_callbacks :teardown, :enumerator => :reverse_each
|
42
28
|
rescue Exception => e
|
43
|
-
result = runner.puke(self.class,
|
29
|
+
result = runner.puke(self.class, self.name, e)
|
44
30
|
end
|
45
31
|
end
|
46
32
|
result
|
@@ -56,17 +42,23 @@ module ActiveSupport
|
|
56
42
|
def run(result)
|
57
43
|
return if @method_name.to_s == "default_test"
|
58
44
|
|
59
|
-
|
45
|
+
if using_mocha = respond_to?(:mocha_verify)
|
46
|
+
assertion_counter_klass = if defined?(Mocha::TestCaseAdapter::AssertionCounter)
|
47
|
+
Mocha::TestCaseAdapter::AssertionCounter
|
48
|
+
else
|
49
|
+
Mocha::Integration::TestUnit::AssertionCounter
|
50
|
+
end
|
51
|
+
assertion_counter = assertion_counter_klass.new(result)
|
52
|
+
end
|
53
|
+
|
60
54
|
yield(Test::Unit::TestCase::STARTED, name)
|
61
55
|
@_result = result
|
62
|
-
|
63
56
|
begin
|
64
57
|
begin
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
58
|
+
run_callbacks :setup
|
59
|
+
setup
|
60
|
+
__send__(@method_name)
|
61
|
+
mocha_verify(assertion_counter) if using_mocha
|
70
62
|
rescue Mocha::ExpectationError => e
|
71
63
|
add_failure(e.message, e.backtrace)
|
72
64
|
rescue Test::Unit::AssertionFailedError => e
|
@@ -77,7 +69,7 @@ module ActiveSupport
|
|
77
69
|
ensure
|
78
70
|
begin
|
79
71
|
teardown
|
80
|
-
|
72
|
+
run_callbacks :teardown, :enumerator => :reverse_each
|
81
73
|
rescue Test::Unit::AssertionFailedError => e
|
82
74
|
add_failure(e.message, e.backtrace)
|
83
75
|
rescue Exception => e
|
@@ -86,26 +78,12 @@ module ActiveSupport
|
|
86
78
|
end
|
87
79
|
end
|
88
80
|
ensure
|
89
|
-
mocha_teardown if
|
81
|
+
mocha_teardown if using_mocha
|
90
82
|
end
|
91
|
-
|
92
83
|
result.add_run
|
93
84
|
yield(Test::Unit::TestCase::FINISHED, name)
|
94
85
|
end
|
95
|
-
|
96
|
-
protected
|
97
|
-
|
98
|
-
def retrieve_mocha_counter(result) #:nodoc:
|
99
|
-
if using_mocha = respond_to?(:mocha_verify)
|
100
|
-
if defined?(Mocha::TestCaseAdapter::AssertionCounter)
|
101
|
-
Mocha::TestCaseAdapter::AssertionCounter.new(result)
|
102
|
-
else
|
103
|
-
Mocha::Integration::TestUnit::AssertionCounter.new(result)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
86
|
end
|
108
|
-
|
109
87
|
end
|
110
88
|
end
|
111
89
|
end
|
data/lib/active_support/time.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'active_support'
|
2
|
+
require 'active_support/core_ext/time'
|
3
|
+
require 'active_support/core_ext/date'
|
4
|
+
require 'active_support/core_ext/date_time'
|
2
5
|
|
3
6
|
module ActiveSupport
|
4
7
|
autoload :Duration, 'active_support/duration'
|
@@ -9,26 +12,3 @@ module ActiveSupport
|
|
9
12
|
[Duration, TimeWithZone, TimeZone]
|
10
13
|
end
|
11
14
|
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,5 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require 'active_support/core_ext/
|
1
|
+
require 'active_support/duration'
|
2
|
+
require 'active_support/core_ext/numeric/time'
|
3
|
+
require 'active_support/core_ext/integer/time'
|
4
|
+
require 'active_support/core_ext/time/conversions'
|
5
|
+
require 'active_support/core_ext/date/conversions'
|
6
|
+
require 'active_support/core_ext/date_time/conversions'
|
3
7
|
|
4
8
|
module ActiveSupport
|
5
9
|
# A Time-like class that can represent a time in any time zone. Necessary because standard Ruby Time instances are
|
@@ -32,6 +36,7 @@ module ActiveSupport
|
|
32
36
|
# t.is_a?(Time) # => true
|
33
37
|
# t.is_a?(ActiveSupport::TimeWithZone) # => true
|
34
38
|
class TimeWithZone
|
39
|
+
|
35
40
|
def self.name
|
36
41
|
'Time' # Report class name as 'Time' to thwart type checking
|
37
42
|
end
|
@@ -113,9 +118,9 @@ module ActiveSupport
|
|
113
118
|
end
|
114
119
|
alias_method :iso8601, :xmlschema
|
115
120
|
|
116
|
-
# Coerces the date to a string for JSON encoding.
|
117
|
-
#
|
118
|
-
#
|
121
|
+
# Coerces the date to a string for JSON encoding.
|
122
|
+
#
|
123
|
+
# ISO 8601 format is used if ActiveSupport::JSON::Encoding.use_standard_json_time_format is set.
|
119
124
|
#
|
120
125
|
# ==== Examples
|
121
126
|
#
|
@@ -1,11 +1,6 @@
|
|
1
|
-
require 'active_support/core_ext/
|
2
|
-
require 'active_support/core_ext/
|
3
|
-
|
4
|
-
require 'tzinfo'
|
5
|
-
rescue LoadError => e
|
6
|
-
$stderr.puts "You don't have tzinfo installed in your application. Please add it to your Gemfile and run bundle install"
|
7
|
-
raise e
|
8
|
-
end
|
1
|
+
require 'active_support/core_ext/time'
|
2
|
+
require 'active_support/core_ext/date'
|
3
|
+
require 'active_support/core_ext/date_time'
|
9
4
|
|
10
5
|
# The TimeZone class serves as a wrapper around TZInfo::Timezone instances. It allows us to do the following:
|
11
6
|
#
|
@@ -62,13 +57,13 @@ module ActiveSupport
|
|
62
57
|
"Newfoundland" => "America/St_Johns",
|
63
58
|
"Brasilia" => "America/Sao_Paulo",
|
64
59
|
"Buenos Aires" => "America/Argentina/Buenos_Aires",
|
65
|
-
"Georgetown" => "America/
|
60
|
+
"Georgetown" => "America/Argentina/San_Juan",
|
66
61
|
"Greenland" => "America/Godthab",
|
67
62
|
"Mid-Atlantic" => "Atlantic/South_Georgia",
|
68
63
|
"Azores" => "Atlantic/Azores",
|
69
64
|
"Cape Verde Is." => "Atlantic/Cape_Verde",
|
70
65
|
"Dublin" => "Europe/Dublin",
|
71
|
-
"Edinburgh" => "Europe/
|
66
|
+
"Edinburgh" => "Europe/Dublin",
|
72
67
|
"Lisbon" => "Europe/Lisbon",
|
73
68
|
"London" => "Europe/London",
|
74
69
|
"Casablanca" => "Africa/Casablanca",
|
@@ -179,7 +174,7 @@ module ActiveSupport
|
|
179
174
|
MAPPING.freeze
|
180
175
|
end
|
181
176
|
|
182
|
-
UTC_OFFSET_WITH_COLON = '
|
177
|
+
UTC_OFFSET_WITH_COLON = '%+03d:%02d'
|
183
178
|
UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')
|
184
179
|
|
185
180
|
# Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
|
@@ -188,34 +183,26 @@ module ActiveSupport
|
|
188
183
|
# TimeZone.seconds_to_utc_offset(-21_600) # => "-06:00"
|
189
184
|
def self.seconds_to_utc_offset(seconds, colon = true)
|
190
185
|
format = colon ? UTC_OFFSET_WITH_COLON : UTC_OFFSET_WITHOUT_COLON
|
191
|
-
|
192
|
-
hours = seconds.abs / 3600
|
186
|
+
hours = seconds / 3600
|
193
187
|
minutes = (seconds.abs % 3600) / 60
|
194
|
-
format % [
|
188
|
+
format % [hours, minutes]
|
195
189
|
end
|
196
190
|
|
197
191
|
include Comparable
|
198
192
|
attr_reader :name
|
199
|
-
attr_reader :tzinfo
|
200
193
|
|
201
194
|
# Create a new TimeZone object with the given name and offset. The
|
202
195
|
# offset is the number of seconds that this time zone is offset from UTC
|
203
196
|
# (GMT). Seconds were chosen as the offset unit because that is the unit that
|
204
197
|
# Ruby uses to represent time zone offsets (see Time#utc_offset).
|
205
|
-
def initialize(name, utc_offset
|
198
|
+
def initialize(name, utc_offset, tzinfo = nil)
|
206
199
|
@name = name
|
207
200
|
@utc_offset = utc_offset
|
208
|
-
@tzinfo = tzinfo
|
209
|
-
@current_period = nil
|
201
|
+
@tzinfo = tzinfo
|
210
202
|
end
|
211
203
|
|
212
204
|
def utc_offset
|
213
|
-
|
214
|
-
@utc_offset
|
215
|
-
else
|
216
|
-
@current_period ||= tzinfo.try(:current_period)
|
217
|
-
@current_period.try(:utc_offset)
|
218
|
-
end
|
205
|
+
@utc_offset ||= tzinfo.current_period.utc_offset
|
219
206
|
end
|
220
207
|
|
221
208
|
# Returns the offset of this time zone as a formatted string, of the
|
@@ -318,9 +305,76 @@ module ActiveSupport
|
|
318
305
|
end
|
319
306
|
|
320
307
|
# TODO: Preload instead of lazy load for thread safety
|
321
|
-
def
|
322
|
-
require '
|
323
|
-
|
308
|
+
def tzinfo
|
309
|
+
require 'tzinfo' unless defined?(TZInfo)
|
310
|
+
@tzinfo ||= TZInfo::Timezone.get(MAPPING[name])
|
311
|
+
end
|
312
|
+
|
313
|
+
unless const_defined?(:ZONES)
|
314
|
+
ZONES = []
|
315
|
+
ZONES_MAP = {}
|
316
|
+
[[-39_600, "International Date Line West", "Midway Island", "Samoa" ],
|
317
|
+
[-36_000, "Hawaii" ],
|
318
|
+
[-32_400, "Alaska" ],
|
319
|
+
[-28_800, "Pacific Time (US & Canada)", "Tijuana" ],
|
320
|
+
[-25_200, "Mountain Time (US & Canada)", "Chihuahua", "Mazatlan",
|
321
|
+
"Arizona" ],
|
322
|
+
[-21_600, "Central Time (US & Canada)", "Saskatchewan", "Guadalajara",
|
323
|
+
"Mexico City", "Monterrey", "Central America" ],
|
324
|
+
[-18_000, "Eastern Time (US & Canada)", "Indiana (East)", "Bogota",
|
325
|
+
"Lima", "Quito" ],
|
326
|
+
[-16_200, "Caracas" ],
|
327
|
+
[-14_400, "Atlantic Time (Canada)", "La Paz", "Santiago" ],
|
328
|
+
[-12_600, "Newfoundland" ],
|
329
|
+
[-10_800, "Brasilia", "Buenos Aires", "Georgetown", "Greenland" ],
|
330
|
+
[ -7_200, "Mid-Atlantic" ],
|
331
|
+
[ -3_600, "Azores", "Cape Verde Is." ],
|
332
|
+
[ 0, "Dublin", "Edinburgh", "Lisbon", "London", "Casablanca",
|
333
|
+
"Monrovia", "UTC" ],
|
334
|
+
[ 3_600, "Belgrade", "Bratislava", "Budapest", "Ljubljana", "Prague",
|
335
|
+
"Sarajevo", "Skopje", "Warsaw", "Zagreb", "Brussels",
|
336
|
+
"Copenhagen", "Madrid", "Paris", "Amsterdam", "Berlin",
|
337
|
+
"Bern", "Rome", "Stockholm", "Vienna",
|
338
|
+
"West Central Africa" ],
|
339
|
+
[ 7_200, "Bucharest", "Cairo", "Helsinki", "Kyiv", "Riga", "Sofia",
|
340
|
+
"Tallinn", "Vilnius", "Athens", "Istanbul", "Minsk",
|
341
|
+
"Jerusalem", "Harare", "Pretoria" ],
|
342
|
+
[ 10_800, "Moscow", "St. Petersburg", "Volgograd", "Kuwait", "Riyadh",
|
343
|
+
"Nairobi", "Baghdad" ],
|
344
|
+
[ 12_600, "Tehran" ],
|
345
|
+
[ 14_400, "Abu Dhabi", "Muscat", "Baku", "Tbilisi", "Yerevan" ],
|
346
|
+
[ 16_200, "Kabul" ],
|
347
|
+
[ 18_000, "Ekaterinburg", "Islamabad", "Karachi", "Tashkent" ],
|
348
|
+
[ 19_800, "Chennai", "Kolkata", "Mumbai", "New Delhi", "Sri Jayawardenepura" ],
|
349
|
+
[ 20_700, "Kathmandu" ],
|
350
|
+
[ 21_600, "Astana", "Dhaka", "Almaty",
|
351
|
+
"Novosibirsk" ],
|
352
|
+
[ 23_400, "Rangoon" ],
|
353
|
+
[ 25_200, "Bangkok", "Hanoi", "Jakarta", "Krasnoyarsk" ],
|
354
|
+
[ 28_800, "Beijing", "Chongqing", "Hong Kong", "Urumqi",
|
355
|
+
"Kuala Lumpur", "Singapore", "Taipei", "Perth", "Irkutsk",
|
356
|
+
"Ulaan Bataar" ],
|
357
|
+
[ 32_400, "Seoul", "Osaka", "Sapporo", "Tokyo", "Yakutsk" ],
|
358
|
+
[ 34_200, "Darwin", "Adelaide" ],
|
359
|
+
[ 36_000, "Canberra", "Melbourne", "Sydney", "Brisbane", "Hobart",
|
360
|
+
"Vladivostok", "Guam", "Port Moresby" ],
|
361
|
+
[ 39_600, "Magadan", "Solomon Is.", "New Caledonia" ],
|
362
|
+
[ 43_200, "Fiji", "Kamchatka", "Marshall Is.", "Auckland",
|
363
|
+
"Wellington" ],
|
364
|
+
[ 46_800, "Nuku'alofa" ]].
|
365
|
+
each do |offset, *places|
|
366
|
+
places.sort.each do |place|
|
367
|
+
place.freeze
|
368
|
+
zone = new(place, offset)
|
369
|
+
ZONES << zone
|
370
|
+
ZONES_MAP[place] = zone
|
371
|
+
end
|
372
|
+
end
|
373
|
+
ZONES.freeze
|
374
|
+
ZONES_MAP.freeze
|
375
|
+
|
376
|
+
US_ZONES = ZONES.find_all { |z| z.name =~ /US|Arizona|Indiana|Hawaii|Alaska/ }
|
377
|
+
US_ZONES.freeze
|
324
378
|
end
|
325
379
|
|
326
380
|
class << self
|
@@ -337,11 +391,7 @@ module ActiveSupport
|
|
337
391
|
# TimeZone objects per time zone, in many cases, to make it easier
|
338
392
|
# for users to find their own time zone.
|
339
393
|
def all
|
340
|
-
|
341
|
-
end
|
342
|
-
|
343
|
-
def zones_map
|
344
|
-
@zones_map ||= Hash[MAPPING.map { |place, _| [place, create(place)] }]
|
394
|
+
ZONES
|
345
395
|
end
|
346
396
|
|
347
397
|
# Locate a specific time zone object. If the argument is a string, it
|
@@ -352,7 +402,7 @@ module ActiveSupport
|
|
352
402
|
def [](arg)
|
353
403
|
case arg
|
354
404
|
when String
|
355
|
-
|
405
|
+
ZONES_MAP[arg]
|
356
406
|
when Numeric, ActiveSupport::Duration
|
357
407
|
arg *= 3600 if arg.abs <= 13
|
358
408
|
all.find { |z| z.utc_offset == arg.to_i }
|
@@ -364,14 +414,8 @@ module ActiveSupport
|
|
364
414
|
# A convenience method for returning a collection of TimeZone objects
|
365
415
|
# for time zones in the USA.
|
366
416
|
def us_zones
|
367
|
-
|
417
|
+
US_ZONES
|
368
418
|
end
|
369
|
-
|
370
|
-
private
|
371
|
-
|
372
|
-
def lookup(name)
|
373
|
-
(tzinfo = find_tzinfo(name)) && create(tzinfo.name.freeze)
|
374
|
-
end
|
375
419
|
end
|
376
420
|
end
|
377
421
|
end
|
Binary file
|
@@ -0,0 +1,16 @@
|
|
1
|
+
def ActiveSupport.requirable?(file)
|
2
|
+
$LOAD_PATH.any? { |p| Dir.glob("#{p}/#{file}.*").any? }
|
3
|
+
end
|
4
|
+
|
5
|
+
[%w(builder 2.1.2), %w(i18n 0.1.3), %w(memcache-client 1.7.5), %w(tzinfo 0.3.13)].each do |lib, version|
|
6
|
+
# If the lib is not already requirable
|
7
|
+
unless ActiveSupport.requirable? lib
|
8
|
+
# Try to activate a gem ~> satisfying the requested version first.
|
9
|
+
begin
|
10
|
+
gem lib, "~> #{version}"
|
11
|
+
# Use the vendored lib if the gem's missing or we aren't using RubyGems.
|
12
|
+
rescue LoadError, NoMethodError
|
13
|
+
$LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/vendor/#{lib}-#{version}/lib")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#--
|
3
|
+
# Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
|
4
|
+
# All rights reserved.
|
5
|
+
|
6
|
+
# Permission is granted for use, copying, modification, distribution,
|
7
|
+
# and distribution of modified versions of this work as long as the
|
8
|
+
# above copyright notice is included.
|
9
|
+
#++
|
10
|
+
|
11
|
+
######################################################################
|
12
|
+
# BlankSlate provides an abstract base class with no predefined
|
13
|
+
# methods (except for <tt>\_\_send__</tt> and <tt>\_\_id__</tt>).
|
14
|
+
# BlankSlate is useful as a base class when writing classes that
|
15
|
+
# depend upon <tt>method_missing</tt> (e.g. dynamic proxies).
|
16
|
+
#
|
17
|
+
class BlankSlate
|
18
|
+
class << self
|
19
|
+
|
20
|
+
# Hide the method named +name+ in the BlankSlate class. Don't
|
21
|
+
# hide +instance_eval+ or any method beginning with "__".
|
22
|
+
def hide(name)
|
23
|
+
if instance_methods.include?(name.to_s) and
|
24
|
+
name !~ /^(__|instance_eval)/
|
25
|
+
@hidden_methods ||= {}
|
26
|
+
@hidden_methods[name.to_sym] = instance_method(name)
|
27
|
+
undef_method name
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_hidden_method(name)
|
32
|
+
@hidden_methods ||= {}
|
33
|
+
@hidden_methods[name] || superclass.find_hidden_method(name)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Redefine a previously hidden method so that it may be called on a blank
|
37
|
+
# slate object.
|
38
|
+
def reveal(name)
|
39
|
+
bound_method = nil
|
40
|
+
unbound_method = find_hidden_method(name)
|
41
|
+
fail "Don't know how to reveal method '#{name}'" unless unbound_method
|
42
|
+
define_method(name) do |*args|
|
43
|
+
bound_method ||= unbound_method.bind(self)
|
44
|
+
bound_method.call(*args)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
instance_methods.each { |m| hide(m) }
|
50
|
+
end
|
51
|
+
|
52
|
+
######################################################################
|
53
|
+
# Since Ruby is very dynamic, methods added to the ancestors of
|
54
|
+
# BlankSlate <em>after BlankSlate is defined</em> will show up in the
|
55
|
+
# list of available BlankSlate methods. We handle this by defining a
|
56
|
+
# hook in the Object and Kernel classes that will hide any method
|
57
|
+
# defined after BlankSlate has been loaded.
|
58
|
+
#
|
59
|
+
module Kernel
|
60
|
+
class << self
|
61
|
+
alias_method :blank_slate_method_added, :method_added
|
62
|
+
|
63
|
+
# Detect method additions to Kernel and remove them in the
|
64
|
+
# BlankSlate class.
|
65
|
+
def method_added(name)
|
66
|
+
result = blank_slate_method_added(name)
|
67
|
+
return result if self != Kernel
|
68
|
+
BlankSlate.hide(name)
|
69
|
+
result
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
######################################################################
|
75
|
+
# Same as above, except in Object.
|
76
|
+
#
|
77
|
+
class Object
|
78
|
+
class << self
|
79
|
+
alias_method :blank_slate_method_added, :method_added
|
80
|
+
|
81
|
+
# Detect method additions to Object and remove them in the
|
82
|
+
# BlankSlate class.
|
83
|
+
def method_added(name)
|
84
|
+
result = blank_slate_method_added(name)
|
85
|
+
return result if self != Object
|
86
|
+
BlankSlate.hide(name)
|
87
|
+
result
|
88
|
+
end
|
89
|
+
|
90
|
+
def find_hidden_method(name)
|
91
|
+
nil
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
######################################################################
|
97
|
+
# Also, modules included into Object need to be scanned and have their
|
98
|
+
# instance methods removed from blank slate. In theory, modules
|
99
|
+
# included into Kernel would have to be removed as well, but a
|
100
|
+
# "feature" of Ruby prevents late includes into modules from being
|
101
|
+
# exposed in the first place.
|
102
|
+
#
|
103
|
+
class Module
|
104
|
+
alias blankslate_original_append_features append_features
|
105
|
+
def append_features(mod)
|
106
|
+
result = blankslate_original_append_features(mod)
|
107
|
+
return result if mod != Object
|
108
|
+
instance_methods.each do |name|
|
109
|
+
BlankSlate.hide(name)
|
110
|
+
end
|
111
|
+
result
|
112
|
+
end
|
113
|
+
end
|