activesupport 2.3.18 → 3.0.0.beta
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 +30 -53
- data/lib/active_support.rb +43 -31
- data/lib/active_support/all.rb +3 -7
- data/lib/active_support/backtrace_cleaner.rb +24 -8
- data/lib/active_support/base64.rb +9 -0
- data/lib/active_support/benchmarkable.rb +60 -0
- data/lib/active_support/buffered_logger.rb +12 -9
- data/lib/active_support/cache.rb +75 -55
- 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 +29 -20
- data/lib/active_support/cache/memory_store.rb +18 -17
- data/lib/active_support/cache/strategy/local_cache.rb +9 -1
- 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.rb +2 -7
- data/lib/active_support/core_ext/array.rb +2 -10
- data/lib/active_support/core_ext/array/access.rb +39 -46
- data/lib/active_support/core_ext/array/conversions.rb +146 -182
- data/lib/active_support/core_ext/array/extract_options.rb +12 -18
- data/lib/active_support/core_ext/array/grouping.rb +87 -93
- data/lib/active_support/core_ext/array/random_access.rb +4 -40
- 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/big_decimal.rb +1 -0
- data/lib/active_support/core_ext/big_decimal/conversions.rb +27 -0
- data/lib/active_support/core_ext/cgi.rb +0 -4
- data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +16 -20
- data/lib/active_support/core_ext/class.rb +0 -2
- data/lib/active_support/core_ext/class/attribute.rb +8 -39
- data/lib/active_support/core_ext/class/attribute_accessors.rb +31 -35
- data/lib/active_support/core_ext/class/delegating_attributes.rb +34 -40
- data/lib/active_support/core_ext/class/inheritable_attributes.rb +100 -16
- data/lib/active_support/core_ext/date/acts_like.rb +8 -0
- data/lib/active_support/core_ext/date/calculations.rb +218 -238
- 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 +83 -95
- data/lib/active_support/core_ext/date_time/zones.rb +17 -0
- data/lib/active_support/core_ext/enumerable.rb +14 -15
- data/lib/active_support/core_ext/exception.rb +1 -43
- data/lib/active_support/core_ext/file.rb +0 -4
- data/lib/active_support/core_ext/file/atomic.rb +34 -41
- data/lib/active_support/core_ext/float.rb +0 -6
- data/lib/active_support/core_ext/float/rounding.rb +15 -20
- data/lib/active_support/core_ext/hash.rb +8 -14
- data/lib/active_support/core_ext/hash/conversions.rb +236 -236
- 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/integer.rb +1 -7
- 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/kernel/reporting.rb +9 -7
- data/lib/active_support/core_ext/kernel/requires.rb +3 -1
- data/lib/active_support/core_ext/load_error.rb +16 -33
- data/lib/active_support/core_ext/logger.rb +3 -2
- data/lib/active_support/core_ext/module.rb +3 -16
- data/lib/active_support/core_ext/module/aliasing.rb +64 -68
- 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 +36 -41
- data/lib/active_support/core_ext/module/delegation.rb +1 -1
- 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/loading.rb +2 -0
- data/lib/active_support/core_ext/module/synchronization.rb +4 -1
- data/lib/active_support/core_ext/name_error.rb +3 -4
- data/lib/active_support/core_ext/numeric.rb +1 -8
- 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/object.rb +4 -2
- data/lib/active_support/core_ext/object/acts_like.rb +10 -0
- 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/instance_variables.rb +0 -7
- data/lib/active_support/core_ext/object/metaclass.rb +5 -6
- data/lib/active_support/core_ext/object/misc.rb +2 -93
- 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/proc.rb +6 -4
- data/lib/active_support/core_ext/process/daemon.rb +17 -19
- data/lib/active_support/core_ext/range.rb +2 -9
- 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/regexp.rb +5 -0
- data/lib/active_support/core_ext/rexml.rb +12 -7
- data/lib/active_support/core_ext/string.rb +6 -19
- 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 +19 -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 +146 -153
- data/lib/active_support/{vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb → core_ext/string/interpolation.rb} +8 -15
- data/lib/active_support/core_ext/string/multibyte.rb +68 -74
- data/lib/active_support/core_ext/string/output_safety.rb +21 -17
- data/lib/active_support/core_ext/string/starts_ends_with.rb +3 -32
- data/lib/active_support/core_ext/string/xchar.rb +10 -3
- data/lib/active_support/core_ext/time/acts_like.rb +8 -0
- data/lib/active_support/core_ext/time/calculations.rb +276 -308
- data/lib/active_support/core_ext/time/conversions.rb +78 -84
- data/lib/active_support/core_ext/time/marshal_with_utc_flag.rb +22 -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/dependencies.rb +38 -48
- data/lib/active_support/dependencies/autoload.rb +49 -0
- data/lib/active_support/deprecation.rb +9 -195
- 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 +55 -0
- data/lib/active_support/duration.rb +6 -2
- data/lib/active_support/hash_with_indifferent_access.rb +137 -0
- data/lib/active_support/i18n.rb +2 -0
- data/lib/active_support/inflections.rb +1 -1
- data/lib/active_support/inflector.rb +4 -406
- data/lib/active_support/inflector/inflections.rb +211 -0
- data/lib/active_support/inflector/methods.rb +139 -0
- data/lib/active_support/inflector/transliterate.rb +61 -0
- data/lib/active_support/json/backends/jsongem.rb +16 -10
- data/lib/active_support/json/backends/yaml.rb +72 -2
- data/lib/active_support/json/decoding.rb +2 -16
- data/lib/active_support/json/encoding.rb +153 -33
- data/lib/active_support/json/variable.rb +4 -3
- data/lib/active_support/locale/en.yml +1 -4
- data/lib/active_support/memoizable.rb +7 -6
- data/lib/active_support/message_encryptor.rb +1 -0
- data/lib/active_support/message_verifier.rb +12 -29
- data/lib/active_support/multibyte.rb +9 -4
- data/lib/active_support/multibyte/chars.rb +25 -17
- data/lib/active_support/multibyte/unicode_database.rb +5 -5
- data/lib/active_support/multibyte/utils.rb +1 -1
- data/lib/active_support/notifications.rb +77 -0
- data/lib/active_support/notifications/fanout.rb +69 -0
- data/lib/active_support/notifications/instrumenter.rb +50 -0
- data/lib/active_support/option_merger.rb +2 -0
- data/lib/active_support/ordered_hash.rb +33 -37
- data/lib/active_support/ordered_options.rb +3 -1
- data/lib/active_support/railtie.rb +64 -0
- data/lib/active_support/rescuable.rb +11 -6
- data/lib/active_support/ruby/shim.rb +19 -0
- data/lib/active_support/test_case.rb +8 -1
- data/lib/active_support/testing/assertions.rb +2 -14
- 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.rb +34 -0
- data/lib/active_support/time/autoload.rb +5 -0
- data/lib/active_support/time_with_zone.rb +18 -12
- data/lib/active_support/values/time_zone.rb +97 -93
- data/lib/active_support/version.rb +3 -3
- data/lib/active_support/whiny_nil.rb +1 -4
- data/lib/active_support/xml_mini.rb +2 -0
- data/lib/active_support/xml_mini/jdom.rb +13 -7
- data/lib/active_support/xml_mini/libxml.rb +19 -12
- data/lib/active_support/xml_mini/libxmlsax.rb +19 -9
- data/lib/active_support/xml_mini/nokogiri.rb +18 -12
- data/lib/active_support/xml_mini/nokogirisax.rb +15 -6
- data/lib/active_support/xml_mini/rexml.rb +24 -9
- metadata +94 -244
- 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.rb +0 -4
- data/lib/active_support/core_ext/base64/encoding.rb +0 -16
- data/lib/active_support/core_ext/bigdecimal.rb +0 -6
- data/lib/active_support/core_ext/bigdecimal/conversions.rb +0 -37
- 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.rb +0 -10
- data/lib/active_support/core_ext/date/behavior.rb +0 -42
- 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/singleton_class.rb +0 -13
- data/lib/active_support/core_ext/module/model_naming.rb +0 -25
- data/lib/active_support/core_ext/module/remove_method.rb +0 -6
- data/lib/active_support/core_ext/numeric/conversions.rb +0 -19
- data/lib/active_support/core_ext/object/extending.rb +0 -80
- data/lib/active_support/core_ext/object/singleton_class.rb +0 -13
- data/lib/active_support/core_ext/pathname.rb +0 -7
- data/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
- 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.rb +0 -46
- data/lib/active_support/core_ext/time/behavior.rb +0 -13
- data/lib/active_support/json/backends/okjson.rb +0 -644
- data/lib/active_support/json/backends/yajl.rb +0 -40
- 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.rb +0 -36
- data/lib/active_support/vendor/builder-2.1.2/blankslate.rb +0 -113
- data/lib/active_support/vendor/builder-2.1.2/builder.rb +0 -13
- 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/i18n-0.4.1/i18n.rb +0 -322
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend.rb +0 -20
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record.rb +0 -61
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/missing.rb +0 -65
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/store_procs.rb +0 -38
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/translation.rb +0 -93
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/base.rb +0 -237
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cache.rb +0 -77
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cascade.rb +0 -57
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/chain.rb +0 -77
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cldr.rb +0 -100
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/fallbacks.rb +0 -69
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/flatten.rb +0 -113
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb +0 -75
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/interpolation_compiler.rb +0 -123
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/key_value.rb +0 -102
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/memoize.rb +0 -48
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/metadata.rb +0 -65
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/pluralization.rb +0 -57
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb +0 -87
- data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/transliterator.rb +0 -98
- data/lib/active_support/vendor/i18n-0.4.1/i18n/config.rb +0 -84
- data/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb +0 -29
- data/lib/active_support/vendor/i18n-0.4.1/i18n/exceptions.rb +0 -61
- data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext.rb +0 -27
- data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/helpers.rb +0 -65
- data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb +0 -329
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale.rb +0 -6
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/fallbacks.rb +0 -98
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag.rb +0 -28
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/parents.rb +0 -24
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/rfc4646.rb +0 -76
- data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/simple.rb +0 -41
- data/lib/active_support/vendor/i18n-0.4.1/i18n/version.rb +0 -3
- data/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +0 -1107
- data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +0 -33
- 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/activesupport.rb +0 -2
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'active_support/core_ext/object/acts_like'
|
1
2
|
require 'active_support/core_ext/object/blank'
|
3
|
+
require 'active_support/core_ext/object/duplicable'
|
4
|
+
require 'active_support/core_ext/object/try'
|
5
|
+
|
2
6
|
require 'active_support/core_ext/object/conversions'
|
3
|
-
require 'active_support/core_ext/object/extending'
|
4
7
|
require 'active_support/core_ext/object/instance_variables'
|
5
8
|
require 'active_support/core_ext/object/metaclass'
|
6
|
-
require 'active_support/core_ext/object/singleton_class'
|
7
9
|
require 'active_support/core_ext/object/misc'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class Object
|
2
|
+
# A duck-type assistant method. For example, Active Support extends Date
|
3
|
+
# to define an acts_like_date? method, and extends Time to define
|
4
|
+
# acts_like_time?. As a result, we can do "x.acts_like?(:time)" and
|
5
|
+
# "x.acts_like?(:date)" to do duck-type-safe comparisons, since classes that
|
6
|
+
# we want to act like Time simply need to define an acts_like_time? method.
|
7
|
+
def acts_like?(duck)
|
8
|
+
respond_to? :"acts_like_#{duck}?"
|
9
|
+
end
|
10
|
+
end
|
@@ -1,15 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
end
|
6
|
-
|
7
|
-
# Converts an object into a string suitable for use as a URL query string, using the given <tt>key</tt> as the
|
8
|
-
# param name.
|
9
|
-
#
|
10
|
-
# Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
|
11
|
-
def to_query(key)
|
12
|
-
require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
|
13
|
-
"#{CGI.escape(key.to_s)}=#{CGI.escape(to_param.to_s)}"
|
14
|
-
end
|
15
|
-
end
|
1
|
+
require 'active_support/core_ext/object/to_param'
|
2
|
+
require 'active_support/core_ext/object/to_query'
|
3
|
+
require 'active_support/core_ext/array/conversions'
|
4
|
+
require 'active_support/core_ext/hash/conversions'
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Most objects are cloneable, but not all. For example you can't dup +nil+:
|
2
|
+
#
|
3
|
+
# nil.dup # => TypeError: can't dup NilClass
|
4
|
+
#
|
5
|
+
# Classes may signal their instances are not duplicable removing +dup+/+clone+
|
6
|
+
# or raising exceptions from them. So, to dup an arbitrary object you normally
|
7
|
+
# use an optimistic approach and are ready to catch an exception, say:
|
8
|
+
#
|
9
|
+
# arbitrary_object.dup rescue object
|
10
|
+
#
|
11
|
+
# Rails dups objects in a few critical spots where they are not that arbitrary.
|
12
|
+
# That rescue is very expensive (like 40 times slower than a predicate), and it
|
13
|
+
# is often triggered.
|
14
|
+
#
|
15
|
+
# That's why we hardcode the following cases and check duplicable? instead of
|
16
|
+
# using that rescue idiom.
|
17
|
+
class Object
|
18
|
+
# Can you safely .dup this object?
|
19
|
+
# False for nil, false, true, symbols, numbers, class and module objects; true otherwise.
|
20
|
+
def duplicable?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class NilClass #:nodoc:
|
26
|
+
def duplicable?
|
27
|
+
false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class FalseClass #:nodoc:
|
32
|
+
def duplicable?
|
33
|
+
false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class TrueClass #:nodoc:
|
38
|
+
def duplicable?
|
39
|
+
false
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class Symbol #:nodoc:
|
44
|
+
def duplicable?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Numeric #:nodoc:
|
50
|
+
def duplicable?
|
51
|
+
false
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Class #:nodoc:
|
56
|
+
def duplicable?
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class Module #:nodoc:
|
62
|
+
def duplicable?
|
63
|
+
false
|
64
|
+
end
|
65
|
+
end
|
@@ -1,11 +1,4 @@
|
|
1
1
|
class Object
|
2
|
-
# Available in 1.8.6 and later.
|
3
|
-
unless respond_to?(:instance_variable_defined?)
|
4
|
-
def instance_variable_defined?(variable)
|
5
|
-
instance_variables.include?(variable.to_s)
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
2
|
# Returns a hash that maps instance variable names without "@" to their
|
10
3
|
# corresponding values. Keys are strings both in Ruby 1.8 and 1.9.
|
11
4
|
#
|
@@ -1,14 +1,13 @@
|
|
1
|
-
require 'active_support/deprecation'
|
2
|
-
|
3
1
|
class Object
|
4
|
-
# Get object's meta (ghost, eigenclass, singleton) class
|
5
|
-
#
|
6
|
-
# Deprecated in favor of Object#singleton_class.
|
2
|
+
# Get object's meta (ghost, eigenclass, singleton) class
|
7
3
|
def metaclass
|
8
4
|
class << self
|
9
5
|
self
|
10
6
|
end
|
11
7
|
end
|
12
8
|
|
13
|
-
|
9
|
+
# If class_eval is called on an object, add those methods to its metaclass
|
10
|
+
def class_eval(*args, &block)
|
11
|
+
metaclass.class_eval(*args, &block)
|
12
|
+
end
|
14
13
|
end
|
@@ -1,93 +1,2 @@
|
|
1
|
-
require 'active_support/
|
2
|
-
|
3
|
-
class Object
|
4
|
-
# Returns +value+ after yielding +value+ to the block. This simplifies the
|
5
|
-
# process of constructing an object, performing work on the object, and then
|
6
|
-
# returning the object from a method. It is a Ruby-ized realization of the K
|
7
|
-
# combinator, courtesy of Mikael Brockman.
|
8
|
-
#
|
9
|
-
# ==== Examples
|
10
|
-
#
|
11
|
-
# # Without returning
|
12
|
-
# def foo
|
13
|
-
# values = []
|
14
|
-
# values << "bar"
|
15
|
-
# values << "baz"
|
16
|
-
# return values
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# foo # => ['bar', 'baz']
|
20
|
-
#
|
21
|
-
# # returning with a local variable
|
22
|
-
# def foo
|
23
|
-
# returning values = [] do
|
24
|
-
# values << 'bar'
|
25
|
-
# values << 'baz'
|
26
|
-
# end
|
27
|
-
# end
|
28
|
-
#
|
29
|
-
# foo # => ['bar', 'baz']
|
30
|
-
#
|
31
|
-
# # returning with a block argument
|
32
|
-
# def foo
|
33
|
-
# returning [] do |values|
|
34
|
-
# values << 'bar'
|
35
|
-
# values << 'baz'
|
36
|
-
# end
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# foo # => ['bar', 'baz']
|
40
|
-
def returning(value)
|
41
|
-
ActiveSupport::Deprecation.warn('Kernel#returning has been deprecated in favor of Object#tap.', caller)
|
42
|
-
yield(value)
|
43
|
-
value
|
44
|
-
end
|
45
|
-
|
46
|
-
# Yields <code>x</code> to the block, and then returns <code>x</code>.
|
47
|
-
# The primary purpose of this method is to "tap into" a method chain,
|
48
|
-
# in order to perform operations on intermediate results within the chain.
|
49
|
-
#
|
50
|
-
# (1..10).tap { |x| puts "original: #{x.inspect}" }.to_a.
|
51
|
-
# tap { |x| puts "array: #{x.inspect}" }.
|
52
|
-
# select { |x| x%2 == 0 }.
|
53
|
-
# tap { |x| puts "evens: #{x.inspect}" }.
|
54
|
-
# map { |x| x*x }.
|
55
|
-
# tap { |x| puts "squares: #{x.inspect}" }
|
56
|
-
def tap
|
57
|
-
yield self
|
58
|
-
self
|
59
|
-
end unless Object.respond_to?(:tap)
|
60
|
-
|
61
|
-
# An elegant way to factor duplication out of options passed to a series of
|
62
|
-
# method calls. Each method called in the block, with the block variable as
|
63
|
-
# the receiver, will have its options merged with the default +options+ hash
|
64
|
-
# provided. Each method called on the block variable must take an options
|
65
|
-
# hash as its final argument.
|
66
|
-
#
|
67
|
-
# with_options :order => 'created_at', :class_name => 'Comment' do |post|
|
68
|
-
# post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all
|
69
|
-
# post.has_many :unapproved_comments, :conditions => ['approved = ?', false]
|
70
|
-
# post.has_many :all_comments
|
71
|
-
# end
|
72
|
-
#
|
73
|
-
# Can also be used with an explicit receiver:
|
74
|
-
#
|
75
|
-
# map.with_options :controller => "people" do |people|
|
76
|
-
# people.connect "/people", :action => "index"
|
77
|
-
# people.connect "/people/:id", :action => "show"
|
78
|
-
# end
|
79
|
-
#
|
80
|
-
def with_options(options)
|
81
|
-
yield ActiveSupport::OptionMerger.new(self, options)
|
82
|
-
end
|
83
|
-
|
84
|
-
# A duck-type assistant method. For example, Active Support extends Date
|
85
|
-
# to define an acts_like_date? method, and extends Time to define
|
86
|
-
# acts_like_time?. As a result, we can do "x.acts_like?(:time)" and
|
87
|
-
# "x.acts_like?(:date)" to do duck-type-safe comparisons, since classes that
|
88
|
-
# we want to act like Time simply need to define an acts_like_time? method.
|
89
|
-
def acts_like?(duck)
|
90
|
-
respond_to? "acts_like_#{duck}?"
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
1
|
+
require 'active_support/core_ext/object/returning'
|
2
|
+
require 'active_support/core_ext/object/with_options'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Object
|
2
|
+
# Returns +value+ after yielding +value+ to the block. This simplifies the
|
3
|
+
# process of constructing an object, performing work on the object, and then
|
4
|
+
# returning the object from a method. It is a Ruby-ized realization of the K
|
5
|
+
# combinator, courtesy of Mikael Brockman.
|
6
|
+
#
|
7
|
+
# ==== Examples
|
8
|
+
#
|
9
|
+
# # Without returning
|
10
|
+
# def foo
|
11
|
+
# values = []
|
12
|
+
# values << "bar"
|
13
|
+
# values << "baz"
|
14
|
+
# return values
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# foo # => ['bar', 'baz']
|
18
|
+
#
|
19
|
+
# # returning with a local variable
|
20
|
+
# def foo
|
21
|
+
# returning values = [] do
|
22
|
+
# values << 'bar'
|
23
|
+
# values << 'baz'
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# foo # => ['bar', 'baz']
|
28
|
+
#
|
29
|
+
# # returning with a block argument
|
30
|
+
# def foo
|
31
|
+
# returning [] do |values|
|
32
|
+
# values << 'bar'
|
33
|
+
# values << 'baz'
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# foo # => ['bar', 'baz']
|
38
|
+
def returning(value)
|
39
|
+
yield(value)
|
40
|
+
value
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class Object
|
4
|
+
# Alias of <tt>to_s</tt>.
|
5
|
+
def to_param
|
6
|
+
to_s
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class NilClass
|
11
|
+
def to_param
|
12
|
+
self
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class TrueClass
|
17
|
+
def to_param
|
18
|
+
self
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class FalseClass
|
23
|
+
def to_param
|
24
|
+
self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Array
|
29
|
+
# Calls <tt>to_param</tt> on all its elements and joins the result with
|
30
|
+
# slashes. This is used by <tt>url_for</tt> in Action Pack.
|
31
|
+
def to_param
|
32
|
+
collect { |e| e.to_param }.join '/'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Hash
|
37
|
+
# Converts a hash into a string suitable for use as a URL query string. An optional <tt>namespace</tt> can be
|
38
|
+
# passed to enclose the param names (see example below).
|
39
|
+
#
|
40
|
+
# ==== Examples
|
41
|
+
# { :name => 'David', :nationality => 'Danish' }.to_query # => "name=David&nationality=Danish"
|
42
|
+
#
|
43
|
+
# { :name => 'David', :nationality => 'Danish' }.to_query('user') # => "user[name]=David&user[nationality]=Danish"
|
44
|
+
def to_param(namespace = nil)
|
45
|
+
collect do |key, value|
|
46
|
+
value.to_query(namespace ? "#{namespace}[#{key}]" : key)
|
47
|
+
end.sort * '&'
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'active_support/core_ext/object/to_param'
|
2
|
+
|
3
|
+
class Object
|
4
|
+
# Converts an object into a string suitable for use as a URL query string, using the given <tt>key</tt> as the
|
5
|
+
# param name.
|
6
|
+
#
|
7
|
+
# Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
|
8
|
+
def to_query(key)
|
9
|
+
require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
|
10
|
+
"#{CGI.escape(key.to_s).gsub(/%(5B|5D)/n) { [$1].pack('H*') }}=#{CGI.escape(to_param.to_s)}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Array
|
15
|
+
# Converts an array into a string suitable for use as a URL query string,
|
16
|
+
# using the given +key+ as the param name.
|
17
|
+
#
|
18
|
+
# ['Rails', 'coding'].to_query('hobbies') # => "hobbies[]=Rails&hobbies[]=coding"
|
19
|
+
def to_query(key)
|
20
|
+
prefix = "#{key}[]"
|
21
|
+
collect { |value| value.to_query(prefix) }.join '&'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Hash
|
26
|
+
alias_method :to_query, :to_param
|
27
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
class Object
|
2
|
-
# Invokes the method identified by the symbol +method+, passing it any arguments
|
2
|
+
# Invokes the method identified by the symbol +method+, passing it any arguments
|
3
3
|
# and/or the block specified, just like the regular Ruby <tt>Object#send</tt> does.
|
4
4
|
#
|
5
|
-
# *Unlike* that method however, a +NoMethodError+ exception will *not* be raised
|
5
|
+
# *Unlike* that method however, a +NoMethodError+ exception will *not* be raised
|
6
6
|
# and +nil+ will be returned instead, if the receiving object is a +nil+ object or NilClass.
|
7
7
|
#
|
8
8
|
# ==== Examples
|
@@ -19,7 +19,7 @@ class Object
|
|
19
19
|
# Person.try(:find, 1)
|
20
20
|
# @people.try(:collect) {|p| p.name}
|
21
21
|
#--
|
22
|
-
# This method definition below is for rdoc purposes only. The alias_method call
|
22
|
+
# This method definition below is for rdoc purposes only. The alias_method call
|
23
23
|
# below overrides it as an optimization since +try+ behaves like +Object#send+,
|
24
24
|
# unless called on +NilClass+.
|
25
25
|
def try(method, *args, &block)
|
@@ -29,7 +29,7 @@ class Object
|
|
29
29
|
alias_method :try, :__send__
|
30
30
|
end
|
31
31
|
|
32
|
-
class NilClass
|
32
|
+
class NilClass #:nodoc:
|
33
33
|
def try(*args)
|
34
34
|
nil
|
35
35
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Object
|
2
|
+
# An elegant way to factor duplication out of options passed to a series of
|
3
|
+
# method calls. Each method called in the block, with the block variable as
|
4
|
+
# the receiver, will have its options merged with the default +options+ hash
|
5
|
+
# provided. Each method called on the block variable must take an options
|
6
|
+
# hash as its final argument.
|
7
|
+
#
|
8
|
+
# with_options :order => 'created_at', :class_name => 'Comment' do |post|
|
9
|
+
# post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all
|
10
|
+
# post.has_many :unapproved_comments, :conditions => ['approved = ?', false]
|
11
|
+
# post.has_many :all_comments
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# Can also be used with an explicit receiver:
|
15
|
+
#
|
16
|
+
# map.with_options :controller => "people" do |people|
|
17
|
+
# people.connect "/people", :action => "index"
|
18
|
+
# people.connect "/people/:id", :action => "show"
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
def with_options(options)
|
22
|
+
yield ActiveSupport::OptionMerger.new(self, options)
|
23
|
+
end
|
24
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
require "active_support/core_ext/object"
|
2
|
+
|
1
3
|
class Proc #:nodoc:
|
2
4
|
def bind(object)
|
3
5
|
block, time = self, Time.now
|
4
|
-
|
6
|
+
object.class_eval do
|
5
7
|
method_name = "__bind_#{time.to_i}_#{time.usec}"
|
6
|
-
define_method(method_name, &block)
|
7
|
-
method = instance_method(method_name)
|
8
|
-
remove_method(method_name)
|
8
|
+
define_method(method_name, &block) # define_method("__bind_1230458026_720454", &block)
|
9
|
+
method = instance_method(method_name) # method = instance_method("__bind_1230458026_720454")
|
10
|
+
remove_method(method_name) # remove_method("__bind_1230458026_720454")
|
9
11
|
method
|
10
12
|
end.bind(object)
|
11
13
|
end
|
@@ -1,25 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
exit if fork # Zap session leader. See [1].
|
1
|
+
module Process
|
2
|
+
def self.daemon(nochdir = nil, noclose = nil)
|
3
|
+
exit if fork # Parent exits, child continues.
|
4
|
+
Process.setsid # Become session leader.
|
5
|
+
exit if fork # Zap session leader. See [1].
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
unless nochdir
|
8
|
+
Dir.chdir "/" # Release old working directory.
|
9
|
+
end
|
11
10
|
|
12
|
-
|
11
|
+
File.umask 0000 # Ensure sensible umask. Adjust as needed.
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
unless noclose
|
14
|
+
STDIN.reopen "/dev/null" # Free file descriptors and
|
15
|
+
STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
|
16
|
+
STDERR.reopen '/dev/null', 'a'
|
17
|
+
end
|
19
18
|
|
20
|
-
|
19
|
+
trap("TERM") { exit }
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
end
|
21
|
+
return 0
|
22
|
+
end unless respond_to?(:daemon)
|
25
23
|
end
|