Reza
Reza

Reputation: 81

Rails freezes during debugging

My Rails app freezes when I use the latest Ruby/Debug gem.

Debug works when I use thor on my app, but when I want to use it on my app (rails server) it freezes. By "freezing I mean the request in my webapp runs until it times out. As to the break point, I've put it at the safest place to just get the debugger working. In the home page where I've no problem.
It works also when I create a new app with the same Ruby/Rails versions.

Since the first version of my question I managed to make it work with "chrome devtool" by running the following line:

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

But when I run it with vscode I get the same freezing problem. Even though I can now debug with chrome devtool I consider it as a workaround b/c something seems to be wrong in my config.

My app is built originally some years ago and I've constantly "upgraded" it to the new Ruby & Rails versions. It seems that there's some conflict either one or more gems and the 'debug' gem or something wrong in my configs (application.rb / development.rb).

Some details:

I attach here my Gemfile, application.rb & development.rb.

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'

My config file w/o comments. application.rb:

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

Bundler.require(*Rails.groups)

module MyApp
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    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

And my 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: '[email protected]',
                          exception_recipients: '[email protected]'
                        }

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

I have noticed that I'm not alone to to have the problem with the new Ruby/Ddebug gem.

Upvotes: 0

Views: 145

Answers (0)

Related Questions