ibm_db 3.0.3-x86-mingw32 → 5.0.3-x86-mingw32

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 (593) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +10 -0
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/ParameterizedQueries README +6 -6
  6. data/README +208 -225
  7. data/ext/Makefile +269 -0
  8. data/ext/Makefile.nt32 +181 -181
  9. data/ext/Makefile.nt32.191 +212 -212
  10. data/ext/extconf.rb +322 -291
  11. data/ext/gil_release_version +3 -0
  12. data/ext/ibm_db-i386-mingw32.def +2 -0
  13. data/ext/ibm_db.c +11879 -11884
  14. data/ext/ibm_db.o +0 -0
  15. data/ext/ibm_db.so +0 -0
  16. data/ext/mkmf.log +110 -0
  17. data/ext/ruby_ibm_db.h +241 -241
  18. data/ext/ruby_ibm_db_cli.c +866 -866
  19. data/ext/ruby_ibm_db_cli.h +500 -500
  20. data/ext/ruby_ibm_db_cli.o +0 -0
  21. data/ext/unicode_support_version +3 -0
  22. data/init.rb +41 -41
  23. data/lib/IBM_DB.rb +27 -27
  24. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3561 -3186
  25. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -2
  26. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  27. data/lib/mswin32/ibm_db.rb +91 -123
  28. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  29. data/test/active_record/connection_adapters/fake_adapter.rb +49 -46
  30. data/test/assets/example.log +1 -1
  31. data/test/assets/test.txt +1 -1
  32. data/test/cases/adapter_test.rb +351 -261
  33. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
  34. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  35. data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
  36. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
  37. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
  38. data/test/cases/adapters/mysql2/connection_test.rb +210 -0
  39. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
  40. data/test/cases/adapters/mysql2/enum_test.rb +26 -0
  41. data/test/cases/adapters/mysql2/explain_test.rb +21 -0
  42. data/test/cases/adapters/mysql2/json_test.rb +195 -0
  43. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
  44. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  45. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
  46. data/test/cases/adapters/mysql2/schema_test.rb +126 -0
  47. data/test/cases/adapters/mysql2/sp_test.rb +36 -0
  48. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  49. data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
  50. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
  51. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
  52. data/test/cases/adapters/postgresql/array_test.rb +339 -0
  53. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
  54. data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
  55. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
  56. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
  57. data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
  58. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  59. data/test/cases/adapters/postgresql/collation_test.rb +53 -0
  60. data/test/cases/adapters/postgresql/composite_test.rb +132 -0
  61. data/test/cases/adapters/postgresql/connection_test.rb +257 -0
  62. data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
  63. data/test/cases/adapters/postgresql/domain_test.rb +47 -0
  64. data/test/cases/adapters/postgresql/enum_test.rb +91 -0
  65. data/test/cases/adapters/postgresql/explain_test.rb +20 -0
  66. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  67. data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
  68. data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
  69. data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
  70. data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
  71. data/test/cases/adapters/postgresql/integer_test.rb +25 -0
  72. data/test/cases/adapters/postgresql/json_test.rb +237 -0
  73. data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
  74. data/test/cases/adapters/postgresql/money_test.rb +96 -0
  75. data/test/cases/adapters/postgresql/network_test.rb +94 -0
  76. data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
  77. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
  78. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  79. data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
  80. data/test/cases/adapters/postgresql/range_test.rb +343 -0
  81. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
  82. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  83. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
  84. data/test/cases/adapters/postgresql/schema_test.rb +597 -0
  85. data/test/cases/adapters/postgresql/serial_test.rb +154 -0
  86. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  87. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
  88. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  89. data/test/cases/adapters/postgresql/utils_test.rb +62 -0
  90. data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
  91. data/test/cases/adapters/postgresql/xml_test.rb +54 -0
  92. data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
  93. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  94. data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
  95. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
  96. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
  97. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  98. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
  99. data/test/cases/aggregations_test.rb +168 -158
  100. data/test/cases/ar_schema_test.rb +146 -161
  101. data/test/cases/associations/association_scope_test.rb +16 -21
  102. data/test/cases/associations/belongs_to_associations_test.rb +1141 -1029
  103. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
  104. data/test/cases/associations/callbacks_test.rb +190 -192
  105. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  106. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  107. data/test/cases/associations/eager_load_nested_include_test.rb +126 -128
  108. data/test/cases/associations/eager_singularization_test.rb +148 -148
  109. data/test/cases/associations/eager_test.rb +1514 -1411
  110. data/test/cases/associations/extension_test.rb +87 -82
  111. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -932
  112. data/test/cases/associations/has_many_associations_test.rb +2501 -2162
  113. data/test/cases/associations/has_many_through_associations_test.rb +1271 -1204
  114. data/test/cases/associations/has_one_associations_test.rb +707 -610
  115. data/test/cases/associations/has_one_through_associations_test.rb +383 -380
  116. data/test/cases/associations/inner_join_association_test.rb +139 -139
  117. data/test/cases/associations/inverse_associations_test.rb +733 -693
  118. data/test/cases/associations/join_model_test.rb +777 -754
  119. data/test/cases/associations/left_outer_join_association_test.rb +88 -0
  120. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  121. data/test/cases/associations/required_test.rb +102 -82
  122. data/test/cases/associations_test.rb +385 -380
  123. data/test/cases/attribute_decorators_test.rb +126 -125
  124. data/test/cases/attribute_methods/read_test.rb +60 -60
  125. data/test/cases/attribute_methods_test.rb +1009 -952
  126. data/test/cases/attribute_set_test.rb +270 -200
  127. data/test/cases/attribute_test.rb +246 -180
  128. data/test/cases/attributes_test.rb +253 -136
  129. data/test/cases/autosave_association_test.rb +1708 -1595
  130. data/test/cases/base_test.rb +1713 -1638
  131. data/test/cases/batches_test.rb +489 -212
  132. data/test/cases/binary_test.rb +44 -52
  133. data/test/cases/bind_parameter_test.rb +110 -100
  134. data/test/cases/cache_key_test.rb +26 -0
  135. data/test/cases/calculations_test.rb +798 -646
  136. data/test/cases/callbacks_test.rb +636 -543
  137. data/test/cases/clone_test.rb +40 -40
  138. data/test/cases/coders/json_test.rb +15 -0
  139. data/test/cases/coders/yaml_column_test.rb +63 -63
  140. data/test/cases/collection_cache_key_test.rb +115 -0
  141. data/test/cases/column_alias_test.rb +17 -17
  142. data/test/cases/column_definition_test.rb +92 -123
  143. data/test/cases/comment_test.rb +145 -0
  144. data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -54
  145. data/test/cases/connection_adapters/connection_handler_test.rb +160 -53
  146. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  147. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -293
  148. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -65
  149. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  150. data/test/cases/connection_adapters/schema_cache_test.rb +61 -56
  151. data/test/cases/connection_adapters/type_lookup_test.rb +118 -110
  152. data/test/cases/connection_management_test.rb +112 -122
  153. data/test/cases/connection_pool_test.rb +521 -346
  154. data/test/cases/connection_specification/resolver_test.rb +131 -116
  155. data/test/cases/core_test.rb +112 -112
  156. data/test/cases/counter_cache_test.rb +214 -209
  157. data/test/cases/custom_locking_test.rb +17 -17
  158. data/test/cases/database_statements_test.rb +34 -19
  159. data/test/cases/{invalid_date_test.rb → date_test.rb} +44 -32
  160. data/test/cases/date_time_precision_test.rb +107 -0
  161. data/test/cases/date_time_test.rb +61 -61
  162. data/test/cases/defaults_test.rb +219 -223
  163. data/test/cases/dirty_test.rb +763 -775
  164. data/test/cases/disconnected_test.rb +30 -28
  165. data/test/cases/dup_test.rb +157 -157
  166. data/test/cases/enum_test.rb +444 -290
  167. data/test/cases/errors_test.rb +16 -0
  168. data/test/cases/explain_subscriber_test.rb +64 -64
  169. data/test/cases/explain_test.rb +87 -76
  170. data/test/cases/finder_respond_to_test.rb +60 -60
  171. data/test/cases/finder_test.rb +1294 -1166
  172. data/test/cases/fixture_set/file_test.rb +156 -138
  173. data/test/cases/fixtures_test.rb +988 -897
  174. data/test/cases/forbidden_attributes_protection_test.rb +165 -99
  175. data/test/cases/habtm_destroy_order_test.rb +61 -61
  176. data/test/cases/helper.rb +204 -210
  177. data/test/cases/hot_compatibility_test.rb +142 -54
  178. data/test/cases/i18n_test.rb +45 -45
  179. data/test/cases/inheritance_test.rb +606 -375
  180. data/test/cases/integration_test.rb +155 -139
  181. data/test/cases/invalid_connection_test.rb +24 -22
  182. data/test/cases/invertible_migration_test.rb +387 -295
  183. data/test/cases/json_serialization_test.rb +311 -302
  184. data/test/cases/locking_test.rb +493 -477
  185. data/test/cases/log_subscriber_test.rb +225 -136
  186. data/test/cases/migration/change_schema_test.rb +458 -472
  187. data/test/cases/migration/change_table_test.rb +256 -224
  188. data/test/cases/migration/column_attributes_test.rb +176 -192
  189. data/test/cases/migration/column_positioning_test.rb +56 -56
  190. data/test/cases/migration/columns_test.rb +310 -304
  191. data/test/cases/migration/command_recorder_test.rb +350 -305
  192. data/test/cases/migration/compatibility_test.rb +118 -0
  193. data/test/cases/migration/create_join_table_test.rb +157 -148
  194. data/test/cases/migration/foreign_key_test.rb +362 -360
  195. data/test/cases/migration/helper.rb +39 -39
  196. data/test/cases/migration/index_test.rb +218 -216
  197. data/test/cases/migration/logger_test.rb +36 -36
  198. data/test/cases/migration/pending_migrations_test.rb +52 -53
  199. data/test/cases/migration/references_foreign_key_test.rb +221 -214
  200. data/test/cases/migration/references_index_test.rb +101 -101
  201. data/test/cases/migration/references_statements_test.rb +136 -116
  202. data/test/cases/migration/rename_table_test.rb +93 -93
  203. data/test/cases/migration_test.rb +1157 -959
  204. data/test/cases/migrator_test.rb +471 -388
  205. data/test/cases/mixin_test.rb +68 -70
  206. data/test/cases/modules_test.rb +172 -173
  207. data/test/cases/multiparameter_attributes_test.rb +372 -350
  208. data/test/cases/multiple_db_test.rb +122 -115
  209. data/test/cases/nested_attributes_test.rb +1098 -1057
  210. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  211. data/test/cases/persistence_test.rb +1001 -909
  212. data/test/cases/pooled_connections_test.rb +81 -81
  213. data/test/cases/primary_keys_test.rb +376 -237
  214. data/test/cases/query_cache_test.rb +446 -326
  215. data/test/cases/quoting_test.rb +202 -156
  216. data/test/cases/readonly_test.rb +119 -118
  217. data/test/cases/reaper_test.rb +85 -85
  218. data/test/cases/reflection_test.rb +509 -454
  219. data/test/cases/relation/delegation_test.rb +63 -68
  220. data/test/cases/relation/merging_test.rb +157 -161
  221. data/test/cases/relation/mutation_test.rb +183 -165
  222. data/test/cases/relation/or_test.rb +92 -0
  223. data/test/cases/relation/predicate_builder_test.rb +16 -14
  224. data/test/cases/relation/record_fetch_warning_test.rb +40 -0
  225. data/test/cases/relation/where_chain_test.rb +105 -181
  226. data/test/cases/relation/where_clause_test.rb +182 -0
  227. data/test/cases/relation/where_test.rb +322 -300
  228. data/test/cases/relation_test.rb +328 -297
  229. data/test/cases/relations_test.rb +2026 -1815
  230. data/test/cases/reload_models_test.rb +22 -22
  231. data/test/cases/result_test.rb +90 -80
  232. data/test/cases/sanitize_test.rb +176 -83
  233. data/test/cases/schema_dumper_test.rb +457 -463
  234. data/test/cases/schema_loading_test.rb +52 -0
  235. data/test/cases/scoping/default_scoping_test.rb +528 -454
  236. data/test/cases/scoping/named_scoping_test.rb +561 -524
  237. data/test/cases/scoping/relation_scoping_test.rb +400 -357
  238. data/test/cases/secure_token_test.rb +32 -0
  239. data/test/cases/serialization_test.rb +104 -104
  240. data/test/cases/serialized_attribute_test.rb +364 -277
  241. data/test/cases/statement_cache_test.rb +136 -98
  242. data/test/cases/store_test.rb +195 -194
  243. data/test/cases/suppressor_test.rb +63 -0
  244. data/test/cases/tasks/database_tasks_test.rb +462 -396
  245. data/test/cases/tasks/mysql_rake_test.rb +345 -311
  246. data/test/cases/tasks/postgresql_rake_test.rb +304 -245
  247. data/test/cases/tasks/sqlite_rake_test.rb +220 -193
  248. data/test/cases/test_case.rb +131 -123
  249. data/test/cases/test_fixtures_test.rb +36 -0
  250. data/test/cases/time_precision_test.rb +103 -0
  251. data/test/cases/timestamp_test.rb +501 -468
  252. data/test/cases/touch_later_test.rb +121 -0
  253. data/test/cases/transaction_callbacks_test.rb +518 -452
  254. data/test/cases/transaction_isolation_test.rb +106 -106
  255. data/test/cases/transactions_test.rb +835 -817
  256. data/test/cases/type/adapter_specific_registry_test.rb +133 -0
  257. data/test/cases/type/date_time_test.rb +14 -0
  258. data/test/cases/type/integer_test.rb +27 -121
  259. data/test/cases/type/string_test.rb +22 -36
  260. data/test/cases/type/type_map_test.rb +177 -177
  261. data/test/cases/type_test.rb +39 -0
  262. data/test/cases/types_test.rb +24 -141
  263. data/test/cases/unconnected_test.rb +33 -33
  264. data/test/cases/validations/absence_validation_test.rb +73 -0
  265. data/test/cases/validations/association_validation_test.rb +97 -86
  266. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  267. data/test/cases/validations/i18n_validation_test.rb +86 -90
  268. data/test/cases/validations/length_validation_test.rb +79 -47
  269. data/test/cases/validations/presence_validation_test.rb +103 -68
  270. data/test/cases/validations/uniqueness_validation_test.rb +548 -434
  271. data/test/cases/validations_repair_helper.rb +19 -23
  272. data/test/cases/validations_test.rb +194 -165
  273. data/test/cases/view_test.rb +216 -113
  274. data/test/cases/yaml_serialization_test.rb +121 -86
  275. data/test/config.example.yml +97 -0
  276. data/test/config.rb +5 -5
  277. data/test/config.yml +154 -154
  278. data/test/connections/native_ibm_db/connection.rb +43 -43
  279. data/test/fixtures/accounts.yml +29 -29
  280. data/test/fixtures/admin/accounts.yml +2 -2
  281. data/test/fixtures/admin/randomly_named_a9.yml +7 -7
  282. data/test/fixtures/admin/randomly_named_b0.yml +7 -7
  283. data/test/fixtures/admin/users.yml +10 -10
  284. data/test/fixtures/author_addresses.yml +17 -17
  285. data/test/fixtures/author_favorites.yml +3 -3
  286. data/test/fixtures/authors.yml +23 -23
  287. data/test/fixtures/bad_posts.yml +9 -0
  288. data/test/fixtures/binaries.yml +133 -133
  289. data/test/fixtures/books.yml +31 -11
  290. data/test/fixtures/bulbs.yml +5 -5
  291. data/test/fixtures/cars.yml +9 -9
  292. data/test/fixtures/categories.yml +19 -19
  293. data/test/fixtures/categories/special_categories.yml +9 -9
  294. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  295. data/test/fixtures/categories_ordered.yml +7 -7
  296. data/test/fixtures/categories_posts.yml +31 -31
  297. data/test/fixtures/categorizations.yml +23 -23
  298. data/test/fixtures/clubs.yml +8 -8
  299. data/test/fixtures/collections.yml +3 -3
  300. data/test/fixtures/colleges.yml +3 -3
  301. data/test/fixtures/comments.yml +65 -65
  302. data/test/fixtures/companies.yml +67 -67
  303. data/test/fixtures/computers.yml +10 -10
  304. data/test/fixtures/content.yml +3 -0
  305. data/test/fixtures/content_positions.yml +3 -0
  306. data/test/fixtures/courses.yml +8 -8
  307. data/test/fixtures/customers.yml +25 -25
  308. data/test/fixtures/dashboards.yml +6 -6
  309. data/test/fixtures/dead_parrots.yml +5 -0
  310. data/test/fixtures/developers.yml +21 -21
  311. data/test/fixtures/developers_projects.yml +16 -16
  312. data/test/fixtures/dog_lovers.yml +7 -7
  313. data/test/fixtures/dogs.yml +4 -4
  314. data/test/fixtures/doubloons.yml +3 -3
  315. data/test/fixtures/edges.yml +5 -5
  316. data/test/fixtures/entrants.yml +14 -14
  317. data/test/fixtures/essays.yml +6 -6
  318. data/test/fixtures/faces.yml +11 -11
  319. data/test/fixtures/fk_test_has_fk.yml +3 -3
  320. data/test/fixtures/fk_test_has_pk.yml +1 -1
  321. data/test/fixtures/friendships.yml +4 -4
  322. data/test/fixtures/funny_jokes.yml +10 -10
  323. data/test/fixtures/interests.yml +33 -33
  324. data/test/fixtures/items.yml +3 -3
  325. data/test/fixtures/jobs.yml +7 -7
  326. data/test/fixtures/legacy_things.yml +3 -3
  327. data/test/fixtures/live_parrots.yml +4 -0
  328. data/test/fixtures/mateys.yml +4 -4
  329. data/test/fixtures/member_details.yml +8 -8
  330. data/test/fixtures/member_types.yml +6 -6
  331. data/test/fixtures/members.yml +11 -11
  332. data/test/fixtures/memberships.yml +34 -34
  333. data/test/fixtures/men.yml +5 -5
  334. data/test/fixtures/minimalistics.yml +2 -2
  335. data/test/fixtures/minivans.yml +5 -5
  336. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  337. data/test/fixtures/mixins.yml +29 -29
  338. data/test/fixtures/movies.yml +7 -7
  339. data/test/fixtures/naked/yml/accounts.yml +1 -1
  340. data/test/fixtures/naked/yml/companies.yml +1 -1
  341. data/test/fixtures/naked/yml/courses.yml +1 -1
  342. data/test/fixtures/naked/yml/parrots.yml +2 -0
  343. data/test/fixtures/naked/yml/trees.yml +3 -0
  344. data/test/fixtures/nodes.yml +29 -0
  345. data/test/fixtures/organizations.yml +5 -5
  346. data/test/fixtures/other_comments.yml +6 -0
  347. data/test/fixtures/other_dogs.yml +2 -0
  348. data/test/fixtures/other_posts.yml +7 -0
  349. data/test/fixtures/other_topics.yml +42 -42
  350. data/test/fixtures/owners.yml +9 -9
  351. data/test/fixtures/parrots.yml +27 -27
  352. data/test/fixtures/parrots_pirates.yml +7 -7
  353. data/test/fixtures/people.yml +24 -24
  354. data/test/fixtures/peoples_treasures.yml +3 -3
  355. data/test/fixtures/pets.yml +19 -19
  356. data/test/fixtures/pirates.yml +12 -12
  357. data/test/fixtures/posts.yml +80 -80
  358. data/test/fixtures/price_estimates.yml +16 -7
  359. data/test/fixtures/products.yml +4 -4
  360. data/test/fixtures/projects.yml +7 -7
  361. data/test/fixtures/randomly_named_a9.yml +7 -7
  362. data/test/fixtures/ratings.yml +14 -14
  363. data/test/fixtures/readers.yml +11 -11
  364. data/test/fixtures/references.yml +17 -17
  365. data/test/fixtures/reserved_words/distinct.yml +5 -5
  366. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  367. data/test/fixtures/reserved_words/group.yml +14 -14
  368. data/test/fixtures/reserved_words/select.yml +8 -8
  369. data/test/fixtures/reserved_words/values.yml +7 -7
  370. data/test/fixtures/ships.yml +6 -6
  371. data/test/fixtures/speedometers.yml +8 -8
  372. data/test/fixtures/sponsors.yml +12 -12
  373. data/test/fixtures/string_key_objects.yml +7 -7
  374. data/test/fixtures/subscribers.yml +10 -10
  375. data/test/fixtures/subscriptions.yml +12 -12
  376. data/test/fixtures/taggings.yml +78 -78
  377. data/test/fixtures/tags.yml +11 -11
  378. data/test/fixtures/tasks.yml +7 -7
  379. data/test/fixtures/teapots.yml +3 -3
  380. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  381. data/test/fixtures/to_be_linked/users.yml +10 -10
  382. data/test/fixtures/topics.yml +49 -49
  383. data/test/fixtures/toys.yml +14 -14
  384. data/test/fixtures/traffic_lights.yml +9 -9
  385. data/test/fixtures/treasures.yml +10 -10
  386. data/test/fixtures/trees.yml +3 -0
  387. data/test/fixtures/uuid_children.yml +3 -3
  388. data/test/fixtures/uuid_parents.yml +2 -2
  389. data/test/fixtures/variants.yml +4 -4
  390. data/test/fixtures/vegetables.yml +19 -19
  391. data/test/fixtures/vertices.yml +3 -3
  392. data/test/fixtures/warehouse_things.yml +2 -2
  393. data/test/fixtures/zines.yml +5 -5
  394. data/test/ibm_db_test.rb +24 -24
  395. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  396. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  397. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  398. data/test/migrations/missing/1000_people_have_middle_names.rb +9 -9
  399. data/test/migrations/missing/1_people_have_last_names.rb +9 -9
  400. data/test/migrations/missing/3_we_need_reminders.rb +12 -12
  401. data/test/migrations/missing/4_innocent_jointable.rb +12 -12
  402. data/test/migrations/rename/1_we_need_things.rb +11 -11
  403. data/test/migrations/rename/2_rename_things.rb +9 -9
  404. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  405. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  406. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  407. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  408. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  409. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  410. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  411. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  412. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  413. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  414. data/test/migrations/valid/2_we_need_reminders.rb +12 -12
  415. data/test/migrations/valid/3_innocent_jointable.rb +12 -12
  416. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  417. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -12
  418. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
  419. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  420. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  421. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  422. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  423. data/test/models/admin.rb +4 -4
  424. data/test/models/admin/account.rb +2 -2
  425. data/test/models/admin/randomly_named_c1.rb +7 -3
  426. data/test/models/admin/user.rb +40 -40
  427. data/test/models/aircraft.rb +5 -4
  428. data/test/models/arunit2_model.rb +3 -3
  429. data/test/models/author.rb +209 -212
  430. data/test/models/auto_id.rb +4 -4
  431. data/test/models/autoloadable/extra_firm.rb +2 -2
  432. data/test/models/binary.rb +1 -1
  433. data/test/models/bird.rb +12 -12
  434. data/test/models/book.rb +23 -18
  435. data/test/models/boolean.rb +2 -2
  436. data/test/models/bulb.rb +52 -51
  437. data/test/models/cake_designer.rb +3 -3
  438. data/test/models/car.rb +29 -26
  439. data/test/models/carrier.rb +2 -2
  440. data/test/models/cat.rb +10 -0
  441. data/test/models/categorization.rb +19 -19
  442. data/test/models/category.rb +35 -35
  443. data/test/models/chef.rb +8 -3
  444. data/test/models/citation.rb +3 -3
  445. data/test/models/club.rb +25 -23
  446. data/test/models/college.rb +10 -10
  447. data/test/models/column.rb +3 -3
  448. data/test/models/column_name.rb +3 -3
  449. data/test/models/comment.rb +76 -64
  450. data/test/models/company.rb +230 -225
  451. data/test/models/company_in_module.rb +98 -98
  452. data/test/models/computer.rb +3 -3
  453. data/test/models/contact.rb +41 -41
  454. data/test/models/content.rb +40 -0
  455. data/test/models/contract.rb +20 -20
  456. data/test/models/country.rb +7 -7
  457. data/test/models/course.rb +6 -6
  458. data/test/models/customer.rb +83 -77
  459. data/test/models/customer_carrier.rb +14 -14
  460. data/test/models/dashboard.rb +3 -3
  461. data/test/models/default.rb +2 -2
  462. data/test/models/department.rb +4 -4
  463. data/test/models/developer.rb +274 -252
  464. data/test/models/dog.rb +5 -5
  465. data/test/models/dog_lover.rb +5 -5
  466. data/test/models/doubloon.rb +12 -12
  467. data/test/models/drink_designer.rb +3 -3
  468. data/test/models/edge.rb +5 -5
  469. data/test/models/electron.rb +5 -5
  470. data/test/models/engine.rb +4 -4
  471. data/test/models/entrant.rb +3 -3
  472. data/test/models/essay.rb +5 -5
  473. data/test/models/event.rb +2 -2
  474. data/test/models/eye.rb +37 -37
  475. data/test/models/face.rb +9 -9
  476. data/test/models/friendship.rb +6 -6
  477. data/test/models/guid.rb +1 -1
  478. data/test/models/guitar.rb +4 -0
  479. data/test/models/hotel.rb +11 -6
  480. data/test/models/image.rb +3 -3
  481. data/test/models/interest.rb +5 -5
  482. data/test/models/invoice.rb +4 -4
  483. data/test/models/item.rb +7 -7
  484. data/test/models/job.rb +7 -7
  485. data/test/models/joke.rb +7 -7
  486. data/test/models/keyboard.rb +3 -3
  487. data/test/models/legacy_thing.rb +3 -3
  488. data/test/models/lesson.rb +11 -11
  489. data/test/models/line_item.rb +3 -3
  490. data/test/models/liquid.rb +4 -4
  491. data/test/models/man.rb +11 -11
  492. data/test/models/matey.rb +4 -4
  493. data/test/models/member.rb +42 -41
  494. data/test/models/member_detail.rb +8 -7
  495. data/test/models/member_type.rb +3 -3
  496. data/test/models/membership.rb +35 -35
  497. data/test/models/mentor.rb +3 -0
  498. data/test/models/minimalistic.rb +2 -2
  499. data/test/models/minivan.rb +9 -9
  500. data/test/models/mixed_case_monkey.rb +3 -3
  501. data/test/models/mocktail_designer.rb +2 -0
  502. data/test/models/molecule.rb +6 -6
  503. data/test/models/movie.rb +5 -5
  504. data/test/models/node.rb +5 -0
  505. data/test/models/non_primary_key.rb +2 -0
  506. data/test/models/notification.rb +3 -0
  507. data/test/models/order.rb +4 -4
  508. data/test/models/organization.rb +14 -14
  509. data/test/models/other_dog.rb +5 -0
  510. data/test/models/owner.rb +37 -34
  511. data/test/models/parrot.rb +28 -29
  512. data/test/models/person.rb +142 -143
  513. data/test/models/personal_legacy_thing.rb +4 -4
  514. data/test/models/pet.rb +18 -15
  515. data/test/models/pet_treasure.rb +6 -0
  516. data/test/models/pirate.rb +92 -92
  517. data/test/models/possession.rb +3 -3
  518. data/test/models/post.rb +273 -264
  519. data/test/models/price_estimate.rb +4 -4
  520. data/test/models/professor.rb +5 -5
  521. data/test/models/project.rb +40 -29
  522. data/test/models/publisher.rb +2 -2
  523. data/test/models/publisher/article.rb +4 -4
  524. data/test/models/publisher/magazine.rb +3 -3
  525. data/test/models/randomly_named_c1.rb +3 -3
  526. data/test/models/rating.rb +4 -4
  527. data/test/models/reader.rb +23 -23
  528. data/test/models/recipe.rb +3 -0
  529. data/test/models/record.rb +2 -2
  530. data/test/models/reference.rb +22 -22
  531. data/test/models/reply.rb +61 -61
  532. data/test/models/ship.rb +39 -33
  533. data/test/models/ship_part.rb +7 -7
  534. data/test/models/shop.rb +17 -17
  535. data/test/models/shop_account.rb +6 -6
  536. data/test/models/speedometer.rb +6 -6
  537. data/test/models/sponsor.rb +7 -7
  538. data/test/models/string_key_object.rb +3 -3
  539. data/test/models/student.rb +4 -4
  540. data/test/models/subject.rb +16 -16
  541. data/test/models/subscriber.rb +8 -8
  542. data/test/models/subscription.rb +4 -4
  543. data/test/models/tag.rb +13 -7
  544. data/test/models/tagging.rb +13 -13
  545. data/test/models/task.rb +5 -5
  546. data/test/models/topic.rb +118 -124
  547. data/test/models/toy.rb +6 -6
  548. data/test/models/traffic_light.rb +4 -4
  549. data/test/models/treasure.rb +14 -14
  550. data/test/models/treaty.rb +7 -7
  551. data/test/models/tree.rb +3 -0
  552. data/test/models/tuning_peg.rb +4 -0
  553. data/test/models/tyre.rb +11 -11
  554. data/test/models/user.rb +14 -0
  555. data/test/models/uuid_child.rb +3 -3
  556. data/test/models/uuid_item.rb +6 -0
  557. data/test/models/uuid_parent.rb +3 -3
  558. data/test/models/vegetables.rb +24 -24
  559. data/test/models/vehicle.rb +6 -6
  560. data/test/models/vertex.rb +9 -9
  561. data/test/models/warehouse_thing.rb +5 -5
  562. data/test/models/wheel.rb +3 -3
  563. data/test/models/without_table.rb +3 -3
  564. data/test/models/zine.rb +3 -3
  565. data/test/schema/mysql2_specific_schema.rb +68 -58
  566. data/test/schema/oracle_specific_schema.rb +40 -43
  567. data/test/schema/postgresql_specific_schema.rb +114 -202
  568. data/test/schema/schema.rb +1057 -938
  569. data/test/schema/schema.rb.original +1057 -0
  570. data/test/schema/sqlite_specific_schema.rb +18 -22
  571. data/test/support/config.rb +43 -43
  572. data/test/support/connection.rb +23 -22
  573. data/test/support/connection_helper.rb +14 -14
  574. data/test/support/ddl_helper.rb +8 -8
  575. data/test/support/schema_dumping_helper.rb +20 -20
  576. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  577. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  578. metadata +146 -30
  579. data/lib/mswin32/rb19x/ibm_db.so +0 -0
  580. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  581. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  582. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  583. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
  584. data/test/cases/attribute_methods/serialization_test.rb +0 -29
  585. data/test/cases/migration/change_schema_test - Copy.rb +0 -448
  586. data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
  587. data/test/cases/migration/table_and_index_test.rb +0 -24
  588. data/test/cases/relation/where_test2.rb +0 -36
  589. data/test/cases/type/decimal_test.rb +0 -51
  590. data/test/cases/type/unsigned_integer_test.rb +0 -18
  591. data/test/cases/xml_serialization_test.rb +0 -457
  592. data/test/fixtures/naked/csv/accounts.csv +0 -1
  593. data/test/schema/mysql_specific_schema.rb +0 -70
@@ -1,12 +1,12 @@
1
- class ValidWithTimestampsWeNeedReminders < ActiveRecord::Migration
2
- def self.up
3
- create_table("reminders") do |t|
4
- t.column :content, :text
5
- t.column :remind_at, :datetime
6
- end
7
- end
8
-
9
- def self.down
10
- drop_table "reminders"
11
- end
12
- end
1
+ class ValidWithTimestampsWeNeedReminders < ActiveRecord::Migration::Current
2
+ def self.up
3
+ create_table("reminders") do |t|
4
+ t.column :content, :text
5
+ t.column :remind_at, :datetime
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table "reminders"
11
+ end
12
+ end
@@ -1,12 +1,12 @@
1
- class ValidWithTimestampsInnocentJointable < ActiveRecord::Migration
2
- def self.up
3
- create_table("people_reminders", :id => false) do |t|
4
- t.column :reminder_id, :integer
5
- t.column :person_id, :integer
6
- end
7
- end
8
-
9
- def self.down
10
- drop_table "people_reminders"
11
- end
12
- end
1
+ class ValidWithTimestampsInnocentJointable < ActiveRecord::Migration::Current
2
+ def self.up
3
+ create_table("people_reminders", :id => false) do |t|
4
+ t.column :reminder_id, :integer
5
+ t.column :person_id, :integer
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table "people_reminders"
11
+ end
12
+ end
@@ -1,8 +1,8 @@
1
- class MigrationVersionCheck < ActiveRecord::Migration
2
- def self.up
3
- raise "incorrect migration version" unless version == 20131219224947
4
- end
5
-
6
- def self.down
7
- end
8
- end
1
+ class MigrationVersionCheck < ActiveRecord::Migration::Current
2
+ def self.up
3
+ raise "incorrect migration version" unless version == 20131219224947
4
+ end
5
+
6
+ def self.down
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
- module Admin
2
- def self.table_name_prefix
3
- 'admin_'
4
- end
1
+ module Admin
2
+ def self.table_name_prefix
3
+ 'admin_'
4
+ end
5
5
  end
@@ -1,3 +1,3 @@
1
- class Admin::Account < ActiveRecord::Base
2
- has_many :users
1
+ class Admin::Account < ActiveRecord::Base
2
+ has_many :users
3
3
  end
@@ -1,3 +1,7 @@
1
- class Admin::ClassNameThatDoesNotFollowCONVENTIONS < ActiveRecord::Base
2
- self.table_name = :randomly_named_table
3
- end
1
+ class Admin::ClassNameThatDoesNotFollowCONVENTIONS1 < ActiveRecord::Base
2
+ self.table_name = :randomly_named_table2
3
+ end
4
+
5
+ class Admin::ClassNameThatDoesNotFollowCONVENTIONS2 < ActiveRecord::Base
6
+ self.table_name = :randomly_named_table3
7
+ end
@@ -1,40 +1,40 @@
1
- class Admin::User < ActiveRecord::Base
2
- class Coder
3
- def initialize(default = {})
4
- @default = default
5
- end
6
-
7
- def dump(o)
8
- ActiveSupport::JSON.encode(o || @default)
9
- end
10
-
11
- def load(s)
12
- s.present? ? ActiveSupport::JSON.decode(s) : @default.clone
13
- end
14
- end
15
-
16
- belongs_to :account
17
- store :params, accessors: [ :token ], coder: YAML
18
- store :settings, :accessors => [ :color, :homepage ]
19
- store_accessor :settings, :favorite_food
20
- store :preferences, :accessors => [ :remember_login ]
21
- store :json_data, :accessors => [ :height, :weight ], :coder => Coder.new
22
- store :json_data_empty, :accessors => [ :is_a_good_guy ], :coder => Coder.new
23
-
24
- def phone_number
25
- read_store_attribute(:settings, :phone_number).gsub(/(\d{3})(\d{3})(\d{4})/,'(\1) \2-\3')
26
- end
27
-
28
- def phone_number=(value)
29
- write_store_attribute(:settings, :phone_number, value && value.gsub(/[^\d]/,''))
30
- end
31
-
32
- def color
33
- super || 'red'
34
- end
35
-
36
- def color=(value)
37
- value = 'blue' unless %w(black red green blue).include?(value)
38
- super
39
- end
40
- end
1
+ class Admin::User < ActiveRecord::Base
2
+ class Coder
3
+ def initialize(default = {})
4
+ @default = default
5
+ end
6
+
7
+ def dump(o)
8
+ ActiveSupport::JSON.encode(o || @default)
9
+ end
10
+
11
+ def load(s)
12
+ s.present? ? ActiveSupport::JSON.decode(s) : @default.clone
13
+ end
14
+ end
15
+
16
+ belongs_to :account
17
+ store :params, accessors: [ :token ], coder: YAML
18
+ store :settings, :accessors => [ :color, :homepage ]
19
+ store_accessor :settings, :favorite_food
20
+ store :preferences, :accessors => [ :remember_login ]
21
+ store :json_data, :accessors => [ :height, :weight ], :coder => Coder.new
22
+ store :json_data_empty, :accessors => [ :is_a_good_guy ], :coder => Coder.new
23
+
24
+ def phone_number
25
+ read_store_attribute(:settings, :phone_number).gsub(/(\d{3})(\d{3})(\d{4})/,'(\1) \2-\3')
26
+ end
27
+
28
+ def phone_number=(value)
29
+ write_store_attribute(:settings, :phone_number, value && value.gsub(/[^\d]/,''))
30
+ end
31
+
32
+ def color
33
+ super || 'red'
34
+ end
35
+
36
+ def color=(value)
37
+ value = 'blue' unless %w(black red green blue).include?(value)
38
+ super
39
+ end
40
+ end
@@ -1,4 +1,5 @@
1
- class Aircraft < ActiveRecord::Base
2
- self.pluralize_table_names = false
3
- has_many :engines, :foreign_key => "car_id"
4
- end
1
+ class Aircraft < ActiveRecord::Base
2
+ self.pluralize_table_names = false
3
+ has_many :engines, :foreign_key => "car_id"
4
+ has_many :wheels, as: :wheelable
5
+ end
@@ -1,3 +1,3 @@
1
- class ARUnit2Model < ActiveRecord::Base
2
- self.abstract_class = true
3
- end
1
+ class ARUnit2Model < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -1,212 +1,209 @@
1
- class Author < ActiveRecord::Base
2
- has_many :posts
3
- has_many :serialized_posts
4
- has_one :post
5
- has_many :very_special_comments, :through => :posts
6
- has_many :posts_with_comments, -> { includes(:comments) }, :class_name => "Post"
7
- has_many :popular_grouped_posts, -> { includes(:comments).group("type").having("SUM(comments_count) > 1").select("type") }, :class_name => "Post"
8
- has_many :posts_with_comments_sorted_by_comment_id, -> { includes(:comments).order('comments.id') }, :class_name => "Post"
9
- has_many :posts_sorted_by_id_limited, -> { order('posts.id').limit(1) }, :class_name => "Post"
10
- has_many :posts_with_categories, -> { includes(:categories) }, :class_name => "Post"
11
- has_many :posts_with_comments_and_categories, -> { includes(:comments, :categories).order("posts.id") }, :class_name => "Post"
12
- has_many :posts_with_special_categorizations, :class_name => 'PostWithSpecialCategorization'
13
- has_one :post_about_thinking, -> { where("posts.title like '%thinking%'") }, :class_name => 'Post'
14
- has_one :post_about_thinking_with_last_comment, -> { where("posts.title like '%thinking%'").includes(:last_comment) }, :class_name => 'Post'
15
- has_many :comments, through: :posts do
16
- def ratings
17
- Rating.joins(:comment).merge(self)
18
- end
19
- end
20
- has_many :comments_containing_the_letter_e, :through => :posts, :source => :comments
21
- has_many :comments_with_order_and_conditions, -> { order('comments.body').where("comments.body like 'Thank%'") }, :through => :posts, :source => :comments
22
- has_many :comments_with_include, -> { includes(:post) }, :through => :posts, :source => :comments
23
-
24
- has_many :first_posts
25
- has_many :comments_on_first_posts, -> { order('posts.id desc, comments.id asc') }, :through => :first_posts, :source => :comments
26
-
27
- has_one :first_post
28
- has_one :comment_on_first_post, -> { order('posts.id desc, comments.id asc') }, :through => :first_post, :source => :comments
29
-
30
- has_many :thinking_posts, -> { where(:title => 'So I was thinking') }, :dependent => :delete_all, :class_name => 'Post'
31
- has_many :welcome_posts, -> { where(:title => 'Welcome to the weblog') }, :class_name => 'Post'
32
-
33
- has_many :welcome_posts_with_one_comment,
34
- -> { where(title: 'Welcome to the weblog').where('comments_count = ?', 1) },
35
- class_name: 'Post'
36
- has_many :welcome_posts_with_comments,
37
- -> { where(title: 'Welcome to the weblog').where(Post.arel_table[:comments_count].gt(0)) },
38
- class_name: 'Post'
39
-
40
- has_many :comments_desc, -> { order('comments.id DESC') }, :through => :posts, :source => :comments
41
- has_many :funky_comments, :through => :posts, :source => :comments
42
- has_many :ordered_uniq_comments, -> { distinct.order('comments.id') }, :through => :posts, :source => :comments
43
- has_many :ordered_uniq_comments_desc, -> { distinct.order('comments.id DESC') }, :through => :posts, :source => :comments
44
- has_many :readonly_comments, -> { readonly }, :through => :posts, :source => :comments
45
-
46
- has_many :special_posts
47
- has_many :special_post_comments, :through => :special_posts, :source => :comments
48
- has_many :special_posts_with_default_scope, :class_name => 'SpecialPostWithDefaultScope'
49
-
50
- has_many :sti_posts, :class_name => 'StiPost'
51
- has_many :sti_post_comments, :through => :sti_posts, :source => :comments
52
-
53
- has_many :special_nonexistant_posts, -> { where("posts.body = 'nonexistant'") }, :class_name => "SpecialPost"
54
- has_many :special_nonexistant_post_comments, -> { where('comments.post_id' => 0) }, :through => :special_nonexistant_posts, :source => :comments
55
- has_many :nonexistant_comments, :through => :posts
56
-
57
- has_many :hello_posts, -> { where "posts.body = 'hello'" }, :class_name => "Post"
58
- has_many :hello_post_comments, :through => :hello_posts, :source => :comments
59
- has_many :posts_with_no_comments, -> { where('comments.id' => nil).includes(:comments) }, :class_name => 'Post'
60
-
61
- has_many :hello_posts_with_hash_conditions, -> { where(:body => 'hello') }, :class_name => "Post"
62
- has_many :hello_post_comments_with_hash_conditions, :through =>
63
- :hello_posts_with_hash_conditions, :source => :comments
64
-
65
- has_many :other_posts, :class_name => "Post"
66
- has_many :posts_with_callbacks, :class_name => "Post", :before_add => :log_before_adding,
67
- :after_add => :log_after_adding,
68
- :before_remove => :log_before_removing,
69
- :after_remove => :log_after_removing
70
- has_many :posts_with_proc_callbacks, :class_name => "Post",
71
- :before_add => Proc.new {|o, r| o.post_log << "before_adding#{r.id || '<new>'}"},
72
- :after_add => Proc.new {|o, r| o.post_log << "after_adding#{r.id || '<new>'}"},
73
- :before_remove => Proc.new {|o, r| o.post_log << "before_removing#{r.id}"},
74
- :after_remove => Proc.new {|o, r| o.post_log << "after_removing#{r.id}"}
75
- has_many :posts_with_multiple_callbacks, :class_name => "Post",
76
- :before_add => [:log_before_adding, Proc.new {|o, r| o.post_log << "before_adding_proc#{r.id || '<new>'}"}],
77
- :after_add => [:log_after_adding, Proc.new {|o, r| o.post_log << "after_adding_proc#{r.id || '<new>'}"}]
78
- has_many :unchangable_posts, :class_name => "Post", :before_add => :raise_exception, :after_add => :log_after_adding
79
-
80
- has_many :categorizations
81
- has_many :categories, :through => :categorizations
82
- has_many :named_categories, :through => :categorizations
83
-
84
- has_many :special_categorizations
85
- has_many :special_categories, :through => :special_categorizations, :source => :category
86
- has_one :special_category, :through => :special_categorizations, :source => :category
87
-
88
- has_many :categories_like_general, -> { where(:name => 'General') }, :through => :categorizations, :source => :category, :class_name => 'Category'
89
-
90
- has_many :categorized_posts, :through => :categorizations, :source => :post
91
- has_many :unique_categorized_posts, -> { distinct }, :through => :categorizations, :source => :post
92
-
93
- has_many :nothings, :through => :kateggorisatons, :class_name => 'Category'
94
-
95
- has_many :author_favorites
96
- has_many :favorite_authors, -> { order('name') }, :through => :author_favorites
97
-
98
- has_many :taggings, :through => :posts, :source => :taggings
99
- has_many :taggings_2, :through => :posts, :source => :tagging
100
- has_many :tags, :through => :posts
101
- has_many :post_categories, :through => :posts, :source => :categories
102
- has_many :tagging_tags, :through => :taggings, :source => :tag
103
-
104
- has_many :similar_posts, -> { distinct }, :through => :tags, :source => :tagged_posts
105
- has_many :distinct_tags, -> { select("DISTINCT tags.*").order("tags.name") }, :through => :posts, :source => :tags
106
-
107
- has_many :tags_with_primary_key, :through => :posts
108
-
109
- has_many :books
110
- has_many :subscriptions, :through => :books
111
- has_many :subscribers, -> { order("subscribers.nick") }, :through => :subscriptions
112
- has_many :distinct_subscribers, -> { select("DISTINCT subscribers.*").order("subscribers.nick") }, :through => :subscriptions, :source => :subscriber
113
-
114
- has_one :essay, :primary_key => :name, :as => :writer
115
- has_one :essay_category, :through => :essay, :source => :category
116
- has_one :essay_owner, :through => :essay, :source => :owner
117
-
118
- has_one :essay_2, :primary_key => :name, :class_name => 'Essay', :foreign_key => :author_id
119
- has_one :essay_category_2, :through => :essay_2, :source => :category
120
-
121
- has_many :essays, :primary_key => :name, :as => :writer
122
- has_many :essay_categories, :through => :essays, :source => :category
123
- has_many :essay_owners, :through => :essays, :source => :owner
124
-
125
- has_many :essays_2, :primary_key => :name, :class_name => 'Essay', :foreign_key => :author_id
126
- has_many :essay_categories_2, :through => :essays_2, :source => :category
127
-
128
- belongs_to :owned_essay, :primary_key => :name, :class_name => 'Essay'
129
- has_one :owned_essay_category, :through => :owned_essay, :source => :category
130
-
131
- belongs_to :author_address, :dependent => :destroy
132
- belongs_to :author_address_extra, :dependent => :delete, :class_name => "AuthorAddress"
133
-
134
- has_many :category_post_comments, :through => :categories, :source => :post_comments
135
-
136
- has_many :misc_posts, -> { where(:posts => { :title => ['misc post by bob', 'misc post by mary'] }) }, :class_name => 'Post'
137
- has_many :misc_post_first_blue_tags, :through => :misc_posts, :source => :first_blue_tags
138
-
139
- has_many :misc_post_first_blue_tags_2, -> { where(:posts => { :title => ['misc post by bob', 'misc post by mary'] }) },
140
- :through => :posts, :source => :first_blue_tags_2
141
-
142
- has_many :posts_with_default_include, :class_name => 'PostWithDefaultInclude'
143
- has_many :comments_on_posts_with_default_include, :through => :posts_with_default_include, :source => :comments
144
-
145
- has_many :posts_with_signature, ->(record) { where("posts.title LIKE ?", "%by #{record.name.downcase}%") }, class_name: "Post"
146
-
147
- has_many :posts_with_extension, -> { order(:title) }, class_name: "Post" do
148
- def extension_method; end
149
- end
150
-
151
- has_many :posts_with_extension_and_instance, ->(record) { order(:title) }, class_name: "Post" do
152
- def extension_method; end
153
- end
154
-
155
- scope :relation_include_posts, -> { includes(:posts) }
156
- scope :relation_include_tags, -> { includes(:tags) }
157
-
158
- attr_accessor :post_log
159
- after_initialize :set_post_log
160
-
161
- def set_post_log
162
- @post_log = []
163
- end
164
-
165
- def label
166
- "#{id}-#{name}"
167
- end
168
-
169
- def social
170
- %w(twitter github)
171
- end
172
-
173
- validates_presence_of :name
174
-
175
- private
176
- def log_before_adding(object)
177
- @post_log << "before_adding#{object.id || '<new>'}"
178
- end
179
-
180
- def log_after_adding(object)
181
- @post_log << "after_adding#{object.id}"
182
- end
183
-
184
- def log_before_removing(object)
185
- @post_log << "before_removing#{object.id}"
186
- end
187
-
188
- def log_after_removing(object)
189
- @post_log << "after_removing#{object.id}"
190
- end
191
-
192
- def raise_exception(object)
193
- raise Exception.new("You can't add a post")
194
- end
195
- end
196
-
197
- class AuthorAddress < ActiveRecord::Base
198
- has_one :author
199
-
200
- def self.destroyed_author_address_ids
201
- @destroyed_author_address_ids ||= []
202
- end
203
-
204
- before_destroy do |author_address|
205
- AuthorAddress.destroyed_author_address_ids << author_address.id
206
- end
207
- end
208
-
209
- class AuthorFavorite < ActiveRecord::Base
210
- belongs_to :author
211
- belongs_to :favorite_author, :class_name => "Author"
212
- end
1
+ class Author < ActiveRecord::Base
2
+ has_many :posts
3
+ has_many :serialized_posts
4
+ has_one :post
5
+ has_many :very_special_comments, :through => :posts
6
+ has_many :posts_with_comments, -> { includes(:comments) }, :class_name => "Post"
7
+ has_many :popular_grouped_posts, -> { includes(:comments).group("type").having("SUM(comments_count) > 1").select("type") }, :class_name => "Post"
8
+ has_many :posts_with_comments_sorted_by_comment_id, -> { includes(:comments).order('comments.id') }, :class_name => "Post"
9
+ has_many :posts_sorted_by_id_limited, -> { order('posts.id').limit(1) }, :class_name => "Post"
10
+ has_many :posts_with_categories, -> { includes(:categories) }, :class_name => "Post"
11
+ has_many :posts_with_comments_and_categories, -> { includes(:comments, :categories).order("posts.id") }, :class_name => "Post"
12
+ has_many :posts_with_special_categorizations, :class_name => 'PostWithSpecialCategorization'
13
+ has_one :post_about_thinking, -> { where("posts.title like '%thinking%'") }, :class_name => 'Post'
14
+ has_one :post_about_thinking_with_last_comment, -> { where("posts.title like '%thinking%'").includes(:last_comment) }, :class_name => 'Post'
15
+ has_many :comments, through: :posts do
16
+ def ratings
17
+ Rating.joins(:comment).merge(self)
18
+ end
19
+ end
20
+ has_many :comments_containing_the_letter_e, :through => :posts, :source => :comments
21
+ has_many :comments_with_order_and_conditions, -> { order('comments.body').where("comments.body like 'Thank%'") }, :through => :posts, :source => :comments
22
+ has_many :comments_with_include, -> { includes(:post) }, :through => :posts, :source => :comments
23
+
24
+ has_many :first_posts
25
+ has_many :comments_on_first_posts, -> { order('posts.id desc, comments.id asc') }, :through => :first_posts, :source => :comments
26
+
27
+ has_one :first_post
28
+ has_one :comment_on_first_post, -> { order('posts.id desc, comments.id asc') }, :through => :first_post, :source => :comments
29
+
30
+ has_many :thinking_posts, -> { where(:title => 'So I was thinking') }, :dependent => :delete_all, :class_name => 'Post'
31
+ has_many :welcome_posts, -> { where(:title => 'Welcome to the weblog') }, :class_name => 'Post'
32
+
33
+ has_many :welcome_posts_with_one_comment,
34
+ -> { where(title: 'Welcome to the weblog').where('comments_count = ?', 1) },
35
+ class_name: 'Post'
36
+ has_many :welcome_posts_with_comments,
37
+ -> { where(title: 'Welcome to the weblog').where(Post.arel_table[:comments_count].gt(0)) },
38
+ class_name: 'Post'
39
+
40
+ has_many :comments_desc, -> { order('comments.id DESC') }, :through => :posts, :source => :comments
41
+ has_many :funky_comments, :through => :posts, :source => :comments
42
+ has_many :ordered_uniq_comments, -> { distinct.order('comments.id') }, :through => :posts, :source => :comments
43
+ has_many :ordered_uniq_comments_desc, -> { distinct.order('comments.id DESC') }, :through => :posts, :source => :comments
44
+ has_many :readonly_comments, -> { readonly }, :through => :posts, :source => :comments
45
+
46
+ has_many :special_posts
47
+ has_many :special_post_comments, :through => :special_posts, :source => :comments
48
+ has_many :special_posts_with_default_scope, :class_name => 'SpecialPostWithDefaultScope'
49
+
50
+ has_many :sti_posts, :class_name => 'StiPost'
51
+ has_many :sti_post_comments, :through => :sti_posts, :source => :comments
52
+
53
+ has_many :special_nonexistent_posts, -> { where("posts.body = 'nonexistent'") }, :class_name => "SpecialPost"
54
+ has_many :special_nonexistent_post_comments, -> { where('comments.post_id' => 0) }, :through => :special_nonexistent_posts, :source => :comments
55
+ has_many :nonexistent_comments, :through => :posts
56
+
57
+ has_many :hello_posts, -> { where "posts.body = 'hello'" }, :class_name => "Post"
58
+ has_many :hello_post_comments, :through => :hello_posts, :source => :comments
59
+ has_many :posts_with_no_comments, -> { where('comments.id' => nil).includes(:comments) }, :class_name => 'Post'
60
+
61
+ has_many :hello_posts_with_hash_conditions, -> { where(:body => 'hello') }, :class_name => "Post"
62
+ has_many :hello_post_comments_with_hash_conditions, :through =>
63
+ :hello_posts_with_hash_conditions, :source => :comments
64
+
65
+ has_many :other_posts, :class_name => "Post"
66
+ has_many :posts_with_callbacks, :class_name => "Post", :before_add => :log_before_adding,
67
+ :after_add => :log_after_adding,
68
+ :before_remove => :log_before_removing,
69
+ :after_remove => :log_after_removing
70
+ has_many :posts_with_proc_callbacks, :class_name => "Post",
71
+ :before_add => Proc.new {|o, r| o.post_log << "before_adding#{r.id || '<new>'}"},
72
+ :after_add => Proc.new {|o, r| o.post_log << "after_adding#{r.id || '<new>'}"},
73
+ :before_remove => Proc.new {|o, r| o.post_log << "before_removing#{r.id}"},
74
+ :after_remove => Proc.new {|o, r| o.post_log << "after_removing#{r.id}"}
75
+ has_many :posts_with_multiple_callbacks, :class_name => "Post",
76
+ :before_add => [:log_before_adding, Proc.new {|o, r| o.post_log << "before_adding_proc#{r.id || '<new>'}"}],
77
+ :after_add => [:log_after_adding, Proc.new {|o, r| o.post_log << "after_adding_proc#{r.id || '<new>'}"}]
78
+ has_many :unchangeable_posts, :class_name => "Post", :before_add => :raise_exception, :after_add => :log_after_adding
79
+
80
+ has_many :categorizations
81
+ has_many :categories, :through => :categorizations
82
+ has_many :named_categories, :through => :categorizations
83
+
84
+ has_many :special_categorizations
85
+ has_many :special_categories, :through => :special_categorizations, :source => :category
86
+ has_one :special_category, :through => :special_categorizations, :source => :category
87
+
88
+ has_many :categories_like_general, -> { where(:name => 'General') }, :through => :categorizations, :source => :category, :class_name => 'Category'
89
+
90
+ has_many :categorized_posts, :through => :categorizations, :source => :post
91
+ has_many :unique_categorized_posts, -> { distinct }, :through => :categorizations, :source => :post
92
+
93
+ has_many :nothings, :through => :kateggorisatons, :class_name => 'Category'
94
+
95
+ has_many :author_favorites
96
+ has_many :favorite_authors, -> { order('name') }, :through => :author_favorites
97
+
98
+ has_many :taggings, :through => :posts, :source => :taggings
99
+ has_many :taggings_2, :through => :posts, :source => :tagging
100
+ has_many :tags, :through => :posts
101
+ has_many :post_categories, :through => :posts, :source => :categories
102
+ has_many :tagging_tags, :through => :taggings, :source => :tag
103
+
104
+ has_many :similar_posts, -> { distinct }, :through => :tags, :source => :tagged_posts
105
+ has_many :distinct_tags, -> { select("DISTINCT tags.*").order("tags.name") }, :through => :posts, :source => :tags
106
+
107
+ has_many :tags_with_primary_key, :through => :posts
108
+
109
+ has_many :books
110
+ has_many :subscriptions, :through => :books
111
+ has_many :subscribers, -> { order("subscribers.nick") }, :through => :subscriptions
112
+ has_many :distinct_subscribers, -> { select("DISTINCT subscribers.*").order("subscribers.nick") }, :through => :subscriptions, :source => :subscriber
113
+
114
+ has_one :essay, :primary_key => :name, :as => :writer
115
+ has_one :essay_category, :through => :essay, :source => :category
116
+ has_one :essay_owner, :through => :essay, :source => :owner
117
+
118
+ has_one :essay_2, :primary_key => :name, :class_name => 'Essay', :foreign_key => :author_id
119
+ has_one :essay_category_2, :through => :essay_2, :source => :category
120
+
121
+ has_many :essays, :primary_key => :name, :as => :writer
122
+ has_many :essay_categories, :through => :essays, :source => :category
123
+ has_many :essay_owners, :through => :essays, :source => :owner
124
+
125
+ has_many :essays_2, :primary_key => :name, :class_name => 'Essay', :foreign_key => :author_id
126
+ has_many :essay_categories_2, :through => :essays_2, :source => :category
127
+
128
+ belongs_to :owned_essay, :primary_key => :name, :class_name => 'Essay'
129
+ has_one :owned_essay_category, :through => :owned_essay, :source => :category
130
+
131
+ belongs_to :author_address, :dependent => :destroy
132
+ belongs_to :author_address_extra, :dependent => :delete, :class_name => "AuthorAddress"
133
+
134
+ has_many :category_post_comments, :through => :categories, :source => :post_comments
135
+
136
+ has_many :misc_posts, -> { where(:posts => { :title => ['misc post by bob', 'misc post by mary'] }) }, :class_name => 'Post'
137
+ has_many :misc_post_first_blue_tags, :through => :misc_posts, :source => :first_blue_tags
138
+
139
+ has_many :misc_post_first_blue_tags_2, -> { where(:posts => { :title => ['misc post by bob', 'misc post by mary'] }) },
140
+ :through => :posts, :source => :first_blue_tags_2
141
+
142
+ has_many :posts_with_default_include, :class_name => 'PostWithDefaultInclude'
143
+ has_many :comments_on_posts_with_default_include, :through => :posts_with_default_include, :source => :comments
144
+
145
+ has_many :posts_with_signature, ->(record) { where("posts.title LIKE ?", "%by #{record.name.downcase}%") }, class_name: "Post"
146
+
147
+ has_many :posts_with_extension, -> { order(:title) }, class_name: "Post" do
148
+ def extension_method; end
149
+ end
150
+
151
+ has_many :posts_with_extension_and_instance, ->(record) { order(:title) }, class_name: "Post" do
152
+ def extension_method; end
153
+ end
154
+
155
+ attr_accessor :post_log
156
+ after_initialize :set_post_log
157
+
158
+ def set_post_log
159
+ @post_log = []
160
+ end
161
+
162
+ def label
163
+ "#{id}-#{name}"
164
+ end
165
+
166
+ def social
167
+ %w(twitter github)
168
+ end
169
+
170
+ validates_presence_of :name
171
+
172
+ private
173
+ def log_before_adding(object)
174
+ @post_log << "before_adding#{object.id || '<new>'}"
175
+ end
176
+
177
+ def log_after_adding(object)
178
+ @post_log << "after_adding#{object.id}"
179
+ end
180
+
181
+ def log_before_removing(object)
182
+ @post_log << "before_removing#{object.id}"
183
+ end
184
+
185
+ def log_after_removing(object)
186
+ @post_log << "after_removing#{object.id}"
187
+ end
188
+
189
+ def raise_exception(object)
190
+ raise Exception.new("You can't add a post")
191
+ end
192
+ end
193
+
194
+ class AuthorAddress < ActiveRecord::Base
195
+ has_one :author
196
+
197
+ def self.destroyed_author_address_ids
198
+ @destroyed_author_address_ids ||= []
199
+ end
200
+
201
+ before_destroy do |author_address|
202
+ AuthorAddress.destroyed_author_address_ids << author_address.id
203
+ end
204
+ end
205
+
206
+ class AuthorFavorite < ActiveRecord::Base
207
+ belongs_to :author
208
+ belongs_to :favorite_author, :class_name => "Author"
209
+ end