Gems can configure their host apps by providing a Railtie.
For example, here is a shortened version of how the BetterErrors gem does it:
module BetterErrors
class Railtie < Rails::Railtie
initializer "better_errors.configure_rails_initialization" do
Rails.application.middleware.use BetterErrors::Middleware
end
end
end