Computer >> Máy Tính >  >> Lập trình >> Ruby

7 viên ngọc Ruby tuyệt vời mà hầu hết mọi người chưa từng nghe về

Những viên ngọc Ruby tốt nhất mà bạn có thể sử dụng trong các dự án Rails của mình là gì?

Đó là những gì bạn sẽ khám phá trong bài viết này!

Tôi sẽ tặng bạn 7 viên ngọc, nhưng không phải những viên ngọc cũ mà bạn đã thấy hàng triệu lần , Tôi sẽ chia sẻ với bạn một số đá quý rất hữu ích nhưng ít được biết đến.

Nhưng trước khi chúng tôi làm điều đó…

Một cảnh báo.

Tôi đã thấy các nhà phát triển kiếm được một viên ngọc quý về mọi thứ.

Nếu từ xa nghe có vẻ như nó có thể hữu ích.

Không cần mất một chút thời gian để suy nghĩ xem viên đá quý đó có giải quyết được vấn đề mà họ gặp phải hay không, liệu đó có phải là lựa chọn tốt nhất, được bảo trì và ghi chép cẩn thận, v.v.

Đó là một sai lầm.

Tại sao?

Bởi vì dự án của bạn càng phụ thuộc vào nhiều thứ, thì càng có nhiều khả năng bị phá vỡ khi mọi thứ thay đổi.

Và mọi thứ luôn thay đổi.

Phiên bản Rails mới, phiên bản Ruby mới, các tính năng mới, v.v.

Với điều đó đã nói…

Đá quý có thể giúp bạn tiết kiệm rất nhiều công việc, giúp bạn làm sạch mã và tránh các vấn đề bảo mật, vì vậy hãy sử dụng chúng một cách khôn ngoan!

Bây giờ :

Hãy vào danh sách.

1. Tìm các tuyến đường chết để giữ cho mã của bạn sạch sẽ

Khi ứng dụng Rails của bạn phát triển, bạn sẽ tích lũy ngày càng nhiều tuyến đường.

Bạn sẽ thay đổi mã và một số tuyến đường này trở nên cũ kỹ .

Không còn cần thiết…

Nhưng chúng sẽ ở đó, trong config/routes.rb của bạn , khiến việc quản lý trở nên khó khăn hơn.

Làm cách nào để bạn tìm thấy những tuyến đường cần xóa?

Có một viên ngọc có tên là traceroute .

Nó tải các tuyến đường của bạn và so sánh chúng với các hành động của bộ điều khiển mà bạn đã xác định.

Nhưng hiện tại nó có hai hạn chế :

  1. Nó không hoạt động với Rails 6
  2. Nó không phát hiện ra các hành động ngầm của người điều khiển

Tôi đã gửi một yêu cầu kéo để thêm hỗ trợ Rails 6, nhưng tôi cũng đã nghĩ ra phiên bản của riêng mình không có những hạn chế này.

Bạn có thể tìm thấy nó ở đây.

2. Giúp cho quá trình di chuyển của bạn an toàn hơn để bạn có thể tránh được các vấn đề

Việc di chuyển đường ray có thể gây ra nhiều vấn đề nếu thực hiện sai.

Ví dụ :

Việc xóa một cột có thể gây ra sự cố vì Rails có bộ nhớ cache của các cột và việc chạy quá trình di chuyển sẽ không đặt lại bộ nhớ cache này.

Một ví dụ khác :

Nếu bạn thêm chỉ mục và bạn đang chạy PostgreSQL, toàn bộ bảng sẽ bị khóa cho đến khi hoạt động hoàn tất.

Không tốt cho người dùng của bạn.

Ứng dụng của bạn sẽ không thể phản hồi các yêu cầu cần hoạt động với một bảng bị khóa.

Tin tốt?

Bạn không cần phải nhớ tất cả những điều này.

Với sự trợ giúp của strong_migrations gem, bạn sẽ biết khi nào bạn có một trong những lần di chuyển không an toàn này trước khi nó được đưa vào sản xuất.

3. Ngăn chặn các giao dịch không an toàn

Một giao dịch Rails được cho là một hoạt động “tất cả hoặc không có gì”.

Có vẻ như thế này :

Book.transaction do
  # ...
end

Nhưng nếu bạn thực hiện những việc nằm ngoài transaction kiểm soát, chẳng hạn như ghi vào một tệp hoặc thực hiện một yêu cầu API, thì hiệu ứng “tất cả hoặc không có gì” này không còn đúng nữa.

Như bạn có thể tưởng tượng, điều này dẫn đến tất cả các loại vấn đề.

Giải pháp là gì?

Thực ra, không phải là công nghệ cao, chỉ cần tránh “tác dụng phụ” hoặc làm những điều ảnh hưởng đến “thế giới bên ngoài” của giao dịch.

Đá quý cách ly có thể giúp thực hiện việc này.

Nó kiểm tra tất cả các giao dịch của bạn để đảm bảo chúng an toàn.

Tất cả những gì bạn phải làm là cài đặt gem, sau đó khi nó phát hiện thấy một transaction xấu nó sẽ đưa ra một ngoại lệ.

Hãy thử!

4. Tìm bài kiểm tra chậm của bạn và làm cho chúng nhanh hơn

Kiểm tra chậm không có gì thú vị.

Tuy nhiên, có những công cụ giúp bạn tìm ra lý do tại sao kiểm tra của bạn chậm để bạn có thể khắc phục chúng!

Một trong những công cụ này là sự kết hợp của test-prof + ruby-prof .

Đây là cách sử dụng nó :

TEST_RUBY_PROF=1 rake

Kết quả đầu ra :

%self       total       self         wait        child       calls   name
 43.21      2.001     2.001     0.000     0.000        1     Kernel#sleep
   2.97      0.184     0.138     0.000     0.046     1640   Array#permutation
   1.39      0.064     0.064     0.000     0.000      144   PG::Connection#async_exec

Tại đây, tôi có thể thấy rõ cuộc gọi của mình tới sleep , nhưng đây có thể dễ dàng là một lệnh gọi API, đọc một tệp lớn, một truy vấn SQL chậm, v.v.

Một điều khác bạn có thể làm là sử dụng trình mô tả sự kiện.

Như thế này :

EVENT_PROF='sql.active_record' EVENT_PROF_EXAMPLES=1 rake

Điều này giúp bạn tìm thấy thử nghiệm nào đang chạy các truy vấn chậm nhất.

Btw, Rails 6 đã thêm thử nghiệm song song, bạn phải bật tính năng này trong test/test_helpers.rb nếu bạn đang nâng cấp dự án hiện tại của mình.

5. Làm cho dữ liệu của bạn nhất quán hơn

Xác thực rất tuyệt vời.

Nhưng không quan trọng bạn đang sử dụng khuôn khổ nào để xây dựng ứng dụng web của mình.

Bạn luôn có thể bỏ qua xác thực của mình bằng cách nhập dữ liệu trực tiếp vào cơ sở dữ liệu, tạo bản ghi bằng SQL thô hoặc sử dụng một số phương pháp trong ORM của bạn mà bỏ qua xác thực.

Nói cách khác…

Xác thực của bạn chỉ bảo vệ bạn khỏi lỗi của người dùng chứ không phải lỗi của nhà phát triển.

Những lỗi nhà phát triển này có thể làm cho dữ liệu của bạn không nhất quán.

Tin tốt?

Hầu hết - nếu không phải tất cả - cơ sở dữ liệu SQL hiện đại thực hiện "ràng buộc", một tập hợp các quy tắc như xác nhận hợp lệ, nhưng ở cấp cơ sở dữ liệu.

Vì vậy, nếu bạn muốn tăng tính nhất quán dữ liệu của mình, bạn muốn triển khai các ràng buộc này.

Một đá quý có thể giúp bạn là database_consistency.

Làm thế nào để sử dụng đá quý này?

Trước tiên, bạn cần cài đặt nó, không có gì bí ẩn ở đó.

Thứ hai, bạn chạy bundle exec database_consistency trong thiết bị đầu cuối, bên trong dự án bạn muốn kiểm tra.

Nó sẽ tạo ra một báo cáo như thế này :

fail Comment title column should be required in the database
fail Comment author column should be required in the database

Tiếp theo là gì?

Thêm các ràng buộc cơ sở dữ liệu bị thiếu, trong trường hợp này là not-null, với change_column_null di chuyển.

6. Thời gian tái cấu trúc! Ai là kẻ phạm tội tồi tệ nhất trong mã của bạn?

Bạn muốn cải thiện mã của mình, nhưng không biết bắt đầu từ đâu?

Nhận một số chỉ số!

Có rất nhiều số liệu mã, như độ phức tạp theo chu kỳ và thời gian. Churn xem xét tốc độ thay đổi theo thời gian trong mã của bạn.

Làm thế nào?

Sử dụng lịch sử thay đổi git của bạn.

Kết quả?

Danh sách các tệp thay đổi nhiều nhất.

Nếu bạn dành 90% thời gian để thay đổi User của mình mô hình… Nó có thể là một tệp LỚN với các phương thức LONG. Một ứng cử viên tuyệt vời cho việc tái cấu trúc!

Một viên đá quý giúp bạn tìm thấy các tệp thay đổi liên tục này được gọi là attractor .

Chạy nó như thế này :

attractor report -p app

Nó tạo ra một báo cáo HTML và danh sách các tệp có tốc độ cao mà bạn có thể sử dụng để tập trung nỗ lực tái cấu trúc của mình.

Tốt!

7. Tìm hiểu mã nào được sử dụng trong sản xuất và mã nào không

Hãy kết thúc với một công cụ khác để giúp bạn cải thiện mã của mình.

Nó được gọi là coverband .

Nếu bạn chạy đá quý này trong quá trình sản xuất (chi phí thấp), bạn sẽ nhận được báo cáo phù hợp về mã nào đang được chạy.

Bạn thậm chí có thể theo dõi các lượt xem không sử dụng!

7 viên ngọc Ruby tuyệt vời mà hầu hết mọi người chưa từng nghe về

Điều này có thể giúp bạn đưa ra quyết định khi xóa mã và xóa dự án của mình.

Đừng để mã không sử dụng tích tụ!

Tóm tắt

Bạn đã tìm hiểu về 7 viên ngọc Ruby mạnh mẽ và ít được biết đến mà bạn có thể sử dụng trong các dự án (chủ yếu là Rails) của mình để thực hiện các bài kiểm tra nhanh hơn, cải thiện mã và tăng độ an toàn.

Hãy nhớ cảnh báo nhỏ về việc lạm dụng đá quý, nhưng đừng để điều đó cản trở bạn thử đá quý mới.

Nếu bạn muốn cải thiện kỹ năng Ruby của mình và hỗ trợ blog, hãy cân nhắc mua một bản sao cuốn sách Ruby của tôi, Ruby Deep Dive. 🙂

Cảm ơn vì đã đọc!