Khi bạn xây dựng ứng dụng Rails, bạn sẽ sử dụng hàng đống đá quý. Một số trong số chúng dường như hoàn toàn kỳ diệu! Nhưng điều kỳ diệu đó xảy ra như thế nào?
Trong hầu hết các loại đá quý, không có gì họ đang làm mà bạn không thể làm được. Đó chỉ là mã Ruby. Đôi khi nó phức tạp Mã Ruby. Nhưng nếu bạn khám phá mã đó, bạn sẽ bắt đầu hiểu điều kỳ diệu đó đến từ đâu.
Tìm mã nguồn
Để hiểu cách hoạt động của một viên ngọc, bạn phải tìm mã của nó.
Nếu có một phương pháp nào đó mà bạn muốn biết thêm, bạn có một cách dễ dàng để tìm nguồn:method
và source_location
. Tôi đã viết một chút về những điều này trước đó . Đây là một ví dụ:
irb(main):001:0> ActiveRecord::Base.method(:find).source_location
=> ["/usr/local/lib/ruby/gems/2.1.0/gems/
activerecord-4.2.0.beta4/lib/active_record/core.rb", 127]
Nhưng nếu bạn quan tâm đến nhiều phương pháp thì sao?
Nếu bạn có một bảng điều khiển đang mở bên trong thư mục của ứng dụng Rails, bạn có thể truy cập ngay vào mã của viên ngọc:
~/Source/gem_example[master] jweiss$ bundle open rack
Nếu nó nằm trong Gemfile
của bạn , bundle open rack
sẽ mở toàn bộ rack
đá quý trong trình chỉnh sửa của bạn. Bạn có thể thoải mái duyệt tất cả các tệp bên trong nó.
Bạn bắt đầu từ đâu?
Bây giờ bạn đã biết mã của viên ngọc quý ở đâu, làm cách nào để bạn bắt đầu hiểu nó?
Nếu bạn cố gắng tìm hiểu cách thực hiện activerecord
hoạt động bằng cách đọc lib/active_record.rb
, bạn sẽ không đi đến đâu. Bạn sẽ tìm thấy rất nhiều autoload
s và require
s.
Dễ dàng nhất để hiểu một viên ngọc quý sau ứng dụng của bạn sử dụng nó một chút. Một khi bạn biết thêm về loại công việc mà viên đá quý đang làm cho bạn. Bằng cách đó, bạn sẽ có ý tưởng về các lớp và phương pháp thú vị mà bạn nên bắt đầu.
Sau khi bạn có tên của một số phương thức thú vị, bạn có thể sử dụng source_location
, Tìm trong Dự án trong trình soạn thảo của bạn hoặc ag trên dòng lệnh để xem nơi các phương thức đó được xác định. Và đó là lúc niềm vui bắt đầu.
Mã của đá quý có trên máy của bạn, phải không? Điều đó có nghĩa là bạn có thể thay đổi nó theo cách bạn muốn! Bạn thậm chí có thể phá vỡ nó và không ai khác phải biết.
Khi tôi đang cố gắng hiểu cách hoạt động của một viên ngọc, tôi không chỉ đọc mã. Tôi thêm puts
các câu lệnh vào gem, tôi ném các ngoại lệ để tìm ra cách ứng dụng của tôi đi đến các dòng nhất định và tôi lộn xộn với mã để hiểu tại sao tác giả viết nó theo cách đó.
Sau khi bạn biết thủ thuật này được thực hiện như thế nào, thì nó sẽ kém kỳ diệu hơn rất nhiều. Và bạn sẽ không phải đoán mã đó sẽ hoạt động như thế nào trong các tình huống kỳ lạ, vì bạn sẽ có thể tự mình thấy mã đó.
Tự dọn dẹp sau
Sau khi bạn làm rối với mã đá quý, ứng dụng của bạn có thể ở trạng thái khá tệ. Nó thậm chí có thể không chạy nữa! Và ngay cả khi có, nó sẽ gửi spam tất cả những puts
đó các câu lệnh bạn đã thêm vào bảng điều khiển của mình.
Nhưng RubyGems có một cách nhanh chóng để đưa mọi thứ trở lại bình thường:
~ jweiss$ gem pristine activerecord -v 4.2.0
Restoring gems to pristine condition...
Restored activerecord-4.2.0
Hoặc, nếu bạn không nhớ mình đã nhầm lẫn với viên ngọc nào và bạn thực sự kiên nhẫn:
~ jweiss$ gem pristine --all
Sau đó, tất cả đá quý của bạn sẽ trở lại như cũ khi bạn cài đặt chúng.
Bạn sẽ khám phá điều gì?
Khi bạn tìm, đọc và khám phá mã bên trong các viên ngọc của mình, bạn sẽ hiểu mã mà bạn phụ thuộc ở cấp độ sâu hơn. Và bạn sẽ không phải dựa vào các giả định và phỏng đoán nữa.
Bài đăng này ban đầu được gửi riêng cho danh sách của tôi. Để nhận được nhiều bài đăng tương tự trong hộp thư đến của bạn vào thứ Sáu hàng tuần, hãy đăng ký tại đây!