aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/tasks
Commit message (Collapse)AuthorAgeFilesLines
* Remove `DEFAULT_CHARSET` and `DEFAULT_COLLATION` in `MySQLDatabaseTasks`Ryuta Kamizono2015-11-021-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit f6ca7e4e75408bc42f515fc7206d6c6ff0dce7c6. The default collation of utf8 in MySQL is the `utf8_general_ci`, and this should not be changed. This is because, the better collation in the all locales is not exists, optimal collation in own application is not known other than themselves. The `utf8_unicode_ci` is known as Japanese killer in Japan, there are serious impacts in search of Japanese. MySQL implements the `utf8_unicode_ci` according to the Unicode Collation Algorithm (UCA) described at http://www.unicode.org/reports/tr10/, but the `utf8_unicode_ci` have only partial support for the UCA, only primary level key comparison implemented (also known as L1 (Base characters) comparison). Because L1 (Base characters) comparison does not distinguish between the presence or absence of the accent, if distinction of the accent is important there is a serious impact (e.g. Japanese). Example: ``` > SHOW CREATE TABLE `dicts`\G *************************** 1. row *************************** Table: dicts Create Table: CREATE TABLE `dicts` ( `word` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `meaning` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 1 row in set (0.00 sec) > INSERT INTO `dicts` VALUES ('ハハ', 'mother'), ('パパ', 'father'); Query OK, 2 rows affected (0.00 sec) > SELECT * FROM `dicts` WHERE `word` = 'ハハ'; +--------+---------+ | word | meaning | +--------+---------+ | ハハ | mother | | パパ | father | +--------+---------+ 2 rows in set (0.00 sec) > CREATE UNIQUE INDEX `unique_index_word` ON `dicts`(`word`); ERROR 1062 (23000): Duplicate entry 'ハハ' for key 'unique_index_word' ``` We should omit the collation entirely rather than providing a default. Then the choice is the responsibility of the server and MySQL distribution.
* Exit with non-zero status when db:drop failsJay Hayes2015-10-201-1/+2
| | | | | | | | | | | * If the drop task fails for a reason other than the database not existing, processing should end. This is indicated by a non-zero exit status. * Since the backtrace is already printed to screen, we forgo printing it again by using an explicit call to `exit`. * :warning: This modifies the behavior of the db:create task slightly in that the stack trace is no longer printed by default. If the `--trace` option is used, it will print the trace _after_ the error message.
* Exit with non-zero status when db:create failsJay Hayes2015-10-201-1/+2
| | | | | | | | | | | * If the create task fails for a reason other than the database already existing, processing should end. This is indicated by a non-zero exit status. * Since the backtrace is already printed to screen, we forgo printing it again by using an explicit call to `exit`. * :warning: This modifies the behavior of the db:create task slightly in that the stack trace is no longer printed by default. If the `--trace` option is used, it will print the trace _after_ the error message.
* Fix test of drop failureJay Hayes2015-10-201-1/+5
| | | | | | | * Previously the sqlite3 adapter could not "fail" on drop. Now an error is raised when no file exists. * Also updates purge to be resilient of drop failures. This is how purge is expected to behave.
* applies new doc guidelines to Active Record.Yves Senn2015-10-141-2/+2
| | | | | | | | | | | | | | | | | | | The focus of this change is to make the API more accessible. References to method and classes should be linked to make it easy to navigate around. This patch makes exzessiv use of `rdoc-ref:` to provide more readable docs. This makes it possible to document `ActiveRecord::Base#save` even though the method is within a separate module `ActiveRecord::Persistence`. The goal here is to bring the API closer to the actual code that you would write. This commit only deals with Active Record. The other gems will be updated accordingly but in different commits. The pass through Active Record is not completely finished yet. A follow up commit will change the spots I haven't yet had the time to update. /cc @fxn
* fix RDoc list markup in `DatabaseTasks`. [ci skip]Yves Senn2015-10-141-7/+7
|
* Remove deprecated pg_dump -i flagPaul Sadauskas2015-10-101-1/+1
|
* Merge pull request #20569 from theSteveMitchell/masterYves Senn2015-09-221-9/+18
|\ | | | | | | Check mysql structure_load for errors
| * Check response of structure_load for mysql_database_tasks and make ↵Steve Mitchell2015-09-181-9/+19
|/ | | | structure_dump consistent
* Merge pull request #20848 from ↵Arthur Nogueira Neves2015-09-141-1/+1
|\ | | | | | | | | deivid-rodriguez/fix_undefined_method_error_on_exception Fix undefined method error on exception
| * Fix undefined method error on exceptionDavid Rodríguez2015-07-111-1/+1
| | | | | | | | | | | | The `error` method is not defined, in general, for exceptions. Instead, print the exception message. This error was hiding actual meaningful DB configuration errors. See http://stackoverflow.com/questions/18774463.
* | Remove dead codeRafael Mendonça França2015-09-091-6/+0
| | | | | | | | Usage was removed in 5c4495538b
* | Allow global migrations_path configuration with using value from ↵Tobias Bielohlawek2015-09-071-1/+1
| | | | | | | | database_tasks instead of Migrator
* | Merge pull request #17885 from starbelly/patch-1Yves Senn2015-08-111-8/+20
|\ \ | |/ |/| | | | | | | | | Add method to run command-line db apps Conflicts: activerecord/CHANGELOG.md
| * Add run_cmd class method to ActiveRecord::Tasks::DatabaseTasksstarbelly2015-08-012-11/+25
|/ | | | | | | | | | - Added run_cmd() class method to dry up Kernel.system() messages within this namespace and avoid shell expansion by passing a list of arguments instead of a string - Update structure_dump, structure_load, and related tests units to pass a list of params instead of using a string to avoid shell expansion
* Changed mysqldump to include sprocs and functionsJonathan Worek2015-05-221-0/+1
|
* Add full set of MySQL CLI options to support SSL authentication when using ↵Alex Coomans2015-05-121-9/+15
| | | | db:structure dump and load
* Avoid loading user's psqlrc when loading test structureJason Weathered2015-03-251-1/+1
|
* Add config.active_record.dump_schemas.Ryan Wallace2015-03-171-1/+9
| | | | | | | Fixes db:structure:dump when using schema_search_path and PostgreSQL extensions. Closes #17157.
* Fixes reference for schema_format to AR::Base from AS::BaseJames Cox2015-03-031-1/+1
|
* Fix syntax warningSean Griffin2014-12-231-1/+1
| | | | This isn't Seattle.rb, @senny. ;)
* Replace deprecated `#load_schema` with `#load_schema_for`.Yves Senn2014-12-231-22/+19
|
* `db:structure:load` and `db:schema:load` no longer purge the database.Yves Senn2014-12-181-2/+0
| | | | | | | | | | | | | | | | | Closes #17945 `db:test:prepare` still purges the database to always keep the test database in a consistent state. This patch introduces new problems with `db:schema:load`. Prior to the introduction of foreign-keys, we could run this file against a non-empty database. Since every `create_table` containted the `force: true` option, this would recreate tables when loading the schema. However with foreign-keys in place, `force: true` wont work anymore and the task will crash. /cc @schneems
* activerecord: rake db:create shows underlying error message.Paul Annesley2014-11-041-0/+1
|
* Don't attempt to load the schema file in tests if none existsSean Griffin2014-10-311-2/+17
|
* let's warn with heredocsXavier Noria2014-10-281-3/+6
| | | | | | | | | | | | The current style for warning messages without newlines uses concatenation of string literals with manual trailing spaces where needed. Heredocs have better readability, and with `squish` we can still produce a single line. This is a similar use case to the one that motivated defining `strip_heredoc`, heredocs are super clean.
* schema loading rake tasks maintain database connection for current env.Yves Senn2014-09-031-0/+2
| | | | | | | | | | [Joshua Cody & Yves Senn] Closes #16757. Prior to this patch schema loading rake tasks had the potential to leak a connection to a different database. This had side-effects when rake tasks operating on the current connection (like `db:seed`) were chained.
* Forgot to set Migration.verbose at f8d9a51949d6f6cfcab7cc7d501e137836eb88dc ↵Akira Matsuda2014-08-301-1/+1
| | | | :bomb:
* Don't allow AR::Tasks::DatabaseTasks.migrate to mutate Migration.verbose valueAkira Matsuda2014-08-301-1/+3
| | | | This fixes random test failure in migrator_test.rb
* Avoid using heredoc for user warningsGodfrey Chan2014-08-281-4/+4
| | | | | | | | | | Using heredoc would enforce line wrapping to whatever column width we decided to use in the code, making it difficult for the users to read on some consoles. This does make the source code read slightly worse and a bit more error-prone, but this seems like a fair price to pay since the primary purpose for these messages are for the users to read and the code will not stick around for too long.
* Using delegated connection methodJoshua Delsman2014-08-081-1/+1
|
* schema rake tasks are specific about the configuration to act on.Yves Senn2014-08-061-3/+20
| | | | | | | | | | The rake tasks and the `DatabaseTakss` adapter classes used to assume a configuration at some places. This forced the rake tasks to establish a specific connection before calling into `load_schema`. After #15394 this started to cause issues because it could `purge` the wrong database before loading the schema.
* Revert "Revert "Merge pull request #15394 from ↵Yves Senn2014-08-062-1/+7
| | | | | | morgoth/fix-automatic-maintaining-test-schema-for-sql-format"" This reverts commit 5c87b5c5248154cf8aa76cce9a24a88769de022d.
* Add ActiveRecord::Tasks::DatabaseTasks.migrateJack Danger Canty2014-07-311-0/+10
| | | | | | This extracts the logic that was embedded in a Rake task into a static method. Bonus: the first test for `rake db:migrate`
* Merge pull request #16295 from kenn/no_stacktrace_drop_taskRafael Mendonça França2014-07-281-0/+2
|\ | | | | | | No verbose backtrace by db:drop when database does not exist.
| * No verbose backtrace by db:drop when database does not exist.Kenn Ejima2014-07-271-0/+2
|/
* fix, mysql `db:purge` respects `Rails.env`.Yves Senn2014-07-241-1/+1
| | | | | | | | | | | | | | | | | | | | Previously this method always established a connection to the test database. This resulted in buggy behavior when combined with other tasks like `bin/rake db:schema:load`. This was one of the reasons why #15394 (22e9a91189af2c4e6217a888e77f22a23d3247d1) was reverted: > I’ve replicated it on a new app by the following commands: 1) rails generate model post:title, 2) rake db:migrate, 3) rake db:schema:load, 4) rails runner ‘puts Post.first’. The last command goes boom. Problem is that rake db:schema:load wipes the database, and then doesn’t actually restore it. This is all on MySQL. There’s no problem with SQLite. -- DHH https://github.com/rails/rails/commit/22e9a91189af2c4e6217a888e77f22a23d3247d1#commitcomment-6834245
* Revert "Merge pull request #15394 from ↵Rafael Mendonça França2014-07-022-7/+1
| | | | | | | | | | morgoth/fix-automatic-maintaining-test-schema-for-sql-format" This reverts commit 46139d33c06715e74ad450428ece3ee84da98579, reversing changes made to 8f247871bb18b2e3036a05df5f62cbfe3b402586. Conflicts: activerecord/CHANGELOG.md
* Get rid of duplication in db:fixtures:{identify,load}Viktar Basharymau2014-06-271-1/+5
|
* add `bin/rake db:purge` task to empty the current database.Yves Senn2014-06-171-0/+12
|
* /mysql/i -> MySQL, Spell correct in continuation to #15555Akshay Vishnoi2014-06-141-1/+1
|
* Specifically talking about Rake the library [ci skip]Zachary Scott2014-06-131-2/+1
|
* Fixed automatic maintaining test schema to properly handle sql structure ↵Wojciech Wnętrzak2014-06-122-1/+7
| | | | | | | | | schema format. Additionally: * It changes `purge` task on `sqlite3` adapter to recreate database file, to be consistent with other adapters. * Adds `purge` step when loading from `schema.rb`
* use YAML.load_file in database tasks exampleRobin Tweedie2014-04-151-1/+1
| | | | | rather than YAML.load(File.read(path)). YAML.load_file is also used in guides/rails_guides/helper.rb since 2011, the only other precedent I could find.
* create/drop test and development databases only if RAILS_ENV is nilDamien Mathieu2014-01-081-1/+2
| | | | Closes #13625
* Automatically maintain test database schemaJon Leighton2014-01-021-3/+41
| | | | | | | | | | | | | | * Move check from generated helper to test_help.rb, so that all applications can benefit * Rather than just raising when the test schema has pending migrations, try to load in the schema and only raise if there are pending migrations afterwards * Opt out of the check by setting config.active_record.maintain_test_schema = false * Deprecate db:test:* tasks. The test helper is now fully responsible for maintaining the test schema, so we don't need rake tasks for this. This is also a speed improvement since we're no longer reloading the test database on every call to "rake test".
* Cast env to symbol, fixes deprecation warningŁukasz Strzałkowski2013-12-251-1/+1
| | | | | | Warning: DEPRECATION WARNING: Passing a string to ActiveRecord::Base.establish_connection for a configuration lookup is deprecated, please pass a symbol (:development) instead.
* Guarantee the connection resolver handles string valuesJosé Valim2013-12-231-18/+1
| | | | | | | | | This commit also cleans up the rake tasks that were checking for DATABASE_URL in different places. In fact, it would be nice to deprecate DATABASE_URL usage in the long term, considering the direction we are moving of allowing those in .yml files.
* Revert "Explicitly exit with status "1" for create and drop failures"Rafael Mendonça França2013-11-191-3/+0
| | | | | | | | | | This reverts commit 22f80ae57b26907f662b7fd50a7270a6381e527e. See https://github.com/rails/rails/commit/22f80ae57b26907f662b7fd50a7270a6381e527e#commitcomment-4640676 Conflicts: activerecord/CHANGELOG.md
* Merge pull request #12531 from iamvery/database-tasks-exit-statusRafael Mendonça França2013-11-151-0/+3
|\ | | | | | | | | | | | | Explicitly exit with status "1" for create and drop task failures Conflicts: activerecord/CHANGELOG.md