2010-10-21 25 views
60

Tôi đã làm việc thông qua một số mẫu Sinatra và Rails, nhưng tôi đang gặp khó khăn trong việc tìm ra các tính năng thuộc về công nghệ nào.Sinatra vs. Rails

Tôi đặc biệt thu được gì khi sử dụng Sinatra/Rails? Nó chỉ là ActionPack/ActionView? Sửa tôi nếu tôi sai, nhưng tôi có thể sử dụng Webrick/Mongrel và phục vụ các tệp .erb của tôi đúng không? Và tôi có thể sử dụng công nghệ ActiveRecord trong các tệp đó và vẫn truy cập các biến bài đăng, biến trạng thái phiên và biến truy vấn phải không?

Vì vậy, những gì tôi hỏi các bạn là, nếu tôi bắt đầu với kịch bản giống như PHP ở trên; Webrick + ERB + ActiveRecord, tôi thu được gì khi sử dụng Sinatra? Và tôi sẽ tăng thêm gì khi sử dụng Rails?

Trả lời

60

Đối với Sinatra, nó thực sự gần giống như bao bọc quanh Rack. Vì vậy, trước tiên bạn cần phải hỏi điểm của Rack là gì. Rack về cơ bản là một đặc điểm kỹ thuật cho cách một khung công tác sẽ trả về một kết quả, nó có thể sử dụng những gì được trả về với bất kỳ máy chủ web nào mà Rack hỗ trợ. Vì vậy, nó thực sự là một lớp tương thích cho phép bạn chọn kết hợp khung công tác/máy chủ của bạn theo ý muốn, mà không lo lắng về việc liệu chúng có hoạt động cùng nhau hay không. Nếu khung công tác của bạn tuân thủ Rack, bạn sẽ có thể triển khai trên thực tế bất kỳ máy chủ nào thông qua Rack.

Hiện tại, Rack là mức rất thấp. Các khung như Sinatra cung cấp cho bạn những thứ như định tuyến đẹp, người trợ giúp, bộ lọc trước/sau và nhiều thứ khác nữa. Bạn chỉ cần nhìn vào các tài liệu để xem những gì bạn có thể nhận được. Rails là nhiều tính năng hơn, và trong nhiều cách "huyền diệu". Có nghĩa là, bạn có thể viết một dòng trong Rails mà kết thúc là làm khá nhiều, mà đối với một số là một điều tốt, và đối với một số quá huyền diệu. Cá nhân tôi thích Sinatra vì lý do này, ít nhất là trước khi có được sự hiểu biết sâu sắc về Rails internals.

+1

Cảm ơn thông tin. Đây là một câu hỏi tiếp theo: Nếu tôi không có Rails hoặc Sinatra, tôi sẽ sử dụng Webrick như thế nào để phục vụ một số tệp ERB? Tôi cho rằng có thể chỉ cần sử dụng lệnh ruby ​​để bắt đầu webrick trên một cổng nhất định và trỏ nó vào một thư mục nhất định? – LoveMeSomeCode

+3

Tôi vừa mới đăng nhập cho "webrick", kết quả thứ ba: http://microjet.ath.cx/webrickguide/html/ - và cả điều này: http://segment7.net/projects/ruby/WEBrick/servlets.html – ehsanul

+1

I không thấy lý do tại sao bạn muốn bận tâm với tất cả những điều đó mặc dù thành thật, có vẻ khá vô nghĩa, và Webrick không chính xác là máy chủ tốt nhất. Bạn chỉ có thể sử dụng định tuyến URL của Sinatra làm giao diện cho ERB nếu đó là tất cả những gì bạn thực sự muốn. Bạn có thể bỏ qua tất cả các tính năng khác hoặc sử dụng chúng sau này nếu bạn muốn. Bạn có thấy thế giới hello cho Sinatra không? Siêu đơn giản (và các dòng mã sẽ không thay đổi nếu bạn muốn nó tham chiếu đến tệp ERB thay vì chỉ là chuỗi): http: // http: //www.sinatrarb.com/ – ehsanul

5

Mức tăng của Rails là ActionView/ActionPack. Nhưng bạn có thể thay thế bằng Mongrel/Erb. Đó là một cái gì đó khác nhau.

Đó là tất cả herlper bạn có trong chế độ xem của bạn như quản lý tên_quảng cáo hoặc lỗi trong biểu mẫu của bạn. Đó là tất cả quản lý tài nguyên và tất cả plugin như InheritedResources. Ưu điểm của Rails.

Có một số công cụ như môi trường Padrino để giúp bạn có tất cả trình trợ giúp này. Nhưng nó thực sự nhanh hơn sau khi tất cả các plugin kích hoạt? Tôi không nghĩ vậy.

Với Rails 3, Rails là một ứng dụng Rack hoàn chỉnh với rất nhiều RackMiddleware. Bạn chỉ có thể thả một số phần mềm trung gian để tăng phản hồi của bạn.