Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Facilitate use of any regular ERB in database.yml #46134

Merged
merged 1 commit into from
Sep 27, 2022

Commits on Sep 27, 2022

  1. Facilitate use of any regular ERB in database.yml

    Commit 37d1429 introduced the DummyERB to avoid loading the environment when
    running `rake -T`.
    
    The DummyCompiler simply replaced all output from `<%=` with a fixed string and
    removed everything else. This worked okay when it was used for YAML values.
    When using `<%=` within a YAML key, it caused an error in the YAML parser,
    making it impossible to use ERB as you would expect. For example a
    `database.yml` file containing the following should be possible:
    
      development:
        <% 5.times do |i| %>
        shard_<%= i %>:
          database: db/development_shard_<%= i %>.sqlite3
          adapter: sqlite3
        <% end %>
    
    Instead of using a broken ERB compiler we can temporarily use a
    `Rails.application.config` that does not raise an error when configurations are
    accessed which have not been set as described in rails#35468.
    
    This change removes the `DummyCompiler` and uses the standard `ERB::Compiler`.
    It introduces the `DummyConfig` which delegates all known configurations to the
    real `Rails::Application::Configuration` instance and returns a dummy string for
    everything else. This restores the full ERB capabilities without compromising on
    speed when generating the rake tasks for multiple databases.
    
    Deprecates `config.active_record.suppress_multiple_database_warning`.
    eikes committed Sep 27, 2022
    Configuration menu
    Copy the full SHA
    5ba8aa5 View commit details
    Browse the repository at this point in the history