Project

initialize

0.0
No commit activity in last 3 years
No release in over 3 years
Ruby gem to completely customize the execution order of Rails config initializers.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.10
~> 10.0
 Project Readme

initialize Gem version

Ruby gem to completely customize the execution order of Rails config initializers.

Installation

Add this line to your application's Gemfile:

gem 'initialize'

And then execute:

$ bundle install

Usage

For example, say you have the following Ruby on Rails application:

├── app
├── bin
├── config
│   ├── environments
│   ├── initializers
│   │   ├── assets.rb
│   │   ├── backtrace_silencers.rb
│   │   ├── configure_rollbar.rb
│   │   ├── filter_parameter_logging.rb
│   │   ├── inflections.rb
│   │   ├── init_hub_settings.rb
│   │   ├── load_extensions.rb
│   │   ├── mime_types.rb
│   │   ├── schedule_app_launches.rb
│   │   ├── schedule_app_upgrades.rb
│   │   ├── schedule_hub_upgrades.rb
│   │   ├── schedule_ngrok.rb
│   │   ├── schedule_task_executions.rb
│   │   ├── session_store.rb
│   │   └── wrap_parameters.rb
│   ├── application.rb
│   ├── boot.rb
│   ├── database.yml
│   ├── environment.rb
│   ├── routes.rb
│   └── secrets.yml
├── db
├── lib
├── public
├── Gemfile
├── Gemfile.lock
├── Rakefile
└── README.md

By default, Rails will run the files in config/initializers in alphabetical (filename) order, which isn't always what you want. To get around this, the Rails team suggests prefixing initializer filenames with a numeric value, but such a solution is not the most elegant in my opinion.

With this gem, elegant control is back in your hands; you can define an initializers array in config/application.rb like so:

class Application < Rails::Application
  config.initializers = [
    "assets",
    "backtrace_silencers",
    "filter_parameter_logging",
    "inflections",
    "mime_types",
    "session_store",
    "wrap_parameters",
    "load_extensions",
    "init_hub_settings",
    "configure_rollbar",
    "schedule_ngrok",
    "schedule_hub_upgrades",
    "schedule_app_upgrades",
    "schedule_app_launches",
    "schedule_task_executions"
  ]
end

Notice how the ordering of initializers is not alphabetical? When the application starts, initializers will run in the order that they appear in the array!

Additionally, this opens up interesting possibilities for your Rails application, like (for example) enabling/disabling specific initializers based on some condition determined at runtime.