Rails Environment Task
In a Rails task if you need to load in your rails application (to get access to your models, etc.), you have to call :environment in the task:
task task_name: :environment do 
  ...
end
I kind of always took this for granted, and never thought much about it. Then, in Xavier Noria's 2024 Rails World talk he mentioned that :environment itself is a task - and that syntax is actually saying your task depends upon :environment and run that task before your task runs. 🤯
So I decided to look up what the environment task actually does:
task :environment do
  ActiveSupport.on_load(:before_initialize) { config.eager_load = config.rake_eager_load }
  require_environment!
end
require_environment! ... requires your environment, specifically it requires your config/environment.rb which runs Rails.application.initialize! - which is what actually starts your rails app.
Cool!
Tweet