activerecord 2.3.18 → 3.2.22
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1014 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +222 -0
- data/examples/performance.rb +100 -126
- data/examples/simple.rb +14 -0
- data/lib/active_record/aggregations.rb +93 -99
- data/lib/active_record/associations/alias_tracker.rb +76 -0
- data/lib/active_record/associations/association.rb +247 -0
- data/lib/active_record/associations/association_scope.rb +134 -0
- data/lib/active_record/associations/belongs_to_association.rb +54 -61
- data/lib/active_record/associations/belongs_to_polymorphic_association.rb +17 -59
- data/lib/active_record/associations/builder/association.rb +55 -0
- data/lib/active_record/associations/builder/belongs_to.rb +88 -0
- data/lib/active_record/associations/builder/collection_association.rb +75 -0
- data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +57 -0
- data/lib/active_record/associations/builder/has_many.rb +71 -0
- data/lib/active_record/associations/builder/has_one.rb +62 -0
- data/lib/active_record/associations/builder/singular_association.rb +32 -0
- data/lib/active_record/associations/collection_association.rb +580 -0
- data/lib/active_record/associations/collection_proxy.rb +133 -0
- data/lib/active_record/associations/has_and_belongs_to_many_association.rb +39 -119
- data/lib/active_record/associations/has_many_association.rb +60 -79
- data/lib/active_record/associations/has_many_through_association.rb +127 -206
- data/lib/active_record/associations/has_one_association.rb +55 -114
- data/lib/active_record/associations/has_one_through_association.rb +25 -26
- data/lib/active_record/associations/join_dependency/join_association.rb +159 -0
- data/lib/active_record/associations/join_dependency/join_base.rb +24 -0
- data/lib/active_record/associations/join_dependency/join_part.rb +78 -0
- data/lib/active_record/associations/join_dependency.rb +214 -0
- data/lib/active_record/associations/join_helper.rb +55 -0
- data/lib/active_record/associations/preloader/association.rb +125 -0
- data/lib/active_record/associations/preloader/belongs_to.rb +17 -0
- data/lib/active_record/associations/preloader/collection_association.rb +24 -0
- data/lib/active_record/associations/preloader/has_and_belongs_to_many.rb +60 -0
- data/lib/active_record/associations/preloader/has_many.rb +17 -0
- data/lib/active_record/associations/preloader/has_many_through.rb +15 -0
- data/lib/active_record/associations/preloader/has_one.rb +23 -0
- data/lib/active_record/associations/preloader/has_one_through.rb +9 -0
- data/lib/active_record/associations/preloader/singular_association.rb +21 -0
- data/lib/active_record/associations/preloader/through_association.rb +67 -0
- data/lib/active_record/associations/preloader.rb +181 -0
- data/lib/active_record/associations/singular_association.rb +64 -0
- data/lib/active_record/associations/through_association.rb +87 -0
- data/lib/active_record/associations.rb +693 -1337
- data/lib/active_record/attribute_assignment.rb +221 -0
- data/lib/active_record/attribute_methods/before_type_cast.rb +31 -0
- data/lib/active_record/attribute_methods/deprecated_underscore_read.rb +32 -0
- data/lib/active_record/attribute_methods/dirty.rb +111 -0
- data/lib/active_record/attribute_methods/primary_key.rb +114 -0
- data/lib/active_record/attribute_methods/query.rb +39 -0
- data/lib/active_record/attribute_methods/read.rb +136 -0
- data/lib/active_record/attribute_methods/serialization.rb +120 -0
- data/lib/active_record/attribute_methods/time_zone_conversion.rb +65 -0
- data/lib/active_record/attribute_methods/write.rb +70 -0
- data/lib/active_record/attribute_methods.rb +211 -339
- data/lib/active_record/autosave_association.rb +179 -149
- data/lib/active_record/base.rb +401 -2907
- data/lib/active_record/callbacks.rb +91 -176
- data/lib/active_record/coders/yaml_column.rb +41 -0
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +236 -119
- data/lib/active_record/connection_adapters/abstract/connection_specification.rb +110 -58
- data/lib/active_record/connection_adapters/abstract/database_limits.rb +12 -11
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +175 -74
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +31 -35
- data/lib/active_record/connection_adapters/abstract/quoting.rb +71 -21
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +81 -311
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +194 -78
- data/lib/active_record/connection_adapters/abstract_adapter.rb +130 -83
- data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +676 -0
- data/lib/active_record/connection_adapters/column.rb +296 -0
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +280 -0
- data/lib/active_record/connection_adapters/mysql_adapter.rb +272 -493
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +650 -405
- data/lib/active_record/connection_adapters/schema_cache.rb +69 -0
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +30 -9
- data/lib/active_record/connection_adapters/sqlite_adapter.rb +276 -147
- data/lib/active_record/connection_adapters/statement_pool.rb +40 -0
- data/lib/active_record/counter_cache.rb +123 -0
- data/lib/active_record/dynamic_finder_match.rb +41 -14
- data/lib/active_record/dynamic_matchers.rb +84 -0
- data/lib/active_record/dynamic_scope_match.rb +13 -15
- data/lib/active_record/errors.rb +195 -0
- data/lib/active_record/explain.rb +86 -0
- data/lib/active_record/explain_subscriber.rb +25 -0
- data/lib/active_record/fixtures/file.rb +65 -0
- data/lib/active_record/fixtures.rb +695 -770
- data/lib/active_record/identity_map.rb +162 -0
- data/lib/active_record/inheritance.rb +174 -0
- data/lib/active_record/integration.rb +60 -0
- data/lib/active_record/locale/en.yml +9 -27
- data/lib/active_record/locking/optimistic.rb +76 -73
- data/lib/active_record/locking/pessimistic.rb +32 -10
- data/lib/active_record/log_subscriber.rb +72 -0
- data/lib/active_record/migration/command_recorder.rb +105 -0
- data/lib/active_record/migration.rb +415 -205
- data/lib/active_record/model_schema.rb +368 -0
- data/lib/active_record/nested_attributes.rb +153 -63
- data/lib/active_record/observer.rb +27 -103
- data/lib/active_record/persistence.rb +376 -0
- data/lib/active_record/query_cache.rb +49 -8
- data/lib/active_record/querying.rb +58 -0
- data/lib/active_record/railtie.rb +131 -0
- data/lib/active_record/railties/console_sandbox.rb +6 -0
- data/lib/active_record/railties/controller_runtime.rb +49 -0
- data/lib/active_record/railties/databases.rake +659 -0
- data/lib/active_record/railties/jdbcmysql_error.rb +16 -0
- data/lib/active_record/readonly_attributes.rb +26 -0
- data/lib/active_record/reflection.rb +269 -120
- data/lib/active_record/relation/batches.rb +90 -0
- data/lib/active_record/relation/calculations.rb +372 -0
- data/lib/active_record/relation/delegation.rb +49 -0
- data/lib/active_record/relation/finder_methods.rb +402 -0
- data/lib/active_record/relation/predicate_builder.rb +63 -0
- data/lib/active_record/relation/query_methods.rb +417 -0
- data/lib/active_record/relation/spawn_methods.rb +180 -0
- data/lib/active_record/relation.rb +537 -0
- data/lib/active_record/result.rb +40 -0
- data/lib/active_record/sanitization.rb +194 -0
- data/lib/active_record/schema.rb +9 -6
- data/lib/active_record/schema_dumper.rb +55 -32
- data/lib/active_record/scoping/default.rb +142 -0
- data/lib/active_record/scoping/named.rb +200 -0
- data/lib/active_record/scoping.rb +152 -0
- data/lib/active_record/serialization.rb +8 -91
- data/lib/active_record/serializers/xml_serializer.rb +43 -197
- data/lib/active_record/session_store.rb +129 -103
- data/lib/active_record/store.rb +52 -0
- data/lib/active_record/test_case.rb +30 -23
- data/lib/active_record/timestamp.rb +95 -52
- data/lib/active_record/transactions.rb +212 -66
- data/lib/active_record/translation.rb +22 -0
- data/lib/active_record/validations/associated.rb +43 -0
- data/lib/active_record/validations/uniqueness.rb +180 -0
- data/lib/active_record/validations.rb +43 -1106
- data/lib/active_record/version.rb +5 -4
- data/lib/active_record.rb +121 -48
- data/lib/rails/generators/active_record/migration/migration_generator.rb +25 -0
- data/lib/rails/generators/active_record/migration/templates/migration.rb +34 -0
- data/lib/rails/generators/active_record/migration.rb +15 -0
- data/lib/rails/generators/active_record/model/model_generator.rb +47 -0
- data/lib/rails/generators/active_record/model/templates/migration.rb +15 -0
- data/lib/rails/generators/active_record/model/templates/model.rb +12 -0
- data/lib/rails/generators/active_record/model/templates/module.rb +7 -0
- data/lib/rails/generators/active_record/observer/observer_generator.rb +15 -0
- data/lib/rails/generators/active_record/observer/templates/observer.rb +4 -0
- data/lib/rails/generators/active_record/session_migration/session_migration_generator.rb +25 -0
- data/lib/rails/generators/active_record/session_migration/templates/migration.rb +12 -0
- data/lib/rails/generators/active_record.rb +25 -0
- metadata +187 -363
- data/CHANGELOG +0 -5904
- data/README +0 -351
- data/RUNNING_UNIT_TESTS +0 -36
- data/Rakefile +0 -268
- data/install.rb +0 -30
- data/lib/active_record/association_preload.rb +0 -406
- data/lib/active_record/associations/association_collection.rb +0 -533
- data/lib/active_record/associations/association_proxy.rb +0 -288
- data/lib/active_record/batches.rb +0 -85
- data/lib/active_record/calculations.rb +0 -321
- data/lib/active_record/dirty.rb +0 -183
- data/lib/active_record/named_scope.rb +0 -197
- data/lib/active_record/serializers/json_serializer.rb +0 -91
- data/lib/activerecord.rb +0 -2
- data/test/assets/example.log +0 -1
- data/test/assets/flowers.jpg +0 -0
- data/test/cases/aaa_create_tables_test.rb +0 -24
- data/test/cases/active_schema_test_mysql.rb +0 -122
- data/test/cases/active_schema_test_postgresql.rb +0 -24
- data/test/cases/adapter_test.rb +0 -144
- data/test/cases/aggregations_test.rb +0 -167
- data/test/cases/ar_schema_test.rb +0 -32
- data/test/cases/associations/belongs_to_associations_test.rb +0 -438
- data/test/cases/associations/callbacks_test.rb +0 -161
- data/test/cases/associations/cascaded_eager_loading_test.rb +0 -131
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +0 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +0 -131
- data/test/cases/associations/eager_load_nested_polymorphic_include.rb +0 -19
- data/test/cases/associations/eager_singularization_test.rb +0 -145
- data/test/cases/associations/eager_test.rb +0 -852
- data/test/cases/associations/extension_test.rb +0 -62
- data/test/cases/associations/habtm_join_table_test.rb +0 -56
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +0 -827
- data/test/cases/associations/has_many_associations_test.rb +0 -1273
- data/test/cases/associations/has_many_through_associations_test.rb +0 -360
- data/test/cases/associations/has_one_associations_test.rb +0 -330
- data/test/cases/associations/has_one_through_associations_test.rb +0 -209
- data/test/cases/associations/inner_join_association_test.rb +0 -93
- data/test/cases/associations/inverse_associations_test.rb +0 -566
- data/test/cases/associations/join_model_test.rb +0 -712
- data/test/cases/associations_test.rb +0 -282
- data/test/cases/attribute_methods_test.rb +0 -305
- data/test/cases/autosave_association_test.rb +0 -1218
- data/test/cases/base_test.rb +0 -2166
- data/test/cases/batches_test.rb +0 -81
- data/test/cases/binary_test.rb +0 -30
- data/test/cases/calculations_test.rb +0 -360
- data/test/cases/callbacks_observers_test.rb +0 -38
- data/test/cases/callbacks_test.rb +0 -438
- data/test/cases/class_inheritable_attributes_test.rb +0 -32
- data/test/cases/column_alias_test.rb +0 -17
- data/test/cases/column_definition_test.rb +0 -70
- data/test/cases/connection_pool_test.rb +0 -25
- data/test/cases/connection_test_firebird.rb +0 -8
- data/test/cases/connection_test_mysql.rb +0 -65
- data/test/cases/copy_table_test_sqlite.rb +0 -80
- data/test/cases/counter_cache_test.rb +0 -84
- data/test/cases/database_statements_test.rb +0 -12
- data/test/cases/datatype_test_postgresql.rb +0 -204
- data/test/cases/date_time_test.rb +0 -37
- data/test/cases/default_test_firebird.rb +0 -16
- data/test/cases/defaults_test.rb +0 -111
- data/test/cases/deprecated_finder_test.rb +0 -30
- data/test/cases/dirty_test.rb +0 -316
- data/test/cases/finder_respond_to_test.rb +0 -76
- data/test/cases/finder_test.rb +0 -1098
- data/test/cases/fixtures_test.rb +0 -661
- data/test/cases/helper.rb +0 -68
- data/test/cases/i18n_test.rb +0 -46
- data/test/cases/inheritance_test.rb +0 -262
- data/test/cases/invalid_date_test.rb +0 -24
- data/test/cases/json_serialization_test.rb +0 -219
- data/test/cases/lifecycle_test.rb +0 -193
- data/test/cases/locking_test.rb +0 -350
- data/test/cases/method_scoping_test.rb +0 -704
- data/test/cases/migration_test.rb +0 -1649
- data/test/cases/migration_test_firebird.rb +0 -124
- data/test/cases/mixin_test.rb +0 -96
- data/test/cases/modules_test.rb +0 -109
- data/test/cases/multiple_db_test.rb +0 -85
- data/test/cases/named_scope_test.rb +0 -372
- data/test/cases/nested_attributes_test.rb +0 -840
- data/test/cases/pk_test.rb +0 -119
- data/test/cases/pooled_connections_test.rb +0 -103
- data/test/cases/query_cache_test.rb +0 -129
- data/test/cases/readonly_test.rb +0 -107
- data/test/cases/reflection_test.rb +0 -234
- data/test/cases/reload_models_test.rb +0 -22
- data/test/cases/repair_helper.rb +0 -50
- data/test/cases/reserved_word_test_mysql.rb +0 -176
- data/test/cases/sanitize_test.rb +0 -25
- data/test/cases/schema_authorization_test_postgresql.rb +0 -75
- data/test/cases/schema_dumper_test.rb +0 -211
- data/test/cases/schema_test_postgresql.rb +0 -178
- data/test/cases/serialization_test.rb +0 -47
- data/test/cases/sp_test_mysql.rb +0 -16
- data/test/cases/synonym_test_oracle.rb +0 -17
- data/test/cases/timestamp_test.rb +0 -75
- data/test/cases/transactions_test.rb +0 -543
- data/test/cases/unconnected_test.rb +0 -32
- data/test/cases/validations_i18n_test.rb +0 -925
- data/test/cases/validations_test.rb +0 -1684
- data/test/cases/xml_serialization_test.rb +0 -240
- data/test/cases/yaml_serialization_test.rb +0 -11
- data/test/config.rb +0 -5
- data/test/connections/jdbc_jdbcderby/connection.rb +0 -18
- data/test/connections/jdbc_jdbch2/connection.rb +0 -18
- data/test/connections/jdbc_jdbchsqldb/connection.rb +0 -18
- data/test/connections/jdbc_jdbcmysql/connection.rb +0 -26
- data/test/connections/jdbc_jdbcpostgresql/connection.rb +0 -26
- data/test/connections/jdbc_jdbcsqlite3/connection.rb +0 -25
- data/test/connections/native_db2/connection.rb +0 -25
- data/test/connections/native_firebird/connection.rb +0 -26
- data/test/connections/native_frontbase/connection.rb +0 -27
- data/test/connections/native_mysql/connection.rb +0 -25
- data/test/connections/native_openbase/connection.rb +0 -21
- data/test/connections/native_oracle/connection.rb +0 -27
- data/test/connections/native_postgresql/connection.rb +0 -21
- data/test/connections/native_sqlite/connection.rb +0 -25
- data/test/connections/native_sqlite3/connection.rb +0 -25
- data/test/connections/native_sqlite3/in_memory_connection.rb +0 -18
- data/test/connections/native_sybase/connection.rb +0 -23
- data/test/fixtures/accounts.yml +0 -29
- data/test/fixtures/all/developers.yml +0 -0
- data/test/fixtures/all/people.csv +0 -0
- data/test/fixtures/all/tasks.yml +0 -0
- data/test/fixtures/author_addresses.yml +0 -5
- data/test/fixtures/author_favorites.yml +0 -4
- data/test/fixtures/authors.yml +0 -9
- data/test/fixtures/binaries.yml +0 -132
- data/test/fixtures/books.yml +0 -7
- data/test/fixtures/categories/special_categories.yml +0 -9
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +0 -4
- data/test/fixtures/categories.yml +0 -14
- data/test/fixtures/categories_ordered.yml +0 -7
- data/test/fixtures/categories_posts.yml +0 -23
- data/test/fixtures/categorizations.yml +0 -17
- data/test/fixtures/clubs.yml +0 -6
- data/test/fixtures/comments.yml +0 -59
- data/test/fixtures/companies.yml +0 -56
- data/test/fixtures/computers.yml +0 -4
- data/test/fixtures/courses.yml +0 -7
- data/test/fixtures/customers.yml +0 -26
- data/test/fixtures/developers.yml +0 -21
- data/test/fixtures/developers_projects.yml +0 -17
- data/test/fixtures/edges.yml +0 -6
- data/test/fixtures/entrants.yml +0 -14
- data/test/fixtures/faces.yml +0 -11
- data/test/fixtures/fk_test_has_fk.yml +0 -3
- data/test/fixtures/fk_test_has_pk.yml +0 -2
- data/test/fixtures/funny_jokes.yml +0 -10
- data/test/fixtures/interests.yml +0 -33
- data/test/fixtures/items.yml +0 -4
- data/test/fixtures/jobs.yml +0 -7
- data/test/fixtures/legacy_things.yml +0 -3
- data/test/fixtures/mateys.yml +0 -4
- data/test/fixtures/member_types.yml +0 -6
- data/test/fixtures/members.yml +0 -6
- data/test/fixtures/memberships.yml +0 -20
- data/test/fixtures/men.yml +0 -5
- data/test/fixtures/minimalistics.yml +0 -2
- data/test/fixtures/mixed_case_monkeys.yml +0 -6
- data/test/fixtures/mixins.yml +0 -29
- data/test/fixtures/movies.yml +0 -7
- data/test/fixtures/naked/csv/accounts.csv +0 -1
- data/test/fixtures/naked/yml/accounts.yml +0 -1
- data/test/fixtures/naked/yml/companies.yml +0 -1
- data/test/fixtures/naked/yml/courses.yml +0 -1
- data/test/fixtures/organizations.yml +0 -5
- data/test/fixtures/owners.yml +0 -7
- data/test/fixtures/parrots.yml +0 -27
- data/test/fixtures/parrots_pirates.yml +0 -7
- data/test/fixtures/people.yml +0 -15
- data/test/fixtures/pets.yml +0 -14
- data/test/fixtures/pirates.yml +0 -9
- data/test/fixtures/polymorphic_designs.yml +0 -19
- data/test/fixtures/polymorphic_prices.yml +0 -19
- data/test/fixtures/posts.yml +0 -52
- data/test/fixtures/price_estimates.yml +0 -7
- data/test/fixtures/projects.yml +0 -7
- data/test/fixtures/readers.yml +0 -9
- data/test/fixtures/references.yml +0 -17
- data/test/fixtures/reserved_words/distinct.yml +0 -5
- data/test/fixtures/reserved_words/distincts_selects.yml +0 -11
- data/test/fixtures/reserved_words/group.yml +0 -14
- data/test/fixtures/reserved_words/select.yml +0 -8
- data/test/fixtures/reserved_words/values.yml +0 -7
- data/test/fixtures/ships.yml +0 -5
- data/test/fixtures/sponsors.yml +0 -9
- data/test/fixtures/subscribers.yml +0 -7
- data/test/fixtures/subscriptions.yml +0 -12
- data/test/fixtures/taggings.yml +0 -28
- data/test/fixtures/tags.yml +0 -7
- data/test/fixtures/tasks.yml +0 -7
- data/test/fixtures/tees.yml +0 -4
- data/test/fixtures/ties.yml +0 -4
- data/test/fixtures/topics.yml +0 -42
- data/test/fixtures/toys.yml +0 -4
- data/test/fixtures/treasures.yml +0 -10
- data/test/fixtures/vertices.yml +0 -4
- data/test/fixtures/warehouse-things.yml +0 -3
- data/test/fixtures/zines.yml +0 -5
- data/test/migrations/broken/100_migration_that_raises_exception.rb +0 -10
- data/test/migrations/decimal/1_give_me_big_numbers.rb +0 -15
- data/test/migrations/duplicate/1_people_have_last_names.rb +0 -9
- data/test/migrations/duplicate/2_we_need_reminders.rb +0 -12
- data/test/migrations/duplicate/3_foo.rb +0 -7
- data/test/migrations/duplicate/3_innocent_jointable.rb +0 -12
- data/test/migrations/duplicate_names/20080507052938_chunky.rb +0 -7
- data/test/migrations/duplicate_names/20080507053028_chunky.rb +0 -7
- data/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +0 -12
- data/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +0 -9
- data/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +0 -12
- data/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +0 -9
- data/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +0 -8
- data/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +0 -12
- data/test/migrations/missing/1000_people_have_middle_names.rb +0 -9
- data/test/migrations/missing/1_people_have_last_names.rb +0 -9
- data/test/migrations/missing/3_we_need_reminders.rb +0 -12
- data/test/migrations/missing/4_innocent_jointable.rb +0 -12
- data/test/migrations/valid/1_people_have_last_names.rb +0 -9
- data/test/migrations/valid/2_we_need_reminders.rb +0 -12
- data/test/migrations/valid/3_innocent_jointable.rb +0 -12
- data/test/models/author.rb +0 -151
- data/test/models/auto_id.rb +0 -4
- data/test/models/binary.rb +0 -2
- data/test/models/bird.rb +0 -9
- data/test/models/book.rb +0 -4
- data/test/models/categorization.rb +0 -5
- data/test/models/category.rb +0 -34
- data/test/models/citation.rb +0 -6
- data/test/models/club.rb +0 -13
- data/test/models/column_name.rb +0 -3
- data/test/models/comment.rb +0 -29
- data/test/models/company.rb +0 -173
- data/test/models/company_in_module.rb +0 -78
- data/test/models/computer.rb +0 -3
- data/test/models/contact.rb +0 -16
- data/test/models/contract.rb +0 -5
- data/test/models/course.rb +0 -3
- data/test/models/customer.rb +0 -73
- data/test/models/default.rb +0 -2
- data/test/models/developer.rb +0 -101
- data/test/models/edge.rb +0 -5
- data/test/models/entrant.rb +0 -3
- data/test/models/essay.rb +0 -3
- data/test/models/event.rb +0 -3
- data/test/models/event_author.rb +0 -8
- data/test/models/face.rb +0 -7
- data/test/models/guid.rb +0 -2
- data/test/models/interest.rb +0 -5
- data/test/models/invoice.rb +0 -4
- data/test/models/item.rb +0 -7
- data/test/models/job.rb +0 -5
- data/test/models/joke.rb +0 -3
- data/test/models/keyboard.rb +0 -3
- data/test/models/legacy_thing.rb +0 -3
- data/test/models/line_item.rb +0 -3
- data/test/models/man.rb +0 -9
- data/test/models/matey.rb +0 -4
- data/test/models/member.rb +0 -12
- data/test/models/member_detail.rb +0 -5
- data/test/models/member_type.rb +0 -3
- data/test/models/membership.rb +0 -9
- data/test/models/minimalistic.rb +0 -2
- data/test/models/mixed_case_monkey.rb +0 -3
- data/test/models/movie.rb +0 -5
- data/test/models/order.rb +0 -4
- data/test/models/organization.rb +0 -6
- data/test/models/owner.rb +0 -5
- data/test/models/parrot.rb +0 -22
- data/test/models/person.rb +0 -16
- data/test/models/pet.rb +0 -5
- data/test/models/pirate.rb +0 -80
- data/test/models/polymorphic_design.rb +0 -3
- data/test/models/polymorphic_price.rb +0 -3
- data/test/models/post.rb +0 -102
- data/test/models/price_estimate.rb +0 -3
- data/test/models/project.rb +0 -30
- data/test/models/reader.rb +0 -4
- data/test/models/reference.rb +0 -4
- data/test/models/reply.rb +0 -46
- data/test/models/ship.rb +0 -19
- data/test/models/ship_part.rb +0 -7
- data/test/models/sponsor.rb +0 -4
- data/test/models/subject.rb +0 -4
- data/test/models/subscriber.rb +0 -8
- data/test/models/subscription.rb +0 -4
- data/test/models/tag.rb +0 -7
- data/test/models/tagging.rb +0 -10
- data/test/models/task.rb +0 -3
- data/test/models/tee.rb +0 -4
- data/test/models/tie.rb +0 -4
- data/test/models/topic.rb +0 -80
- data/test/models/toy.rb +0 -6
- data/test/models/treasure.rb +0 -8
- data/test/models/vertex.rb +0 -9
- data/test/models/warehouse_thing.rb +0 -5
- data/test/models/zine.rb +0 -3
- data/test/schema/mysql_specific_schema.rb +0 -31
- data/test/schema/postgresql_specific_schema.rb +0 -114
- data/test/schema/schema.rb +0 -550
- data/test/schema/schema2.rb +0 -6
- data/test/schema/sqlite_specific_schema.rb +0 -25
@@ -1,124 +0,0 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/course'
|
3
|
-
|
4
|
-
class FirebirdMigrationTest < ActiveRecord::TestCase
|
5
|
-
self.use_transactional_fixtures = false
|
6
|
-
|
7
|
-
def setup
|
8
|
-
# using Course connection for tests -- need a db that doesn't already have a BOOLEAN domain
|
9
|
-
@connection = Course.connection
|
10
|
-
@fireruby_connection = @connection.instance_variable_get(:@connection)
|
11
|
-
end
|
12
|
-
|
13
|
-
def teardown
|
14
|
-
@connection.drop_table :foo rescue nil
|
15
|
-
@connection.execute("DROP DOMAIN D_BOOLEAN") rescue nil
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_create_table_with_custom_sequence_name
|
19
|
-
assert_nothing_raised do
|
20
|
-
@connection.create_table(:foo, :sequence => 'foo_custom_seq') do |f|
|
21
|
-
f.column :bar, :string
|
22
|
-
end
|
23
|
-
end
|
24
|
-
assert !sequence_exists?('foo_seq')
|
25
|
-
assert sequence_exists?('foo_custom_seq')
|
26
|
-
|
27
|
-
assert_nothing_raised { @connection.drop_table(:foo, :sequence => 'foo_custom_seq') }
|
28
|
-
assert !sequence_exists?('foo_custom_seq')
|
29
|
-
ensure
|
30
|
-
FireRuby::Generator.new('foo_custom_seq', @fireruby_connection).drop rescue nil
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_create_table_without_sequence
|
34
|
-
assert_nothing_raised do
|
35
|
-
@connection.create_table(:foo, :sequence => false) do |f|
|
36
|
-
f.column :bar, :string
|
37
|
-
end
|
38
|
-
end
|
39
|
-
assert !sequence_exists?('foo_seq')
|
40
|
-
assert_nothing_raised { @connection.drop_table :foo }
|
41
|
-
|
42
|
-
assert_nothing_raised do
|
43
|
-
@connection.create_table(:foo, :id => false) do |f|
|
44
|
-
f.column :bar, :string
|
45
|
-
end
|
46
|
-
end
|
47
|
-
assert !sequence_exists?('foo_seq')
|
48
|
-
assert_nothing_raised { @connection.drop_table :foo }
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_create_table_with_boolean_column
|
52
|
-
assert !boolean_domain_exists?
|
53
|
-
assert_nothing_raised do
|
54
|
-
@connection.create_table :foo do |f|
|
55
|
-
f.column :bar, :string
|
56
|
-
f.column :baz, :boolean
|
57
|
-
end
|
58
|
-
end
|
59
|
-
assert boolean_domain_exists?
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_add_boolean_column
|
63
|
-
assert !boolean_domain_exists?
|
64
|
-
@connection.create_table :foo do |f|
|
65
|
-
f.column :bar, :string
|
66
|
-
end
|
67
|
-
|
68
|
-
assert_nothing_raised { @connection.add_column :foo, :baz, :boolean }
|
69
|
-
assert boolean_domain_exists?
|
70
|
-
assert_equal :boolean, @connection.columns(:foo).find { |c| c.name == "baz" }.type
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_change_column_to_boolean
|
74
|
-
assert !boolean_domain_exists?
|
75
|
-
# Manually create table with a SMALLINT column, which can be changed to a BOOLEAN
|
76
|
-
@connection.execute "CREATE TABLE foo (bar SMALLINT)"
|
77
|
-
assert_equal :integer, @connection.columns(:foo).find { |c| c.name == "bar" }.type
|
78
|
-
|
79
|
-
assert_nothing_raised { @connection.change_column :foo, :bar, :boolean }
|
80
|
-
assert boolean_domain_exists?
|
81
|
-
assert_equal :boolean, @connection.columns(:foo).find { |c| c.name == "bar" }.type
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_rename_table_with_data_and_index
|
85
|
-
@connection.create_table :foo do |f|
|
86
|
-
f.column :baz, :string, :limit => 50
|
87
|
-
end
|
88
|
-
100.times { |i| @connection.execute "INSERT INTO foo VALUES (GEN_ID(foo_seq, 1), 'record #{i+1}')" }
|
89
|
-
@connection.add_index :foo, :baz
|
90
|
-
|
91
|
-
assert_nothing_raised { @connection.rename_table :foo, :bar }
|
92
|
-
assert !@connection.tables.include?("foo")
|
93
|
-
assert @connection.tables.include?("bar")
|
94
|
-
assert_equal "index_bar_on_baz", @connection.indexes("bar").first.name
|
95
|
-
assert_equal 100, FireRuby::Generator.new("bar_seq", @fireruby_connection).last
|
96
|
-
assert_equal 100, @connection.select_one("SELECT COUNT(*) FROM bar")["count"]
|
97
|
-
ensure
|
98
|
-
@connection.drop_table :bar rescue nil
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_renaming_table_with_fk_constraint_raises_error
|
102
|
-
@connection.create_table :parent do |p|
|
103
|
-
p.column :name, :string
|
104
|
-
end
|
105
|
-
@connection.create_table :child do |c|
|
106
|
-
c.column :parent_id, :integer
|
107
|
-
end
|
108
|
-
@connection.execute "ALTER TABLE child ADD CONSTRAINT fk_child_parent FOREIGN KEY(parent_id) REFERENCES parent(id)"
|
109
|
-
assert_raise(ActiveRecord::ActiveRecordError) { @connection.rename_table :child, :descendant }
|
110
|
-
ensure
|
111
|
-
@connection.drop_table :child rescue nil
|
112
|
-
@connection.drop_table :descendant rescue nil
|
113
|
-
@connection.drop_table :parent rescue nil
|
114
|
-
end
|
115
|
-
|
116
|
-
private
|
117
|
-
def boolean_domain_exists?
|
118
|
-
!@connection.select_one("SELECT 1 FROM rdb$fields WHERE rdb$field_name = 'D_BOOLEAN'").nil?
|
119
|
-
end
|
120
|
-
|
121
|
-
def sequence_exists?(sequence_name)
|
122
|
-
FireRuby::Generator.exists?(sequence_name, @fireruby_connection)
|
123
|
-
end
|
124
|
-
end
|
data/test/cases/mixin_test.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
class Mixin < ActiveRecord::Base
|
4
|
-
end
|
5
|
-
|
6
|
-
# Let us control what Time.now returns for the TouchTest suite
|
7
|
-
class Time
|
8
|
-
@@forced_now_time = nil
|
9
|
-
cattr_accessor :forced_now_time
|
10
|
-
|
11
|
-
class << self
|
12
|
-
def now_with_forcing
|
13
|
-
if @@forced_now_time
|
14
|
-
@@forced_now_time
|
15
|
-
else
|
16
|
-
now_without_forcing
|
17
|
-
end
|
18
|
-
end
|
19
|
-
alias_method_chain :now, :forcing
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
class TouchTest < ActiveRecord::TestCase
|
25
|
-
fixtures :mixins
|
26
|
-
|
27
|
-
def setup
|
28
|
-
Time.forced_now_time = Time.now
|
29
|
-
end
|
30
|
-
|
31
|
-
def teardown
|
32
|
-
Time.forced_now_time = nil
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_time_mocking
|
36
|
-
five_minutes_ago = 5.minutes.ago
|
37
|
-
Time.forced_now_time = five_minutes_ago
|
38
|
-
assert_equal five_minutes_ago, Time.now
|
39
|
-
|
40
|
-
Time.forced_now_time = nil
|
41
|
-
assert_not_equal five_minutes_ago, Time.now
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_update
|
45
|
-
stamped = Mixin.new
|
46
|
-
|
47
|
-
assert_nil stamped.updated_at
|
48
|
-
assert_nil stamped.created_at
|
49
|
-
stamped.save
|
50
|
-
assert_equal Time.now, stamped.updated_at
|
51
|
-
assert_equal Time.now, stamped.created_at
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_create
|
55
|
-
obj = Mixin.create
|
56
|
-
assert_equal Time.now, obj.updated_at
|
57
|
-
assert_equal Time.now, obj.created_at
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_many_updates
|
61
|
-
stamped = Mixin.new
|
62
|
-
|
63
|
-
assert_nil stamped.updated_at
|
64
|
-
assert_nil stamped.created_at
|
65
|
-
stamped.save
|
66
|
-
assert_equal Time.now, stamped.created_at
|
67
|
-
assert_equal Time.now, stamped.updated_at
|
68
|
-
|
69
|
-
old_updated_at = stamped.updated_at
|
70
|
-
|
71
|
-
Time.forced_now_time = 5.minutes.from_now
|
72
|
-
stamped.lft_will_change!
|
73
|
-
stamped.save
|
74
|
-
|
75
|
-
assert_equal Time.now, stamped.updated_at
|
76
|
-
assert_equal old_updated_at, stamped.created_at
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_create_turned_off
|
80
|
-
Mixin.record_timestamps = false
|
81
|
-
|
82
|
-
mixin = Mixin.new
|
83
|
-
|
84
|
-
assert_nil mixin.updated_at
|
85
|
-
mixin.save
|
86
|
-
assert_nil mixin.updated_at
|
87
|
-
|
88
|
-
# Make sure Mixin.record_timestamps gets reset, even if this test fails,
|
89
|
-
# so that other tests do not fail because Mixin.record_timestamps == false
|
90
|
-
rescue Exception => e
|
91
|
-
raise e
|
92
|
-
ensure
|
93
|
-
Mixin.record_timestamps = true
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
data/test/cases/modules_test.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/company_in_module'
|
3
|
-
|
4
|
-
class ModulesTest < ActiveRecord::TestCase
|
5
|
-
fixtures :accounts, :companies, :projects, :developers
|
6
|
-
|
7
|
-
def setup
|
8
|
-
# need to make sure Object::Firm and Object::Client are not defined,
|
9
|
-
# so that constantize will not be able to cheat when having to load namespaced classes
|
10
|
-
@undefined_consts = {}
|
11
|
-
|
12
|
-
[:Firm, :Client].each do |const|
|
13
|
-
@undefined_consts.merge! const => Object.send(:remove_const, const) if Object.const_defined?(const)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def teardown
|
18
|
-
# reinstate the constants that we undefined in the setup
|
19
|
-
@undefined_consts.each do |constant, value|
|
20
|
-
Object.send :const_set, constant, value unless value.nil?
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_module_spanning_associations
|
25
|
-
firm = MyApplication::Business::Firm.find(:first)
|
26
|
-
assert !firm.clients.empty?, "Firm should have clients"
|
27
|
-
assert_nil firm.class.table_name.match('::'), "Firm shouldn't have the module appear in its table name"
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_module_spanning_has_and_belongs_to_many_associations
|
31
|
-
project = MyApplication::Business::Project.find(:first)
|
32
|
-
project.developers << MyApplication::Business::Developer.create("name" => "John")
|
33
|
-
assert "John", project.developers.last.name
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_associations_spanning_cross_modules
|
37
|
-
account = MyApplication::Billing::Account.find(:first, :order => 'id')
|
38
|
-
assert_kind_of MyApplication::Business::Firm, account.firm
|
39
|
-
assert_kind_of MyApplication::Billing::Firm, account.qualified_billing_firm
|
40
|
-
assert_kind_of MyApplication::Billing::Firm, account.unqualified_billing_firm
|
41
|
-
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_qualified_billing_firm
|
42
|
-
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_unqualified_billing_firm
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_find_account_and_include_company
|
46
|
-
account = MyApplication::Billing::Account.find(1, :include => :firm)
|
47
|
-
assert_kind_of MyApplication::Business::Firm, account.instance_variable_get('@firm')
|
48
|
-
assert_kind_of MyApplication::Business::Firm, account.firm
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_table_name
|
52
|
-
assert_equal 'accounts', MyApplication::Billing::Account.table_name, 'table_name for ActiveRecord model in module'
|
53
|
-
assert_equal 'companies', MyApplication::Business::Client.table_name, 'table_name for ActiveRecord model subclass'
|
54
|
-
assert_equal 'company_contacts', MyApplication::Business::Client::Contact.table_name, 'table_name for ActiveRecord model enclosed by another ActiveRecord model'
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_assign_ids
|
58
|
-
firm = MyApplication::Business::Firm.first
|
59
|
-
|
60
|
-
assert_nothing_raised NameError, "Should be able to resolve all class constants via reflection" do
|
61
|
-
firm.client_ids = [MyApplication::Business::Client.first.id]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# need to add an eager loading condition to force the eager loading model into
|
66
|
-
# the old join model, to test that. See http://dev.rubyonrails.org/ticket/9640
|
67
|
-
def test_eager_loading_in_modules
|
68
|
-
clients = []
|
69
|
-
|
70
|
-
assert_nothing_raised NameError, "Should be able to resolve all class constants via reflection" do
|
71
|
-
clients << MyApplication::Business::Client.find(3, :include => {:firm => :account}, :conditions => 'accounts.id IS NOT NULL')
|
72
|
-
clients << MyApplication::Business::Client.find(3, :include => {:firm => :account})
|
73
|
-
end
|
74
|
-
|
75
|
-
clients.each do |client|
|
76
|
-
assert_no_queries do
|
77
|
-
assert_not_nil(client.firm.account)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_module_table_name_prefix
|
83
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_prefix'
|
84
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_prefix'
|
85
|
-
assert_equal 'companies', MyApplication::Business::Prefixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_prefix should not be prefixed'
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_module_table_name_prefix_with_global_prefix
|
89
|
-
classes = [ MyApplication::Business::Company,
|
90
|
-
MyApplication::Business::Firm,
|
91
|
-
MyApplication::Business::Client,
|
92
|
-
MyApplication::Business::Client::Contact,
|
93
|
-
MyApplication::Business::Developer,
|
94
|
-
MyApplication::Business::Project,
|
95
|
-
MyApplication::Business::Prefixed::Company,
|
96
|
-
MyApplication::Business::Prefixed::Nested::Company,
|
97
|
-
MyApplication::Billing::Account ]
|
98
|
-
|
99
|
-
ActiveRecord::Base.table_name_prefix = 'global_'
|
100
|
-
classes.each(&:reset_table_name)
|
101
|
-
assert_equal 'global_companies', MyApplication::Business::Company.table_name, 'inferred table_name for ActiveRecord model in module without table_name_prefix'
|
102
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_prefix'
|
103
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_prefix'
|
104
|
-
assert_equal 'companies', MyApplication::Business::Prefixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_prefix should not be prefixed'
|
105
|
-
ensure
|
106
|
-
ActiveRecord::Base.table_name_prefix = ''
|
107
|
-
classes.each(&:reset_table_name)
|
108
|
-
end
|
109
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/entrant'
|
3
|
-
|
4
|
-
# So we can test whether Course.connection survives a reload.
|
5
|
-
require_dependency 'models/course'
|
6
|
-
|
7
|
-
class MultipleDbTest < ActiveRecord::TestCase
|
8
|
-
self.use_transactional_fixtures = false
|
9
|
-
|
10
|
-
def setup
|
11
|
-
@courses = create_fixtures("courses") { Course.retrieve_connection }
|
12
|
-
@entrants = create_fixtures("entrants")
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_connected
|
16
|
-
assert_not_nil Entrant.connection
|
17
|
-
assert_not_nil Course.connection
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_proper_connection
|
21
|
-
assert_not_equal(Entrant.connection, Course.connection)
|
22
|
-
assert_equal(Entrant.connection, Entrant.retrieve_connection)
|
23
|
-
assert_equal(Course.connection, Course.retrieve_connection)
|
24
|
-
assert_equal(ActiveRecord::Base.connection, Entrant.connection)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_find
|
28
|
-
c1 = Course.find(1)
|
29
|
-
assert_equal "Ruby Development", c1.name
|
30
|
-
c2 = Course.find(2)
|
31
|
-
assert_equal "Java Development", c2.name
|
32
|
-
e1 = Entrant.find(1)
|
33
|
-
assert_equal "Ruby Developer", e1.name
|
34
|
-
e2 = Entrant.find(2)
|
35
|
-
assert_equal "Ruby Guru", e2.name
|
36
|
-
e3 = Entrant.find(3)
|
37
|
-
assert_equal "Java Lover", e3.name
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_associations
|
41
|
-
c1 = Course.find(1)
|
42
|
-
assert_equal 2, c1.entrants.count
|
43
|
-
e1 = Entrant.find(1)
|
44
|
-
assert_equal e1.course.id, c1.id
|
45
|
-
c2 = Course.find(2)
|
46
|
-
assert_equal 1, c2.entrants.count
|
47
|
-
e3 = Entrant.find(3)
|
48
|
-
assert_equal e3.course.id, c2.id
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_course_connection_should_survive_dependency_reload
|
52
|
-
assert Course.connection
|
53
|
-
|
54
|
-
ActiveSupport::Dependencies.clear
|
55
|
-
Object.send(:remove_const, :Course)
|
56
|
-
require_dependency 'models/course'
|
57
|
-
|
58
|
-
assert Course.connection
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_transactions_across_databases
|
62
|
-
c1 = Course.find(1)
|
63
|
-
e1 = Entrant.find(1)
|
64
|
-
|
65
|
-
begin
|
66
|
-
Course.transaction do
|
67
|
-
Entrant.transaction do
|
68
|
-
c1.name = "Typo"
|
69
|
-
e1.name = "Typo"
|
70
|
-
c1.save
|
71
|
-
e1.save
|
72
|
-
raise "No I messed up."
|
73
|
-
end
|
74
|
-
end
|
75
|
-
rescue
|
76
|
-
# Yup caught it
|
77
|
-
end
|
78
|
-
|
79
|
-
assert_equal "Typo", c1.name
|
80
|
-
assert_equal "Typo", e1.name
|
81
|
-
|
82
|
-
assert_equal "Ruby Development", Course.find(1).name
|
83
|
-
assert_equal "Ruby Developer", Entrant.find(1).name
|
84
|
-
end
|
85
|
-
end
|