railsadminteam/rails_admin · warning

The total_columns_width configuration option is deprecated a

Error message

The total_columns_width configuration option is deprecated and has no effect.

What it means

RailsAdmin 3.x replaced the old fixed-width list table layout. The global total_columns_width= setter (lib/rails_admin/config.rb:287) was kept only as a no-op that emits an ActiveSupport::Deprecation warning, so old initializers do not crash. The value you pass is discarded — column widths are now handled by CSS/scrolling in the redesigned list view.

Source

Thrown at lib/rails_admin/config.rb:287

          @default_hidden_fields = fields
        end
      end

      def parent_controller=(name)
        @parent_controller = name

        if defined?(RailsAdmin::ApplicationController) || defined?(RailsAdmin::MainController)
          RailsAdmin::Config::ConstLoadSuppressor.allowing do
            RailsAdmin.send(:remove_const, :ApplicationController)
            RailsAdmin.send(:remove_const, :MainController)
            load RailsAdmin::Engine.root.join('app/controllers/rails_admin/application_controller.rb')
            load RailsAdmin::Engine.root.join('app/controllers/rails_admin/main_controller.rb')
          end
        end
      end

      def total_columns_width=(_)
        ActiveSupport::Deprecation.warn('The total_columns_width configuration option is deprecated and has no effect.')
      end

      def sidescroll=(_)
        ActiveSupport::Deprecation.warn('The sidescroll configuration option was removed, it is always enabled now.')
      end

      # Setup actions to be used.
      def actions(&block)
        return unless block

        RailsAdmin::Config::Actions.reset
        RailsAdmin::Config::Actions.instance_eval(&block)
      end

      # Returns all model configurations
      #
      # @see RailsAdmin::Config.registry
      def models

View on GitHub (pinned to 0690a5e62f)

Solutions

  1. Delete the `config.total_columns_width = ...` line from the initializer — there is no replacement because the option has no effect anymore.
  2. If column width control is genuinely needed, do it with custom CSS targeting the new list view (e.g. overriding width of sticky columns) instead of the config option.
  3. Grep the initializer directory for other removed 2.x options (sidescroll, momentjs_format, total_columns_width) in the same pass so you fix them together.

Example fix

# before: config/initializers/rails_admin.rb
RailsAdmin.config do |config|
  config.total_columns_width = 130
end

# after: option removed, nothing replaces it
RailsAdmin.config do |config|
  # list column widths are now CSS-driven; no config needed
end
Defensive patterns

Strategy: validation

Validate before calling

# Audit initializers for removed rails_admin 2.x options before/after upgrades
removed = %w[total_columns_width sidescroll]
Dir[Rails.root.join('config/initializers/*.rb')].each do |path|
  text = File.read(path)
  removed.each { |opt| puts "#{path}: remove deprecated `#{opt}`" if text =~ /config\.#{opt}\s*=/ }
end

Prevention

When it happens

Trigger: Any initializer (config/initializers/rails_admin.rb) still containing `config.total_columns_width = <number>` (e.g. 130). The warning prints once when the initializer is evaluated at boot, and again per process restart / precompile run.

Common situations: Upgrading rails_admin 2.x → 3.x with an initializer written against the old table-layout API; copying a legacy initializer from another project; deprecation warnings treated as errors in CI (ActiveSupport::Deprecation.behavior = :raise) making the build fail.

Related errors


AI-assisted analysis of railsadminteam/rails_admin@0690a5e62f (2026-08-21). Data as JSON: /api/errors/1b86b038730dbdb7. Report an issue: GitHub.