Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Khắc phục lỗi không dừng lại ở breakpoint khi debug Rails 5 trên IDE - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

Vấn đề / Problem

Như các bạn đã biết, việc gỡ lỗi (debug) là một phần quan trọng và thường xuyên trong công việc của lập trình viên. Nó giúp chúng ta xác định và khắc phục lỗi trong quá trình phát triển phần mềm. Tôi đã gặp một tình huống khi thực hiện việc gỡ lỗi trên một ứng dụng web được xây dựng trên framework Ruby on Rails phiên bản 5.2. Vấn đề xuất phát từ việc không thể dừng tại các điểm breakpoint khi sử dụng môi trường phát triển (IDE) với phiên bản Rails 5 (thay vì phiên bản Rails 4).

Môi trường của mình như sau:

Nguyên nhân / Cause

Nguyên nhân của vấn đề là từ Rails 5.2.0 đến 5.2.1, Rails sử dụng bootsnap để tăng tốc cho framework của mình bằng cách sử dụng caching. Nhưng vô tính nó làm vô hiệu quá các điểm breakpoint trên IDE.

Giải pháp / Khắc phục

Nếu bạn vẫn đang sử dụng Rails version 5.2.0 và 5.2.1 thì bạn hãy comment dòng sau ở file [app root]/config/boot.rb

require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

Chú ý: thật may mắn là Rails đã xử lý vấn đề này ở phiên bản mới nhất 5.2.2.( ruby/ruby@b85b10c).

Vì vậy chúng ta có 1 giải pháp khắc phục nữa là, chỉ thay đoạn code trên bằng:

unless ( (('2.5.0'..'2.5.1').include? RUBY_VERSION) && defined?(Debugger) )
    require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
end

Nó sẽ chỉ require bootsnap khi ở các version bị lỗi.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *