1. 22 2月, 2018 1 次提交
    • E
      Call `YAML.load` correctly · 63d530c5
      eileencodes 提交于
      We should call methods with `.method_name` not `::method_name`. Fix two
      instances of `YAML::load` I found in favor of `YAML.load`.
      63d530c5
  2. 18 1月, 2018 1 次提交
    • E
      Refactor migration to move migrations paths to connection · a2827ec9
      eileencodes 提交于
      Rails has some support for multiple databases but it can be hard to
      handle migrations with those. The easiest way to implement multiple
      databases is to contain migrations into their own folder ("db/migrate"
      for the primary db and "db/seconddb_migrate" for the second db). Without
      this you would need to write code that allowed you to switch connections
      in migrations. I can tell you from experience that is not a fun way to
      implement multiple databases.
      
      This refactoring is a pre-requisite for implementing other features
      related to parallel testing and improved handling for multiple
      databases.
      
      The refactoring here moves the class methods from the `Migrator` class
      into it's own new class `MigrationContext`. The goal was to move the
      `migrations_paths` method off of the `Migrator` class and onto the
      connection. This allows users to do the following in their
      `database.yml`:
      
      ```
      development:
        adapter: mysql2
        username: root
        password:
      
      development_seconddb:
        adapter: mysql2
        username: root
        password:
        migrations_paths: "db/second_db_migrate"
      ```
      
      Migrations for the `seconddb` can now be store in the
      `db/second_db_migrate` directory. Migrations for the primary database
      are stored in `db/migrate`".
      
      The refactoring here drastically reduces the internal API for migrations
      since we don't need to pass `migrations_paths` around to every single
      method. Additionally this change does not require any Rails applications
      to make changes unless they want to use the new public API. All of the
      class methods from the `Migrator` class were `nodoc`'d except for the
      `migrations_paths` and `migrations_path` getter/setters respectively.
      a2827ec9
  3. 14 11月, 2017 1 次提交
    • Y
      Add `environment` as dependency of `load_config` (#31135) · b6d5e463
      Yuji Yaginuma 提交于
      Currently the environment is not loaded in some db tasks.
      Therefore, if use encrypted secrets values in `database.yml`,
      `read_encrypted_secrets` will not be true, so the value can not be
      used correctly.
      
      To fix this, added `environment` as dependency of `load_config`.
      It also removes explicit `environment` dependencies that are no longer
      needed.
      
      Fixes #30717
      b6d5e463
  4. 07 11月, 2017 1 次提交
  5. 21 10月, 2017 1 次提交
  6. 16 10月, 2017 1 次提交
    • B
      Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong... · 99b2bf8d
      bogdanvlviv 提交于
      Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create  wrong ar_internal_metadata's data for a test database.
      
        Before:
        ```
        $ RAILS_ENV=test rails dbconsole
        > SELECT * FROM ar_internal_metadata;
        key|value|created_at|updated_at
        environment|development|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679
        ```
      
        After:
        ```
        $ RAILS_ENV=test rails dbconsole
        > SELECT * FROM ar_internal_metadata;
        key|value|created_at|updated_at
        environment|test|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679
        ```
      
        Fixes #26731.
      99b2bf8d
  7. 20 7月, 2017 1 次提交
  8. 02 7月, 2017 1 次提交
  9. 01 7月, 2017 2 次提交
  10. 28 4月, 2017 1 次提交
  11. 27 3月, 2017 1 次提交
    • P
      Fixes #28359 · 14739b5e
      Philippe Guay 提交于
      Add stronger assertions to rake migration tasks to make sure the user is providing a numeric VERSION
      An empty string was getting converted to version = 0. This would in turn pass the presence check.
      
      Address linting warning
      
      Add test for rake task and refactor code to meet expectations
      In particular passing VERSION=0 should not raise an error.
      
      Addressed Comments for PR #28485. Trimmed empty lines + change of wording for error message
      
      Adjust test for change of wording in error message
      
      Change condition to follow rails idioms
      14739b5e
  12. 04 3月, 2017 1 次提交
  13. 27 2月, 2017 1 次提交
  14. 04 1月, 2017 1 次提交
  15. 02 1月, 2017 1 次提交
    • K
      Dump schema cache for custom connection · 6cd75796
      Kir Shatrov 提交于
      Today `rake db:schema:cache:dump` only supports dumping cache for a
      single connection (`ActiveRecord::Base.connection`). This doesn't work
      for apps with multiple databases.
      
      This PR makes `DatabaseTasks` to provide an API for dumping schema cache
      for any connection.
      6cd75796
  16. 28 11月, 2016 1 次提交
  17. 16 8月, 2016 1 次提交
  18. 08 8月, 2016 1 次提交
  19. 07 8月, 2016 4 次提交
  20. 11 4月, 2016 1 次提交
  21. 10 4月, 2016 1 次提交
  22. 02 4月, 2016 1 次提交
  23. 15 3月, 2016 1 次提交
    • R
      Creates development and test databases in db:migrate task · 6ca9031b
      Rafael Mendonça França 提交于
      This reverts a334425c.
      
      The main reason is that now the workflow is inconsistent when using
      spring.
      
      When using spring `RAILS_ENV` is always set, so only one database is
      created.
      
      This means that in development `bin/rake db:create` and `bundle exec
      rake db:create` have different results.
      
      It also breaks the `bin/setup` script since `bin/rake db:setup
      db:test:prepare` will fail.
      6ca9031b
  24. 24 1月, 2016 1 次提交
    • A
      Add environment back to db:structure:load · 83d2c39d
      Andrew White 提交于
      Because of the changes in #22967 the assumption in #18907 is no longer
      true because the internal metadata feature for Active Record requires
      a working environment.
      83d2c39d
  25. 12 1月, 2016 1 次提交
  26. 08 1月, 2016 1 次提交
    • S
      Prevent destructive action on production database · 900bfd94
      schneems 提交于
      This PR introduces a key/value type store to Active Record that can be used for storing internal values. It is an alternative implementation to #21237 cc @sgrif @matthewd.
      
      It is possible to run your tests against your production database by accident right now. While infrequently, but as an anecdotal data point, Heroku receives a non-trivial number of requests for a database restore due to this happening. In these cases the loss can be large.
      
      To prevent against running tests against production we can store the "environment" version that was used when migrating the database in a new internal table. Before executing tests we can see if the database is a listed in `protected_environments` and abort. There is a manual escape valve to force this check from happening with environment variable `DISABLE_DATABASE_ENVIRONMENT_CHECK=1`.
      900bfd94
  27. 18 12月, 2015 1 次提交
  28. 12 12月, 2015 1 次提交
  29. 06 12月, 2015 1 次提交
  30. 02 11月, 2015 1 次提交
    • Y
      Make `db:migrate:status` to render `1_some.rb` format migrate files. · a7beeb7f
      yui-knk 提交于
      `1_valid_people_have_last_names.rb` and
      `20150823202140_create_users.rb` are valid migration file name.
      But `1_valid_people_have_last_names.rb` is rendered as
      `********** NO FILE **********` when `rake db:migrate:status`.
      
      Fix to this bug, this commit includes
      
      * define some API private methdos and a Constant
        `match_to_migration_filename?`, `parse_migration_filename`, and
        `MigrationFilenameRegexp`
      * use these methods in `db:migrate:status` task
      
      Example:
      
      These files are in `db/migrate`
      
      * 1_valid_people_have_last_names.rb
      * 20150819202140_irreversible_migration.rb
      * 20150823202140_add_admin_flag_to_users.rb
      * 20150823202141_migration_tests.rb
      * 2_we_need_reminders.rb
      * 3_innocent_jointable.rb
      
      we can migrate all of them.
      
      Before
      
      ```shell
      $ bundle exec rake db:migrate:status
      
      ...
      
       Status   Migration ID    Migration Name
      --------------------------------------------------
         up     001             ********** NO FILE **********
         up     002             ********** NO FILE **********
         up     003             ********** NO FILE **********
         up     20150819202140  Irreversible migration
         up     20150823202140  Add admin flag to users
         up     20150823202141  Migration tests
      ```
      
      After
      
      ```shell
      $ bundle exec rake db:migrate:status
      
      ...
      
       Status   Migration ID    Migration Name
      --------------------------------------------------
         up     001             Valid people have last names
         up     002             We need reminders
         up     003             Innocent jointable
         up     20150819202140  Irreversible migration
         up     20150823202140  Add admin flag to users
         up     20150823202141  Migration tests
      ```
      a7beeb7f
  31. 28 10月, 2015 1 次提交
  32. 24 9月, 2015 1 次提交
    • B
      Fix out of sync comment · ca4f1e04
      Brandon Conway 提交于
      It appears that as of version 4 the `db:test:prepare` task no longer depends on the `abort_if_pending_migrations` task, which leaves this comment out of sync.
      ca4f1e04
  33. 23 9月, 2015 1 次提交
    • Y
      introduce `conn.data_source_exists?` and `conn.data_sources`. · 152b85f0
      Yves Senn 提交于
      These new methods are used from the Active Record model layer to
      determine which relations are viable to back a model. These new methods
      allow us to change `conn.tables` in the future to only return tables and
      no views. Same for `conn.table_exists?`.
      
      The goal is to provide the following introspection methods on the
      connection:
      
      * `tables`
      * `table_exists?`
      * `views`
      * `view_exists?`
      * `data_sources` (views + tables)
      * `data_source_exists?` (views + tables)
      152b85f0
  34. 07 9月, 2015 2 次提交
  35. 30 6月, 2015 1 次提交