• E
    Add support for horizontal sharding · 384e7d13
    eileencodes 提交于
    Applications can now connect to multiple shards and switch between
    their shards in an application. Note that the shard swapping is
    still a manual process as this change does not include an API for
    automatic shard swapping.
    
    Usage:
    
    Given the following configuration:
    
    ```yaml
    production:
      primary:
        database: my_database
      primary_shard_one:
        database: my_database_shard_one
    ```
    
    Connect to multiple shards:
    
    ```ruby
    class ApplicationRecord < ActiveRecord::Base
      self.abstract_class = true
    
      connects_to shards: {
        default: { writing: :primary },
        shard_one: { writing: :primary_shard_one }
      }
    ```
    
    Swap between shards in your controller / model code:
    
    ```ruby
      ActiveRecord::Base.connected_to(shard: :shard_one) do
        # Read from shard one
      end
    ```
    
    The horizontal sharding API also supports read replicas. See
    guides for more details.
    
    This PR also moves some no-doc'd methods into the private namespace as
    they were unnecessarily public. We've updated some error messages and
    documentation.
    Co-authored-by: NJohn Crepezzi <john.crepezzi@gmail.com>
    384e7d13
connection_handling.rb 11.8 KB