rails/railties/CHANGELOG.md
Jorge Manrubia a0f18e6090
Make test file patterns configurable via Environment variables
This makes test file patterns configurable via two environment variables:
`DEFAULT_TEST`, to configure files to test, and `DEFAULT_TEST_EXCLUDE`,
to configure files to exclude from testing.

These values were hardcoded before, which made it difficult to add
new categories of tests that should not be executed by default (e.g:
smoke tests).

It uses environment variables instead of regular Rails config options
because Rails environment is not available when the Runner builds the
list of files to test (unless using Spring). A nicer solution would be
making sure that the Rails environment is always loaded when the runner
starts. This is a first simple step to make these paths configurable for
now

This way at least you could override defaults in `config/boot.rb`:

```ruby
ENV["DEFAULT_TEST_EXCLUDE"] = "test/{dummy,smoke,system}/**/*_test.rb
```

Co-authored-by: Jeremy Daer <jeremydaer@gmail.com>
2020-05-07 01:04:01 +02:00

6.3 KiB

  • Make test file patterns configurable via Environment variables

    This makes test file patterns configurable via two environment variables: DEFAULT_TEST, to configure files to test, and DEFAULT_TEST_EXCLUDE, to configure files to exclude from testing.

    These values were hardcoded before, which made it difficult to add new categories of tests that should not be executed by default (e.g: smoke tests).

    Jorge Manrubia

  • No longer include rake rdoc task when generating plugins.

    To generate docs, use the rdoc lib command instead.

    Jonathan Hefner

  • Allow relative paths with trailing slashes to be passed to rails test.

    Eugene Kenny

  • Add rack-mini-profiler gem to the default Gemfile.

    rack-mini-profiler displays performance information such as SQL time and flame graphs. It's enabled by default in development environment, but can be enabled in production as well. See the gem README for information on how to enable it in production.

    Osama Sayegh

  • rails stats will now count TypeScript files toward JavaScript stats.

    Joshua Cody

  • Run git init when generating plugins.

    Opt out with --skip-git.

    OKURA Masafumi

  • Add benchmark generator.

    Introduce benchmark generator to benchmark Rails applications.

    rails generate benchmark opt_compare

    This creates a benchmark file that uses benchmark-ips. By default, two code blocks can be benchmarked using the before and after reports.

    You can run the generated benchmark file using: ruby script/benchmarks/opt_compare.rb

    Kevin Jalbert, Gannon McGibbon

  • Cache compiled view templates when running tests by default.

    When generating a new app without --skip-spring, caching classes is disabled in environments/test.rb. This implicitly disables caching view templates too. This change will enable view template caching by adding this to the generated environments/test.rb:

    config.action_view.cache_template_loading = true
    

    Jorge Manrubia

  • Introduce middleware move operations.

    With this change, you no longer need to delete and reinsert a middleware to move it from one place to another in the stack:

    config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns
    

    This will move the Magical::Unicorns middleware before ActionDispatch::Flash. You can also move it after with:

    config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns
    

    Genadi Samokovarov

  • Generators that inherit from NamedBase respect --force option.

    Josh Brody

  • Allow configuration of eager_load behaviour for rake environment:

    config.rake_eager_load
    

    Defaults to false as per previous behaviour.

    Thierry Joyal

  • Ensure Rails migration generator respects system-wide primary key config.

    When rails is configured to use a specific primary key type:

    config.generators do |g|
      g.orm :active_record, primary_key_type: :uuid
    end
    

    Previously:

    $ bin/rails g migration add_location_to_users location:references
    

    The references line in the migration would not have type: :uuid. This change causes the type to be applied appropriately.

    Louis-Michel Couture, Dermot Haughey

  • Deprecate Rails::DBConsole#config.

    Rails::DBConsole#config is deprecated without replacement. Use Rails::DBConsole.db_config.configuration_hash instead.

    Eileen M. Uchitelle, John Crepezzi

  • Rails.application.config_for merges shared configuration deeply.

    # config/example.yml
    shared:
      foo:
        bar:
          baz: 1
    development:
      foo:
        bar:
          qux: 2
    
    # Previously
    Rails.application.config_for(:example)[:foo][:bar] #=> { qux: 2 }
    
    # Now
    Rails.application.config_for(:example)[:foo][:bar] #=> { baz: 1, qux: 2 }
    

    Yuhei Kiriyama

  • Remove access to values in nested hashes returned by Rails.application.config_for via String keys.

    # config/example.yml
    development:
      options:
        key: value
    
    Rails.application.config_for(:example).options
    

    This used to return a Hash on which you could access values with String keys. This was deprecated in 6.0, and now doesn't work anymore.

    Étienne Barrié

  • Configuration files for environments (config/environments/*.rb) are now able to modify autoload_paths, autoload_once_paths, and eager_load_paths.

    As a consequence, applications cannot autoload within those files. Before, they technically could, but changes in autoloaded classes or modules had no effect anyway in the configuration because reloading does not reboot.

    Ways to use application code in these files:

    • Define early in the boot process a class that is not reloadable, from which the application takes configuration values that get passed to the framework.

      # In config/application.rb, for example.
      require "#{Rails.root}/lib/my_app/config"
      
      # In config/environments/development.rb, for example.
      config.foo = MyApp::Config.foo
      
    • If the class has to be reloadable, then wrap the configuration code in a to_prepare block:

      config.to_prepare do
        config.foo = MyModel.foo
      end
      

      That assigns the latest MyModel.foo to config.foo when the application boots, and each time there is a reload. But whether that has an effect or not depends on the configuration point, since it is not uncommon for engines to read the application configuration during initialization and set their own state from them. That process happens only on boot, not on reloads, and if that is how config.foo worked, resetting it would have no effect in the state of the engine.

    Allen Hsu & Xavier Noria

  • Support using environment variable to set pidfile.

    Ben Thorner

Please check 6-0-stable for previous changes.