You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用最新Ruby/Debug gem时Rails应用调试冻结问题求助

Rails应用使用Ruby/Debug gem调试时冻结问题

问题现象

  • 使用thor调试应用一切正常,但通过rails server启动调试时,Web应用请求会一直运行直至超时,即使把断点设置在无问题的首页也无法正常触发调试
  • 用相同Ruby/Rails版本创建的全新Rails应用,调试功能完全正常,排除基础环境问题

临时可行方案

目前通过以下命令使用Chrome DevTools可以正常调试:

rdbg -n --open=chrome -c -- bin/rails s

但使用VS Code调试时仍存在相同冻结问题,这只是临时解决办法,并非根本方案。

问题推测

推测问题源于gem冲突,或者application.rb/development.rb中的配置异常。

应用背景

该应用为多年前创建,已持续升级至最新Ruby和Rails版本。

环境信息

  • Ruby版本: 3.3.3
  • Rails版本: 7.1.3.4
  • Rdbg版本: 1.9.2
  • 操作系统: Fedora 38

相关配置文件

Gemfile内容

source 'https://rubygems.org'
ruby "3.3.3"
gem 'rails', '~> 7.1'
gem 'puma'
group :development, :test, :staging do
  gem "debug", ">= 1.0.0", platforms: %i[ mri mingw x64_mingw ]
end
gem 'pg'
gem 'strong_password', platforms: :mri
gem 'cancancan', '~> 3.0'
gem 'devise'
gem 'simple_form'
gem 'devise-encryptable'
gem 'activemodel-serializers-xml'
gem 'globalize', '~> 6.0'
gem 'redcarpet'
gem 'country_select'
gem 'bootstrap-sass', '~> 3'
gem 'font-awesome-rails'
gem 'sass-rails', '~> 5.0'
gem 'sassc-rails', '~> 2.1'
gem 'coffee-rails', '~> 5'
gem 'jquery-rails'
gem 'turbolinks', '~> 5.2'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
gem 'redis', '~> 4.0', require: false
gem 'haml-rails'
gem 'kaminari'
gem 'bcrypt', '~> 3.1.7'
gem 'friendly_id', '~> 5.1'
gem 'exception_notification'
gem 'geocoder'
gem 'pry-rails'
gem 'listen'
gem 'dalli'
gem 'net-smtp'
gem "sprockets-rails"
gem 'psych', '~> 5.0'
gem 'bootsnap', '>= 1.4.2', require: false
group :development, :test, :staging do
  gem 'letter_opener_web', '~> 2.0'
  gem 'launchy'
  gem 'i18n-tasks', '~> 0.9'
  gem 'rack-mini-profiler', require: false
end

group :development do
  gem 'web-console'
  gem 'spring'
  gem 'spring-watcher-listen' # , '~> 2.0.0'
end

group :production, :staging do
  gem "sd_notify"
end

group :test do
  gem 'sqlite3', '~> 1.7'
  gem "rspec-rails"
  gem 'cucumber-rails', :require => false
  gem 'database_cleaner'
  gem 'capybara', ">= 2.15"
  gem 'pickle'
  gem 'capybara-screenshot'
  gem 'aruba'
  gem 'selenium-webdriver'
  gem 'webdrivers'
  gem 'factory_bot_rails'
  gem 'chronic'
  gem 'timecop'
  gem 'rails-controller-testing'
  gem 'stripe-ruby-mock', '~> 3.0.1', :require => 'stripe_mock'
  gem 'simplecov', require: false
end

gem 'sitemap_generator'
gem 'mini_magick'
gem 'carrierwave'
gem 'sidekiq', '~> 6.0'
gem 'record_tag_helper', '~> 1.0'
gem 'browser'
gem 'mini_portile2'
gem 'stripe'
gem 'sinatra', require: false
gem 'slim'
gem 'json', '>= 2.3.0'
gem 'image_processing', '~> 1.2'
# gem 'net-smtp'

application.rb(无注释)

require_relative "boot"
require "rails/all"
require_relative '../lib/middleware/ping'

Bundler.require(*Rails.groups)

module MyApp
  class Application < Rails::Application
    config.load_defaults 6.1
    config.active_support.cache_format_version = 7.0
    config.autoload_lib(ignore: %w(assets tasks))
    config.eager_load_paths << Rails.root.join("lib/**")

    config.autoload_paths += Dir["#{config.root}/lib/**/"]
    config.add_autoload_paths_to_load_path = true

    config.time_zone = 'Europe/Paris'

    config.i18n.available_locales = [:fr, :en, :it, :fa]
    config.i18n.enforce_available_locales = true
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
    config.i18n.default_locale = :fr

    config.encoding = "utf-8"
    config.active_support.escape_html_entities_in_json = true
    config.active_record.timestamped_migrations = false
    config.active_record.schema_format = :ruby
    config.assets.enabled = true

    config.generators do |g|
      g.assets false
      g.test_framework :rpec
      g.fixture_replacement :factory_bot
    end

    config.assets.precompile += ['application.js', 'standard.css', ... ]
    config.assets.version = '1.0'
    config.assets.initialize_on_precompile = false
    config.exceptions_app = self.routes
    config.active_job.queue_name_delimiter = "_"
    config.action_mailer.deliver_later_queue_name = :mailers
    config.action_mailer.default charset: "utf-8"
    config.action_controller.per_form_csrf_tokens = true
    config.action_controller.forgery_protection_origin_check = true
    config.ssl_options = { hsts: { subdomains: true } }
    config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob"
  end
end

development.rb内容

Rails.application.configure do
  config.annotations.register_directories('features')
  config.annotations.register_extensions('feature') { |tag| /#\s*(#{tag}):?\s*(.*)$/ }

  config.hosts += %w(example.com www.example.com)
  config.enable_reloading = true
  config.eager_load = false
  config.consider_all_requests_local = true
  config.server_timing = true

  if Rails.root.join("tmp/caching-dev.txt").exist?
    config.action_controller.perform_caching = true
    config.action_controller.enable_fragment_cache_logging = true
    config.cache_store = :file_store, 'tmp/cache'
    config.public_file_server.headers = {
      "Cache-Control" => "public, max-age=#{2.days.to_i}"
    }
  else
    config.action_controller.perform_caching = false
    config.cache_store = :null_store
  end

  config.active_storage.service = :local
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_caching = false
  config.active_support.deprecation = :log
  config.active_support.disallowed_deprecation = :raise
  config.active_support.disallowed_deprecation_warnings = []
  config.active_record.migration_error = :page_load
  config.active_record.verbose_query_logs = true
  config.active_job.queue_adapter = :sidekiq
  config.action_mailer.delivery_method = :letter_opener
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default_url_options = { host: "https://tripa.com" }
  config.action_dispatch.best_standards_support = :builtin
  config.assets.compress = false
  config.assets.digest = false
  config.assets.debug = false
  config.assets.quiet = true
  config.middleware.use ExceptionNotification::Rack,
                        email: {
                          sender_address: 'me@site.com',
                          exception_recipients: 'me@site.com'
                        }

  config.file_watcher = ActiveSupport::EventedFileUpdateChecker
  config.log_level = :debug
  config.sass.inline_source_maps = true
  config.sass.line_comments = false
end

我发现并非只有我遇到这个新版Ruby/Debug gem的问题。

内容的提问来源于stack exchange,提问作者Reza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:45:57