Reputation: 81
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