mack-active_record 0.8.1 → 0.8.2

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.
Files changed (379) hide show
  1. data/lib/gems/activerecord-2.2.2/lib/active_record/aggregations.rb +261 -0
  2. data/lib/gems/activerecord-2.2.2/lib/active_record/association_preload.rb +374 -0
  3. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/association_collection.rb +453 -0
  4. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/association_proxy.rb +272 -0
  5. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/belongs_to_association.rb +58 -0
  6. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/belongs_to_polymorphic_association.rb +49 -0
  7. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/has_and_belongs_to_many_association.rb +121 -0
  8. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/has_many_association.rb +121 -0
  9. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/has_many_through_association.rb +256 -0
  10. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/has_one_association.rb +115 -0
  11. data/lib/gems/activerecord-2.2.2/lib/active_record/associations/has_one_through_association.rb +31 -0
  12. data/lib/gems/activerecord-2.2.2/lib/active_record/associations.rb +2227 -0
  13. data/lib/gems/activerecord-2.2.2/lib/active_record/attribute_methods.rb +387 -0
  14. data/lib/gems/activerecord-2.2.2/lib/active_record/base.rb +2967 -0
  15. data/lib/gems/activerecord-2.2.2/lib/active_record/calculations.rb +299 -0
  16. data/lib/gems/activerecord-2.2.2/lib/active_record/callbacks.rb +331 -0
  17. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb +355 -0
  18. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb +136 -0
  19. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/database_statements.rb +201 -0
  20. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb +94 -0
  21. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/quoting.rb +69 -0
  22. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/schema_definitions.rb +705 -0
  23. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/schema_statements.rb +434 -0
  24. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract_adapter.rb +210 -0
  25. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/mysql_adapter.rb +585 -0
  26. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/postgresql_adapter.rb +1065 -0
  27. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  28. data/lib/gems/activerecord-2.2.2/lib/active_record/connection_adapters/sqlite_adapter.rb +418 -0
  29. data/lib/gems/activerecord-2.2.2/lib/active_record/dirty.rb +183 -0
  30. data/lib/gems/activerecord-2.2.2/lib/active_record/dynamic_finder_match.rb +41 -0
  31. data/lib/gems/activerecord-2.2.2/lib/active_record/fixtures.rb +998 -0
  32. data/lib/gems/activerecord-2.2.2/lib/active_record/i18n_interpolation_deprecation.rb +26 -0
  33. data/lib/gems/activerecord-2.2.2/lib/active_record/locale/en.yml +54 -0
  34. data/lib/gems/activerecord-2.2.2/lib/active_record/locking/optimistic.rb +148 -0
  35. data/lib/gems/activerecord-2.2.2/lib/active_record/locking/pessimistic.rb +77 -0
  36. data/lib/gems/activerecord-2.2.2/lib/active_record/migration.rb +560 -0
  37. data/lib/gems/activerecord-2.2.2/lib/active_record/named_scope.rb +181 -0
  38. data/lib/gems/activerecord-2.2.2/lib/active_record/observer.rb +197 -0
  39. data/lib/gems/activerecord-2.2.2/lib/active_record/query_cache.rb +21 -0
  40. data/lib/gems/activerecord-2.2.2/lib/active_record/reflection.rb +307 -0
  41. data/lib/gems/activerecord-2.2.2/lib/active_record/schema.rb +51 -0
  42. data/lib/gems/activerecord-2.2.2/lib/active_record/schema_dumper.rb +177 -0
  43. data/lib/gems/activerecord-2.2.2/lib/active_record/serialization.rb +98 -0
  44. data/lib/gems/activerecord-2.2.2/lib/active_record/serializers/json_serializer.rb +80 -0
  45. data/lib/gems/activerecord-2.2.2/lib/active_record/serializers/xml_serializer.rb +338 -0
  46. data/lib/gems/activerecord-2.2.2/lib/active_record/test_case.rb +60 -0
  47. data/lib/gems/activerecord-2.2.2/lib/active_record/timestamp.rb +41 -0
  48. data/lib/gems/activerecord-2.2.2/lib/active_record/transactions.rb +185 -0
  49. data/lib/gems/activerecord-2.2.2/lib/active_record/validations.rb +1061 -0
  50. data/lib/gems/activerecord-2.2.2/lib/active_record/version.rb +9 -0
  51. data/lib/gems/activerecord-2.2.2/lib/active_record.rb +81 -0
  52. data/lib/gems/activerecord-2.2.2/lib/activerecord.rb +1 -0
  53. data/lib/gems/activesupport-2.2.2/lib/active_support/base64.rb +33 -0
  54. data/lib/gems/activesupport-2.2.2/lib/active_support/basic_object.rb +24 -0
  55. data/lib/gems/activesupport-2.2.2/lib/active_support/buffered_logger.rb +122 -0
  56. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/compressed_mem_cache_store.rb +20 -0
  57. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/drb_store.rb +15 -0
  58. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/file_store.rb +72 -0
  59. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/mem_cache_store.rb +127 -0
  60. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/memory_store.rb +52 -0
  61. data/lib/gems/activesupport-2.2.2/lib/active_support/cache/synchronized_memory_store.rb +47 -0
  62. data/lib/gems/activesupport-2.2.2/lib/active_support/cache.rb +223 -0
  63. data/lib/gems/activesupport-2.2.2/lib/active_support/callbacks.rb +280 -0
  64. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array/access.rb +53 -0
  65. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array/conversions.rb +183 -0
  66. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array/extract_options.rb +20 -0
  67. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array/grouping.rb +106 -0
  68. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array/random_access.rb +12 -0
  69. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/array.rb +13 -0
  70. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/base64/encoding.rb +16 -0
  71. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/base64.rb +4 -0
  72. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/benchmark.rb +12 -0
  73. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/bigdecimal/conversions.rb +37 -0
  74. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/bigdecimal.rb +6 -0
  75. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/blank.rb +58 -0
  76. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  77. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/cgi.rb +5 -0
  78. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/class/attribute_accessors.rb +54 -0
  79. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/class/delegating_attributes.rb +46 -0
  80. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  81. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/class/removal.rb +50 -0
  82. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/class.rb +4 -0
  83. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date/behavior.rb +42 -0
  84. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date/calculations.rb +230 -0
  85. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date/conversions.rb +107 -0
  86. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date.rb +10 -0
  87. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date_time/calculations.rb +126 -0
  88. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date_time/conversions.rb +96 -0
  89. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/date_time.rb +12 -0
  90. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/duplicable.rb +43 -0
  91. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/enumerable.rb +107 -0
  92. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/exception.rb +41 -0
  93. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/file/atomic.rb +46 -0
  94. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/file.rb +5 -0
  95. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/float/rounding.rb +24 -0
  96. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/float/time.rb +27 -0
  97. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/float.rb +7 -0
  98. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/conversions.rb +259 -0
  99. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/deep_merge.rb +23 -0
  100. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/diff.rb +19 -0
  101. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/except.rb +25 -0
  102. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/indifferent_access.rb +137 -0
  103. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/keys.rb +52 -0
  104. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/reverse_merge.rb +35 -0
  105. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash/slice.rb +33 -0
  106. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/hash.rb +14 -0
  107. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  108. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/integer/inflections.rb +20 -0
  109. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/integer/time.rb +45 -0
  110. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/integer.rb +9 -0
  111. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  112. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  113. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/debugger.rb +13 -0
  114. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  115. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel/requires.rb +24 -0
  116. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/kernel.rb +5 -0
  117. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/load_error.rb +38 -0
  118. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/logger.rb +143 -0
  119. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/aliasing.rb +74 -0
  120. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  121. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  122. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/attribute_accessors.rb +58 -0
  123. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/delegation.rb +95 -0
  124. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/inclusion.rb +30 -0
  125. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/introspection.rb +90 -0
  126. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/loading.rb +23 -0
  127. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/model_naming.rb +23 -0
  128. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module/synchronization.rb +39 -0
  129. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/module.rb +23 -0
  130. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/name_error.rb +17 -0
  131. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  132. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  133. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/numeric/time.rb +81 -0
  134. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/numeric.rb +9 -0
  135. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object/conversions.rb +14 -0
  136. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object/extending.rb +80 -0
  137. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  138. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object/metaclass.rb +13 -0
  139. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object/misc.rb +74 -0
  140. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/object.rb +5 -0
  141. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  142. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/pathname.rb +7 -0
  143. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/proc.rb +12 -0
  144. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/process/daemon.rb +25 -0
  145. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/process.rb +1 -0
  146. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  147. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/range/conversions.rb +27 -0
  148. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/range/include_range.rb +30 -0
  149. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/range/overlaps.rb +15 -0
  150. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/range.rb +11 -0
  151. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/rexml.rb +36 -0
  152. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/access.rb +82 -0
  153. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/behavior.rb +13 -0
  154. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/conversions.rb +28 -0
  155. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/filters.rb +26 -0
  156. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/inflections.rb +167 -0
  157. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/iterators.rb +21 -0
  158. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/multibyte.rb +81 -0
  159. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/starts_ends_with.rb +35 -0
  160. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string/xchar.rb +11 -0
  161. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/string.rb +22 -0
  162. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/symbol.rb +14 -0
  163. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/time/behavior.rb +13 -0
  164. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/time/calculations.rb +303 -0
  165. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/time/conversions.rb +90 -0
  166. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/time/zones.rb +86 -0
  167. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext/time.rb +42 -0
  168. data/lib/gems/activesupport-2.2.2/lib/active_support/core_ext.rb +4 -0
  169. data/lib/gems/activesupport-2.2.2/lib/active_support/dependencies.rb +621 -0
  170. data/lib/gems/activesupport-2.2.2/lib/active_support/deprecation.rb +243 -0
  171. data/lib/gems/activesupport-2.2.2/lib/active_support/duration.rb +96 -0
  172. data/lib/gems/activesupport-2.2.2/lib/active_support/gzip.rb +25 -0
  173. data/lib/gems/activesupport-2.2.2/lib/active_support/inflections.rb +55 -0
  174. data/lib/gems/activesupport-2.2.2/lib/active_support/inflector.rb +397 -0
  175. data/lib/gems/activesupport-2.2.2/lib/active_support/json/decoding.rb +63 -0
  176. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/date.rb +21 -0
  177. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/date_time.rb +21 -0
  178. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/enumerable.rb +12 -0
  179. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/false_class.rb +5 -0
  180. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/hash.rb +47 -0
  181. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/nil_class.rb +5 -0
  182. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/numeric.rb +5 -0
  183. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/object.rb +6 -0
  184. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/regexp.rb +5 -0
  185. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/string.rb +36 -0
  186. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/symbol.rb +5 -0
  187. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/time.rb +21 -0
  188. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoders/true_class.rb +5 -0
  189. data/lib/gems/activesupport-2.2.2/lib/active_support/json/encoding.rb +37 -0
  190. data/lib/gems/activesupport-2.2.2/lib/active_support/json/variable.rb +10 -0
  191. data/lib/gems/activesupport-2.2.2/lib/active_support/json.rb +23 -0
  192. data/lib/gems/activesupport-2.2.2/lib/active_support/locale/en.yml +32 -0
  193. data/lib/gems/activesupport-2.2.2/lib/active_support/memoizable.rb +82 -0
  194. data/lib/gems/activesupport-2.2.2/lib/active_support/multibyte/chars.rb +679 -0
  195. data/lib/gems/activesupport-2.2.2/lib/active_support/multibyte/exceptions.rb +8 -0
  196. data/lib/gems/activesupport-2.2.2/lib/active_support/multibyte/unicode_database.rb +71 -0
  197. data/lib/gems/activesupport-2.2.2/lib/active_support/multibyte.rb +33 -0
  198. data/lib/gems/activesupport-2.2.2/lib/active_support/option_merger.rb +17 -0
  199. data/lib/gems/activesupport-2.2.2/lib/active_support/ordered_hash.rb +58 -0
  200. data/lib/gems/activesupport-2.2.2/lib/active_support/ordered_options.rb +19 -0
  201. data/lib/gems/activesupport-2.2.2/lib/active_support/rescuable.rb +108 -0
  202. data/lib/gems/activesupport-2.2.2/lib/active_support/secure_random.rb +197 -0
  203. data/lib/gems/activesupport-2.2.2/lib/active_support/string_inquirer.rb +21 -0
  204. data/lib/gems/activesupport-2.2.2/lib/active_support/test_case.rb +24 -0
  205. data/lib/gems/activesupport-2.2.2/lib/active_support/testing/core_ext/test/unit/assertions.rb +72 -0
  206. data/lib/gems/activesupport-2.2.2/lib/active_support/testing/core_ext/test.rb +6 -0
  207. data/lib/gems/activesupport-2.2.2/lib/active_support/testing/default.rb +9 -0
  208. data/lib/gems/activesupport-2.2.2/lib/active_support/testing/performance.rb +452 -0
  209. data/lib/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb +120 -0
  210. data/lib/gems/activesupport-2.2.2/lib/active_support/time_with_zone.rb +328 -0
  211. data/lib/gems/activesupport-2.2.2/lib/active_support/values/time_zone.rb +403 -0
  212. data/lib/gems/activesupport-2.2.2/lib/active_support/values/unicode_tables.dat +0 -0
  213. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  214. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  215. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  216. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  217. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  218. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  219. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  220. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  221. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/i18n-0.0.1/i18n/backend/simple.rb +216 -0
  222. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/i18n-0.0.1/i18n/exceptions.rb +53 -0
  223. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/i18n-0.0.1/i18n.rb +194 -0
  224. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/memcache-client-1.5.1/memcache.rb +849 -0
  225. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +47 -0
  226. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +228 -0
  227. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +55 -0
  228. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +219 -0
  229. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +40 -0
  230. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +18 -0
  231. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  232. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  233. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  234. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  235. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
  236. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +23 -0
  237. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +23 -0
  238. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +283 -0
  239. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +136 -0
  240. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +204 -0
  241. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +161 -0
  242. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +27 -0
  243. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +274 -0
  244. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  245. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +194 -0
  246. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +22 -0
  247. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +35 -0
  248. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  249. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +139 -0
  250. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +144 -0
  251. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +131 -0
  252. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +282 -0
  253. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +30 -0
  254. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +74 -0
  255. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +205 -0
  256. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
  257. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +288 -0
  258. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +196 -0
  259. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +67 -0
  260. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  261. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +161 -0
  262. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  263. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  264. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +30 -0
  265. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  266. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  267. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  268. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  269. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  270. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +20 -0
  271. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  272. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +30 -0
  273. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  274. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  275. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  276. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  277. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  278. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +163 -0
  279. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +18 -0
  280. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  281. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  282. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  283. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +34 -0
  284. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  285. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +33 -0
  286. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +59 -0
  287. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  288. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  289. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +121 -0
  290. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  291. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  292. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  293. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  294. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  295. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  296. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  297. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  298. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  299. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  300. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  301. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  302. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +29 -0
  303. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +193 -0
  304. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  305. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +37 -0
  306. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +185 -0
  307. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +16 -0
  308. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  309. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +185 -0
  310. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  311. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +188 -0
  312. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  313. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +232 -0
  314. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  315. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +197 -0
  316. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  317. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +276 -0
  318. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  319. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  320. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +168 -0
  321. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  322. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  323. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +288 -0
  324. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +211 -0
  325. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +170 -0
  326. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +181 -0
  327. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +232 -0
  328. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +187 -0
  329. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +176 -0
  330. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +215 -0
  331. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  332. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +13 -0
  333. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +173 -0
  334. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  335. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  336. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +183 -0
  337. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  338. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  339. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  340. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  341. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  342. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +22 -0
  343. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  344. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  345. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +25 -0
  346. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  347. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  348. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  349. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  350. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +52 -0
  351. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +51 -0
  352. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +44 -0
  353. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +98 -0
  354. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +56 -0
  355. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +292 -0
  356. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +508 -0
  357. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +56 -0
  358. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +40 -0
  359. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +94 -0
  360. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +198 -0
  361. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +129 -0
  362. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +33 -0
  363. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb +1021 -0
  364. data/lib/gems/activesupport-2.2.2/lib/active_support/vendor.rb +34 -0
  365. data/lib/gems/activesupport-2.2.2/lib/active_support/version.rb +9 -0
  366. data/lib/gems/activesupport-2.2.2/lib/active_support/whiny_nil.rb +58 -0
  367. data/lib/gems/activesupport-2.2.2/lib/active_support.rb +61 -0
  368. data/lib/gems/activesupport-2.2.2/lib/activesupport.rb +1 -0
  369. data/lib/gems.rb +13 -0
  370. data/lib/mack-active_record/database.rb +4 -4
  371. data/lib/mack-active_record/migration_generator/migration_generator.rb +6 -2
  372. data/lib/mack-active_record/model_generator/manifest.yml +3 -3
  373. data/lib/mack-active_record/model_generator/model_generator.rb +8 -1
  374. data/lib/mack-active_record/model_generator/templates/model.rb.template +1 -1
  375. data/lib/mack-active_record/model_generator/templates/rspec.rb.template +1 -1
  376. data/lib/mack-active_record/model_generator/templates/test.rb.template +1 -1
  377. data/lib/mack-active_record.rb +3 -1
  378. data/lib/mack-active_record_tasks.rb +3 -0
  379. metadata +457 -16
@@ -0,0 +1,705 @@
1
+ require 'date'
2
+ require 'set'
3
+ require 'bigdecimal'
4
+ require 'bigdecimal/util'
5
+
6
+ module ActiveRecord
7
+ module ConnectionAdapters #:nodoc:
8
+ # An abstract definition of a column in a table.
9
+ class Column
10
+ TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE'].to_set
11
+
12
+ module Format
13
+ ISO_DATE = /\A(\d{4})-(\d\d)-(\d\d)\z/
14
+ ISO_DATETIME = /\A(\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)(\.\d+)?\z/
15
+ end
16
+
17
+ attr_reader :name, :default, :type, :limit, :null, :sql_type, :precision, :scale
18
+ attr_accessor :primary
19
+
20
+ # Instantiates a new column in the table.
21
+ #
22
+ # +name+ is the column's name, such as <tt>supplier_id</tt> in <tt>supplier_id int(11)</tt>.
23
+ # +default+ is the type-casted default value, such as +new+ in <tt>sales_stage varchar(20) default 'new'</tt>.
24
+ # +sql_type+ is only used to extract the column's length, if necessary. For example +60+ in <tt>company_name varchar(60)</tt>.
25
+ # +null+ determines if this column allows +NULL+ values.
26
+ def initialize(name, default, sql_type = nil, null = true)
27
+ @name, @sql_type, @null = name, sql_type, null
28
+ @limit, @precision, @scale = extract_limit(sql_type), extract_precision(sql_type), extract_scale(sql_type)
29
+ @type = simplified_type(sql_type)
30
+ @default = extract_default(default)
31
+
32
+ @primary = nil
33
+ end
34
+
35
+ def text?
36
+ type == :string || type == :text
37
+ end
38
+
39
+ def number?
40
+ type == :integer || type == :float || type == :decimal
41
+ end
42
+
43
+ def has_default?
44
+ !default.nil?
45
+ end
46
+
47
+ # Returns the Ruby class that corresponds to the abstract data type.
48
+ def klass
49
+ case type
50
+ when :integer then Fixnum
51
+ when :float then Float
52
+ when :decimal then BigDecimal
53
+ when :datetime then Time
54
+ when :date then Date
55
+ when :timestamp then Time
56
+ when :time then Time
57
+ when :text, :string then String
58
+ when :binary then String
59
+ when :boolean then Object
60
+ end
61
+ end
62
+
63
+ # Casts value (which is a String) to an appropriate instance.
64
+ def type_cast(value)
65
+ return nil if value.nil?
66
+ case type
67
+ when :string then value
68
+ when :text then value
69
+ when :integer then value.to_i rescue value ? 1 : 0
70
+ when :float then value.to_f
71
+ when :decimal then self.class.value_to_decimal(value)
72
+ when :datetime then self.class.string_to_time(value)
73
+ when :timestamp then self.class.string_to_time(value)
74
+ when :time then self.class.string_to_dummy_time(value)
75
+ when :date then self.class.string_to_date(value)
76
+ when :binary then self.class.binary_to_string(value)
77
+ when :boolean then self.class.value_to_boolean(value)
78
+ else value
79
+ end
80
+ end
81
+
82
+ def type_cast_code(var_name)
83
+ case type
84
+ when :string then nil
85
+ when :text then nil
86
+ when :integer then "(#{var_name}.to_i rescue #{var_name} ? 1 : 0)"
87
+ when :float then "#{var_name}.to_f"
88
+ when :decimal then "#{self.class.name}.value_to_decimal(#{var_name})"
89
+ when :datetime then "#{self.class.name}.string_to_time(#{var_name})"
90
+ when :timestamp then "#{self.class.name}.string_to_time(#{var_name})"
91
+ when :time then "#{self.class.name}.string_to_dummy_time(#{var_name})"
92
+ when :date then "#{self.class.name}.string_to_date(#{var_name})"
93
+ when :binary then "#{self.class.name}.binary_to_string(#{var_name})"
94
+ when :boolean then "#{self.class.name}.value_to_boolean(#{var_name})"
95
+ else nil
96
+ end
97
+ end
98
+
99
+ # Returns the human name of the column name.
100
+ #
101
+ # ===== Examples
102
+ # Column.new('sales_stage', ...).human_name # => 'Sales stage'
103
+ def human_name
104
+ Base.human_attribute_name(@name)
105
+ end
106
+
107
+ def extract_default(default)
108
+ type_cast(default)
109
+ end
110
+
111
+ class << self
112
+ # Used to convert from Strings to BLOBs
113
+ def string_to_binary(value)
114
+ value
115
+ end
116
+
117
+ # Used to convert from BLOBs to Strings
118
+ def binary_to_string(value)
119
+ value
120
+ end
121
+
122
+ def string_to_date(string)
123
+ return string unless string.is_a?(String)
124
+ return nil if string.empty?
125
+
126
+ fast_string_to_date(string) || fallback_string_to_date(string)
127
+ end
128
+
129
+ def string_to_time(string)
130
+ return string unless string.is_a?(String)
131
+ return nil if string.empty?
132
+
133
+ fast_string_to_time(string) || fallback_string_to_time(string)
134
+ end
135
+
136
+ def string_to_dummy_time(string)
137
+ return string unless string.is_a?(String)
138
+ return nil if string.empty?
139
+
140
+ string_to_time "2000-01-01 #{string}"
141
+ end
142
+
143
+ # convert something to a boolean
144
+ def value_to_boolean(value)
145
+ if value.is_a?(String) && value.blank?
146
+ nil
147
+ else
148
+ TRUE_VALUES.include?(value)
149
+ end
150
+ end
151
+
152
+ # convert something to a BigDecimal
153
+ def value_to_decimal(value)
154
+ # Using .class is faster than .is_a? and
155
+ # subclasses of BigDecimal will be handled
156
+ # in the else clause
157
+ if value.class == BigDecimal
158
+ value
159
+ elsif value.respond_to?(:to_d)
160
+ value.to_d
161
+ else
162
+ value.to_s.to_d
163
+ end
164
+ end
165
+
166
+ protected
167
+ # '0.123456' -> 123456
168
+ # '1.123456' -> 123456
169
+ def microseconds(time)
170
+ ((time[:sec_fraction].to_f % 1) * 1_000_000).to_i
171
+ end
172
+
173
+ def new_date(year, mon, mday)
174
+ if year && year != 0
175
+ Date.new(year, mon, mday) rescue nil
176
+ end
177
+ end
178
+
179
+ def new_time(year, mon, mday, hour, min, sec, microsec)
180
+ # Treat 0000-00-00 00:00:00 as nil.
181
+ return nil if year.nil? || year == 0
182
+
183
+ Time.time_with_datetime_fallback(Base.default_timezone, year, mon, mday, hour, min, sec, microsec) rescue nil
184
+ end
185
+
186
+ def fast_string_to_date(string)
187
+ if string =~ Format::ISO_DATE
188
+ new_date $1.to_i, $2.to_i, $3.to_i
189
+ end
190
+ end
191
+
192
+ # Doesn't handle time zones.
193
+ def fast_string_to_time(string)
194
+ if string =~ Format::ISO_DATETIME
195
+ microsec = ($7.to_f * 1_000_000).to_i
196
+ new_time $1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i, microsec
197
+ end
198
+ end
199
+
200
+ def fallback_string_to_date(string)
201
+ new_date(*::Date._parse(string, false).values_at(:year, :mon, :mday))
202
+ end
203
+
204
+ def fallback_string_to_time(string)
205
+ time_hash = Date._parse(string)
206
+ time_hash[:sec_fraction] = microseconds(time_hash)
207
+
208
+ new_time(*time_hash.values_at(:year, :mon, :mday, :hour, :min, :sec, :sec_fraction))
209
+ end
210
+ end
211
+
212
+ private
213
+ def extract_limit(sql_type)
214
+ $1.to_i if sql_type =~ /\((.*)\)/
215
+ end
216
+
217
+ def extract_precision(sql_type)
218
+ $2.to_i if sql_type =~ /^(numeric|decimal|number)\((\d+)(,\d+)?\)/i
219
+ end
220
+
221
+ def extract_scale(sql_type)
222
+ case sql_type
223
+ when /^(numeric|decimal|number)\((\d+)\)/i then 0
224
+ when /^(numeric|decimal|number)\((\d+)(,(\d+))\)/i then $4.to_i
225
+ end
226
+ end
227
+
228
+ def simplified_type(field_type)
229
+ case field_type
230
+ when /int/i
231
+ :integer
232
+ when /float|double/i
233
+ :float
234
+ when /decimal|numeric|number/i
235
+ extract_scale(field_type) == 0 ? :integer : :decimal
236
+ when /datetime/i
237
+ :datetime
238
+ when /timestamp/i
239
+ :timestamp
240
+ when /time/i
241
+ :time
242
+ when /date/i
243
+ :date
244
+ when /clob/i, /text/i
245
+ :text
246
+ when /blob/i, /binary/i
247
+ :binary
248
+ when /char/i, /string/i
249
+ :string
250
+ when /boolean/i
251
+ :boolean
252
+ end
253
+ end
254
+ end
255
+
256
+ class IndexDefinition < Struct.new(:table, :name, :unique, :columns) #:nodoc:
257
+ end
258
+
259
+ # Abstract representation of a column definition. Instances of this type
260
+ # are typically created by methods in TableDefinition, and added to the
261
+ # +columns+ attribute of said TableDefinition object, in order to be used
262
+ # for generating a number of table creation or table changing SQL statements.
263
+ class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :default, :null) #:nodoc:
264
+
265
+ def sql_type
266
+ base.type_to_sql(type.to_sym, limit, precision, scale) rescue type
267
+ end
268
+
269
+ def to_sql
270
+ column_sql = "#{base.quote_column_name(name)} #{sql_type}"
271
+ column_options = {}
272
+ column_options[:null] = null unless null.nil?
273
+ column_options[:default] = default unless default.nil?
274
+ add_column_options!(column_sql, column_options) unless type.to_sym == :primary_key
275
+ column_sql
276
+ end
277
+ alias to_s :to_sql
278
+
279
+ private
280
+
281
+ def add_column_options!(sql, options)
282
+ base.add_column_options!(sql, options.merge(:column => self))
283
+ end
284
+ end
285
+
286
+ # Represents the schema of an SQL table in an abstract way. This class
287
+ # provides methods for manipulating the schema representation.
288
+ #
289
+ # Inside migration files, the +t+ object in +create_table+ and
290
+ # +change_table+ is actually of this type:
291
+ #
292
+ # class SomeMigration < ActiveRecord::Migration
293
+ # def self.up
294
+ # create_table :foo do |t|
295
+ # puts t.class # => "ActiveRecord::ConnectionAdapters::TableDefinition"
296
+ # end
297
+ # end
298
+ #
299
+ # def self.down
300
+ # ...
301
+ # end
302
+ # end
303
+ #
304
+ # The table definitions
305
+ # The Columns are stored as a ColumnDefinition in the +columns+ attribute.
306
+ class TableDefinition
307
+ # An array of ColumnDefinition objects, representing the column changes
308
+ # that have been defined.
309
+ attr_accessor :columns
310
+
311
+ def initialize(base)
312
+ @columns = []
313
+ @base = base
314
+ end
315
+
316
+ # Appends a primary key definition to the table definition.
317
+ # Can be called multiple times, but this is probably not a good idea.
318
+ def primary_key(name)
319
+ column(name, :primary_key)
320
+ end
321
+
322
+ # Returns a ColumnDefinition for the column with name +name+.
323
+ def [](name)
324
+ @columns.find {|column| column.name.to_s == name.to_s}
325
+ end
326
+
327
+ # Instantiates a new column for the table.
328
+ # The +type+ parameter is normally one of the migrations native types,
329
+ # which is one of the following:
330
+ # <tt>:primary_key</tt>, <tt>:string</tt>, <tt>:text</tt>,
331
+ # <tt>:integer</tt>, <tt>:float</tt>, <tt>:decimal</tt>,
332
+ # <tt>:datetime</tt>, <tt>:timestamp</tt>, <tt>:time</tt>,
333
+ # <tt>:date</tt>, <tt>:binary</tt>, <tt>:boolean</tt>.
334
+ #
335
+ # You may use a type not in this list as long as it is supported by your
336
+ # database (for example, "polygon" in MySQL), but this will not be database
337
+ # agnostic and should usually be avoided.
338
+ #
339
+ # Available options are (none of these exists by default):
340
+ # * <tt>:limit</tt> -
341
+ # Requests a maximum column length. This is number of characters for <tt>:string</tt> and <tt>:text</tt> columns and number of bytes for :binary and :integer columns.
342
+ # * <tt>:default</tt> -
343
+ # The column's default value. Use nil for NULL.
344
+ # * <tt>:null</tt> -
345
+ # Allows or disallows +NULL+ values in the column. This option could
346
+ # have been named <tt>:null_allowed</tt>.
347
+ # * <tt>:precision</tt> -
348
+ # Specifies the precision for a <tt>:decimal</tt> column.
349
+ # * <tt>:scale</tt> -
350
+ # Specifies the scale for a <tt>:decimal</tt> column.
351
+ #
352
+ # For clarity's sake: the precision is the number of significant digits,
353
+ # while the scale is the number of digits that can be stored following
354
+ # the decimal point. For example, the number 123.45 has a precision of 5
355
+ # and a scale of 2. A decimal with a precision of 5 and a scale of 2 can
356
+ # range from -999.99 to 999.99.
357
+ #
358
+ # Please be aware of different RDBMS implementations behavior with
359
+ # <tt>:decimal</tt> columns:
360
+ # * The SQL standard says the default scale should be 0, <tt>:scale</tt> <=
361
+ # <tt>:precision</tt>, and makes no comments about the requirements of
362
+ # <tt>:precision</tt>.
363
+ # * MySQL: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..30].
364
+ # Default is (10,0).
365
+ # * PostgreSQL: <tt>:precision</tt> [1..infinity],
366
+ # <tt>:scale</tt> [0..infinity]. No default.
367
+ # * SQLite2: Any <tt>:precision</tt> and <tt>:scale</tt> may be used.
368
+ # Internal storage as strings. No default.
369
+ # * SQLite3: No restrictions on <tt>:precision</tt> and <tt>:scale</tt>,
370
+ # but the maximum supported <tt>:precision</tt> is 16. No default.
371
+ # * Oracle: <tt>:precision</tt> [1..38], <tt>:scale</tt> [-84..127].
372
+ # Default is (38,0).
373
+ # * DB2: <tt>:precision</tt> [1..63], <tt>:scale</tt> [0..62].
374
+ # Default unknown.
375
+ # * Firebird: <tt>:precision</tt> [1..18], <tt>:scale</tt> [0..18].
376
+ # Default (9,0). Internal types NUMERIC and DECIMAL have different
377
+ # storage rules, decimal being better.
378
+ # * FrontBase?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
379
+ # Default (38,0). WARNING Max <tt>:precision</tt>/<tt>:scale</tt> for
380
+ # NUMERIC is 19, and DECIMAL is 38.
381
+ # * SqlServer?: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
382
+ # Default (38,0).
383
+ # * Sybase: <tt>:precision</tt> [1..38], <tt>:scale</tt> [0..38].
384
+ # Default (38,0).
385
+ # * OpenBase?: Documentation unclear. Claims storage in <tt>double</tt>.
386
+ #
387
+ # This method returns <tt>self</tt>.
388
+ #
389
+ # == Examples
390
+ # # Assuming td is an instance of TableDefinition
391
+ # td.column(:granted, :boolean)
392
+ # # granted BOOLEAN
393
+ #
394
+ # td.column(:picture, :binary, :limit => 2.megabytes)
395
+ # # => picture BLOB(2097152)
396
+ #
397
+ # td.column(:sales_stage, :string, :limit => 20, :default => 'new', :null => false)
398
+ # # => sales_stage VARCHAR(20) DEFAULT 'new' NOT NULL
399
+ #
400
+ # td.column(:bill_gates_money, :decimal, :precision => 15, :scale => 2)
401
+ # # => bill_gates_money DECIMAL(15,2)
402
+ #
403
+ # td.column(:sensor_reading, :decimal, :precision => 30, :scale => 20)
404
+ # # => sensor_reading DECIMAL(30,20)
405
+ #
406
+ # # While <tt>:scale</tt> defaults to zero on most databases, it
407
+ # # probably wouldn't hurt to include it.
408
+ # td.column(:huge_integer, :decimal, :precision => 30)
409
+ # # => huge_integer DECIMAL(30)
410
+ #
411
+ # # Defines a column with a database-specific type.
412
+ # td.column(:foo, 'polygon')
413
+ # # => foo polygon
414
+ #
415
+ # == Short-hand examples
416
+ #
417
+ # Instead of calling +column+ directly, you can also work with the short-hand definitions for the default types.
418
+ # They use the type as the method name instead of as a parameter and allow for multiple columns to be defined
419
+ # in a single statement.
420
+ #
421
+ # What can be written like this with the regular calls to column:
422
+ #
423
+ # create_table "products", :force => true do |t|
424
+ # t.column "shop_id", :integer
425
+ # t.column "creator_id", :integer
426
+ # t.column "name", :string, :default => "Untitled"
427
+ # t.column "value", :string, :default => "Untitled"
428
+ # t.column "created_at", :datetime
429
+ # t.column "updated_at", :datetime
430
+ # end
431
+ #
432
+ # Can also be written as follows using the short-hand:
433
+ #
434
+ # create_table :products do |t|
435
+ # t.integer :shop_id, :creator_id
436
+ # t.string :name, :value, :default => "Untitled"
437
+ # t.timestamps
438
+ # end
439
+ #
440
+ # There's a short-hand method for each of the type values declared at the top. And then there's
441
+ # TableDefinition#timestamps that'll add created_at and +updated_at+ as datetimes.
442
+ #
443
+ # TableDefinition#references will add an appropriately-named _id column, plus a corresponding _type
444
+ # column if the <tt>:polymorphic</tt> option is supplied. If <tt>:polymorphic</tt> is a hash of options, these will be
445
+ # used when creating the <tt>_type</tt> column. So what can be written like this:
446
+ #
447
+ # create_table :taggings do |t|
448
+ # t.integer :tag_id, :tagger_id, :taggable_id
449
+ # t.string :tagger_type
450
+ # t.string :taggable_type, :default => 'Photo'
451
+ # end
452
+ #
453
+ # Can also be written as follows using references:
454
+ #
455
+ # create_table :taggings do |t|
456
+ # t.references :tag
457
+ # t.references :tagger, :polymorphic => true
458
+ # t.references :taggable, :polymorphic => { :default => 'Photo' }
459
+ # end
460
+ def column(name, type, options = {})
461
+ column = self[name] || ColumnDefinition.new(@base, name, type)
462
+ if options[:limit]
463
+ column.limit = options[:limit]
464
+ elsif native[type.to_sym].is_a?(Hash)
465
+ column.limit = native[type.to_sym][:limit]
466
+ end
467
+ column.precision = options[:precision]
468
+ column.scale = options[:scale]
469
+ column.default = options[:default]
470
+ column.null = options[:null]
471
+ @columns << column unless @columns.include? column
472
+ self
473
+ end
474
+
475
+ %w( string text integer float decimal datetime timestamp time date binary boolean ).each do |column_type|
476
+ class_eval <<-EOV
477
+ def #{column_type}(*args)
478
+ options = args.extract_options!
479
+ column_names = args
480
+
481
+ column_names.each { |name| column(name, '#{column_type}', options) }
482
+ end
483
+ EOV
484
+ end
485
+
486
+ # Appends <tt>:datetime</tt> columns <tt>:created_at</tt> and
487
+ # <tt>:updated_at</tt> to the table.
488
+ def timestamps(*args)
489
+ options = args.extract_options!
490
+ column(:created_at, :datetime, options)
491
+ column(:updated_at, :datetime, options)
492
+ end
493
+
494
+ def references(*args)
495
+ options = args.extract_options!
496
+ polymorphic = options.delete(:polymorphic)
497
+ args.each do |col|
498
+ column("#{col}_id", :integer, options)
499
+ column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
500
+ end
501
+ end
502
+ alias :belongs_to :references
503
+
504
+ # Returns a String whose contents are the column definitions
505
+ # concatenated together. This string can then be prepended and appended to
506
+ # to generate the final SQL to create the table.
507
+ def to_sql
508
+ @columns * ', '
509
+ end
510
+
511
+ private
512
+ def native
513
+ @base.native_database_types
514
+ end
515
+ end
516
+
517
+ # Represents a SQL table in an abstract way for updating a table.
518
+ # Also see TableDefinition and SchemaStatements#create_table
519
+ #
520
+ # Available transformations are:
521
+ #
522
+ # change_table :table do |t|
523
+ # t.column
524
+ # t.index
525
+ # t.timestamps
526
+ # t.change
527
+ # t.change_default
528
+ # t.rename
529
+ # t.references
530
+ # t.belongs_to
531
+ # t.string
532
+ # t.text
533
+ # t.integer
534
+ # t.float
535
+ # t.decimal
536
+ # t.datetime
537
+ # t.timestamp
538
+ # t.time
539
+ # t.date
540
+ # t.binary
541
+ # t.boolean
542
+ # t.remove
543
+ # t.remove_references
544
+ # t.remove_belongs_to
545
+ # t.remove_index
546
+ # t.remove_timestamps
547
+ # end
548
+ #
549
+ class Table
550
+ def initialize(table_name, base)
551
+ @table_name = table_name
552
+ @base = base
553
+ end
554
+
555
+ # Adds a new column to the named table.
556
+ # See TableDefinition#column for details of the options you can use.
557
+ # ===== Example
558
+ # ====== Creating a simple column
559
+ # t.column(:name, :string)
560
+ def column(column_name, type, options = {})
561
+ @base.add_column(@table_name, column_name, type, options)
562
+ end
563
+
564
+ # Adds a new index to the table. +column_name+ can be a single Symbol, or
565
+ # an Array of Symbols. See SchemaStatements#add_index
566
+ #
567
+ # ===== Examples
568
+ # ====== Creating a simple index
569
+ # t.index(:name)
570
+ # ====== Creating a unique index
571
+ # t.index([:branch_id, :party_id], :unique => true)
572
+ # ====== Creating a named index
573
+ # t.index([:branch_id, :party_id], :unique => true, :name => 'by_branch_party')
574
+ def index(column_name, options = {})
575
+ @base.add_index(@table_name, column_name, options)
576
+ end
577
+
578
+ # Adds timestamps (created_at and updated_at) columns to the table. See SchemaStatements#add_timestamps
579
+ # ===== Example
580
+ # t.timestamps
581
+ def timestamps
582
+ @base.add_timestamps(@table_name)
583
+ end
584
+
585
+ # Changes the column's definition according to the new options.
586
+ # See TableDefinition#column for details of the options you can use.
587
+ # ===== Examples
588
+ # t.change(:name, :string, :limit => 80)
589
+ # t.change(:description, :text)
590
+ def change(column_name, type, options = {})
591
+ @base.change_column(@table_name, column_name, type, options)
592
+ end
593
+
594
+ # Sets a new default value for a column. See SchemaStatements#change_column_default
595
+ # ===== Examples
596
+ # t.change_default(:qualification, 'new')
597
+ # t.change_default(:authorized, 1)
598
+ def change_default(column_name, default)
599
+ @base.change_column_default(@table_name, column_name, default)
600
+ end
601
+
602
+ # Removes the column(s) from the table definition.
603
+ # ===== Examples
604
+ # t.remove(:qualification)
605
+ # t.remove(:qualification, :experience)
606
+ def remove(*column_names)
607
+ @base.remove_column(@table_name, column_names)
608
+ end
609
+
610
+ # Removes the given index from the table.
611
+ #
612
+ # ===== Examples
613
+ # ====== Remove the suppliers_name_index in the suppliers table
614
+ # t.remove_index :name
615
+ # ====== Remove the index named accounts_branch_id_index in the accounts table
616
+ # t.remove_index :column => :branch_id
617
+ # ====== Remove the index named accounts_branch_id_party_id_index in the accounts table
618
+ # t.remove_index :column => [:branch_id, :party_id]
619
+ # ====== Remove the index named by_branch_party in the accounts table
620
+ # t.remove_index :name => :by_branch_party
621
+ def remove_index(options = {})
622
+ @base.remove_index(@table_name, options)
623
+ end
624
+
625
+ # Removes the timestamp columns (created_at and updated_at) from the table.
626
+ # ===== Example
627
+ # t.remove_timestamps
628
+ def remove_timestamps
629
+ @base.remove_timestamps(@table_name)
630
+ end
631
+
632
+ # Renames a column.
633
+ # ===== Example
634
+ # t.rename(:description, :name)
635
+ def rename(column_name, new_column_name)
636
+ @base.rename_column(@table_name, column_name, new_column_name)
637
+ end
638
+
639
+ # Adds a reference. Optionally adds a +type+ column.
640
+ # <tt>references</tt> and <tt>belongs_to</tt> are acceptable.
641
+ # ===== Examples
642
+ # t.references(:goat)
643
+ # t.references(:goat, :polymorphic => true)
644
+ # t.belongs_to(:goat)
645
+ def references(*args)
646
+ options = args.extract_options!
647
+ polymorphic = options.delete(:polymorphic)
648
+ args.each do |col|
649
+ @base.add_column(@table_name, "#{col}_id", :integer, options)
650
+ @base.add_column(@table_name, "#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil?
651
+ end
652
+ end
653
+ alias :belongs_to :references
654
+
655
+ # Removes a reference. Optionally removes a +type+ column.
656
+ # <tt>remove_references</tt> and <tt>remove_belongs_to</tt> are acceptable.
657
+ # ===== Examples
658
+ # t.remove_references(:goat)
659
+ # t.remove_references(:goat, :polymorphic => true)
660
+ # t.remove_belongs_to(:goat)
661
+ def remove_references(*args)
662
+ options = args.extract_options!
663
+ polymorphic = options.delete(:polymorphic)
664
+ args.each do |col|
665
+ @base.remove_column(@table_name, "#{col}_id")
666
+ @base.remove_column(@table_name, "#{col}_type") unless polymorphic.nil?
667
+ end
668
+ end
669
+ alias :remove_belongs_to :remove_references
670
+
671
+ # Adds a column or columns of a specified type
672
+ # ===== Examples
673
+ # t.string(:goat)
674
+ # t.string(:goat, :sheep)
675
+ %w( string text integer float decimal datetime timestamp time date binary boolean ).each do |column_type|
676
+ class_eval <<-EOV
677
+ def #{column_type}(*args)
678
+ options = args.extract_options!
679
+ column_names = args
680
+
681
+ column_names.each do |name|
682
+ column = ColumnDefinition.new(@base, name, '#{column_type}')
683
+ if options[:limit]
684
+ column.limit = options[:limit]
685
+ elsif native['#{column_type}'.to_sym].is_a?(Hash)
686
+ column.limit = native['#{column_type}'.to_sym][:limit]
687
+ end
688
+ column.precision = options[:precision]
689
+ column.scale = options[:scale]
690
+ column.default = options[:default]
691
+ column.null = options[:null]
692
+ @base.add_column(@table_name, name, column.sql_type, options)
693
+ end
694
+ end
695
+ EOV
696
+ end
697
+
698
+ private
699
+ def native
700
+ @base.native_database_types
701
+ end
702
+ end
703
+
704
+ end
705
+ end