2013-05-29 38 views
5

Nhìn vào Readme của Bộ định tuyến hành trình (là bộ định tuyến Rails 4.0), nó khá trống. Tôi đã tự hỏi như thế nào router làm việc về mặt khái niệm, và nếu ngữ pháp này 'trừu tượng' được bắt ý tưởng, của router như mini-ngôn ngữ lập trình:Hành trình của Rails router hoạt động như thế nào?

ROUTE := GET|POST|PUT|DELETE path 
path := (static_path) | (dynamic_path) 

Vì vậy, làm thế nào để Rails 4.0 Router làm việc?

+2

thú vị là tóm tắt nói 'Quá phức tạp ngay bây giờ. : (' – fontno

Trả lời

9

Nếu bạn muốn hiểu định tuyến Rails, nơi tốt nhất để bắt đầu là Rails Routing from the Outside In trong hướng dẫn cạnh.

Sau đó, bạn sẽ có nhiều may mắn hơn khi xem ActionDispatch::Routing 's docs.

Lưu ý: Phần sau liên quan đến Hành trình v1.0.4, đây là thông tin mới nhất tại thời điểm viết bài.

Hành trình tự động là công cụ định tuyến Rails introduced trong Rails 3.2. Trong ghi chú phát hành, nó được mô tả bằng một tuyên bố duy nhất: "Nhận dạng tuyến đường cũng nhanh hơn nhờ động cơ mới Journey". Đó không phải là nhiều thông tin cụ thể về Hành trình, tất nhiên, nhưng Rails không mô tả từng chi tiết triển khai; điều đó sẽ mất mãi mãi! :) Hành trình gemspec cũng mô tả chính nó với tuyên bố: "Hành trình là một bộ định tuyến. Nó định tuyến các yêu cầu".

Bạn có thể nhìn vào api docs, nhưng trong v1.0.4, nó có tài liệu cực kỳ thưa thớt (Journey :: Router :: Utils.normalize_path (đường dẫn) là documented) khác với code itself và có thể openclosed vấn đề của nó. Bạn có thể nhìn vào S.O. khác bài đăng có thẻ journey.

Một số mã có phần tự mô tả chỉ qua tên phương thức, v.v. như trong Journey::Routes. Hành trình tests cũng là một cách tuyệt vời để xem cách hoạt động của nó.

Một số lưu ý về mã bản thân:

  • monkey-patches Hash ở trước 1.9-phiên bản của Ruby để thêm một phương pháp keep_if.
  • "GTG" là viết tắt của "đồ thị chuyển tiếp tổng quát" (xem here)
  • đang hài hước nhất là here (trứng Phục Sinh: rails c sau đó Journey::Path::Pattern.new(9))

Journey của visualizer thể là thú vị để chơi xung quanh với, cũng (chú thích visualizer phương pháp trong Hành trình :: GTG :: TransitionTable). Hiển thị mẫu here và bản trình diễn trực tuyến here hiện tại.

+1

Cảm ơn, Gary, phần cuối cùng của câu trả lời của bạn chính xác là những gì tôi đang tìm kiếm. – poseid

Các vấn đề liên quan