Nhược điểm của RoR là gì? [đóng cửa]


39

Hiện tại tôi đang cố gắng quyết định nên học và sử dụng ngôn ngữ phía máy chủ nào để phát triển web và trong khi việc lấy thông tin về lý do tại sao x, y hoặc z lại là một điều tốt, thì khó hơn để tìm ra nhược điểm của từng loại của họ.

Cụ thể, tôi tò mò về những hạn chế của việc học và / hoặc sử dụng Ruby on Rails so với bất kỳ ngôn ngữ / khung cụ thể nào khác.


5
Nó làm tôi ghét ASP.NET, rất nhiều. Đó là một vấn đề vì đó là công việc hàng ngày của tôi.
Jeremy

5
Chỉ cần đề cập đến điều này trong một bình luận, trong trường hợp những người khác muốn giải thích, nhưng có một điều cả chuyên nghiệp và lừa đảo là RoR có thể hơi "kỳ diệu" đôi khi - đôi khi có thể khó hiểu những gì đang diễn ra phía sau các cảnh (và vì vậy, nếu bạn chưa quen với việc phát triển web, bạn sẽ mất rất nhiều thứ). Tất nhiên, điều này về cơ bản là đúng với tất cả các ngôn ngữ cấp cao, và đó cũng là điều giúp chúng hoạt động dễ dàng hơn và nhanh hơn.
grautur

1
FWIW nếu bạn đang xem RoR chắc chắn nhìn vào ASP.NET MVC3 với Dao cạo. Và thành thật mà nói nếu bạn thích được trả tiền (tôi chắc chắn là vậy) đó là 40% lý do tôi phát triển trong ASP.NET. 60% còn lại là tôi cảm thấy đây là thời kỳ nền tảng web tốt nhất ngay cả khi nó có điểm đau, trong đó hầu hết tất cả đã kết thúc với Nuget.

Hãy nghĩ về RoR như một công cụ cho các ứng dụng CRUD, bạn có thể làm những thứ khác với nó, nhưng đối với những thứ tổng quát hơn, các ngôn ngữ / khung khác linh hoạt hơn mà không gây ra sự lộn xộn.
alfa64

Câu trả lời:


59

Phát biểu từ kinh nghiệm: Nhược điểm là bạn dựa vào khung Rails quá nhiều. Đây là một điều tuyệt vời và tuyệt vời nếu bạn chỉ viết những ứng dụng CRUD đơn giản, màu xanh lá cây rơi thẳng vào "điểm ngọt" của Rails; năng suất của bạn sẽ tăng vọt. Tuy nhiên, thời điểm bạn phải làm điều gì đó bên ngoài điểm ngọt ngào đó - tương tác với cơ sở dữ liệu hiện có, nói chuyện với một ứng dụng khác không có API JSON hoặc XML được xác định, thực hiện quy trình công việc phức tạp, Rails sẽ trở thành kẻ thù của bạn. Nó có thể thực hiện những điều này với Rails, nhưng nó "chống lại hạt sạn" vì vậy về cơ bản, bạn tự mình tìm ra cách thực hiện vì cộng đồng thường sẽ chỉ trả lời với "Đừng làm vậy, đó không phải là Rails cách "- điều này dẫn đến mất năng suất hoặc mã rất lộn xộn vì về cơ bản bạn phải hack xung quanh khung Rails.

Ngoài ra, có một nhược điểm chưa được nói rõ: Mọi thứ khác sẽ có vẻ xấu xí và lầy lội. Một khi bạn đã nếm mật hoa ngọt ngào, ngọt ngào của Rails (được rồi, truyền giáo chỉ một chút ở đây ...) mọi thứ khác đều tràn ngập. Đi từ Rails trở lại PHP, hoặc ASP.NET WebForms hoặc Java giống như đi trên giường đinh sau khi vui đùa trong một khu vườn tươi tốt; bạn sẽ không nhìn thấy các ngôn ngữ / khung khác trong cùng một ánh sáng, và trong khi bạn vẫn có thể đánh giá cao chúng, bạn sẽ thầm ước ao được ôm hôn yêu thương của Rails.


11
Âm thanh như mọi khuôn khổ khác - thời điểm bạn cần một cái gì đó ra khỏi hộp, nó trở thành một cuộc đấu tranh.
Nemanja Trifunovic

12
Có, nhưng tôi đã thấy nó tệ hơn một chút với Rails vì toàn bộ khung được xây dựng xung quanh ý tưởng bạn sẽ không bao giờ có lý do để cần một cái gì đó "ngoài luồng". So sánh với Zend cho PHP hoặc ASP.NET MVC, hoặc Django cho Python và chúng linh hoạt hơn rất nhiều so với Rails trong khi vẫn mang lại lợi ích của một khung công tác. Đó thực sự không phải là một cú đánh chống lại Rails.
Wayne Molina

3
Nhưng may mắn thay, RoR không phải là webframework dựa trên Ruby duy nhất. Bản thân tôi thích Sinatra + Datamapper + Haml / Sass hoặc thay thế Sinatra + Sequel + Sequel + Haml / Sass cho trải nghiệm SQL thô ... RoR là tuyệt vời so với các giải pháp dựa trên .NET-oder .NET. Nhưng nó là một con quái vật nặng so với các khung web dựa trên Ruby khác.
Philip

4
Tôi đang có một thời gian khó khăn để xác định xem Wayne yêu hay ghét RoR. Đây có phải là mối quan hệ yêu / ghét phổ biến giữa hầu hết các nhà phát triển RoR?
Phil

2
@Phil một chút của Cột A, một chút của Cột B. Tôi yêu RoR, mặc dù tôi không thực sự biết nhiều về nó; Tôi tiếp tục cố gắng học nó vì nó thực sự tốt Nhưng mặt khác, tôi đã sử dụng nó trong một ứng dụng "thế giới thực" và nó cắn vào mông tôi khi tôi phải đi ra ngoài hộp ứng dụng CRUD nói chuyện với một cơ sở dữ liệu với 1-2 mô hình mỗi mẫu, và đó là nó.
Wayne Molina

30

Đối với ngôn ngữ phía máy chủ đầu tiên của bạn, tôi cảm thấy có thể có một vài vấn đề với RoR:

  1. Bạn không chỉ học một ngôn ngữ, bạn đang học một khuôn khổ. Tôi chắc chắn sẽ dành một chút thời gian để chơi xung quanh với viên ruby ​​cũ đơn giản trước khi nhảy vào đường ray.

  2. Vì nó là một khung, và một 'ý kiến' ở đó, tôi cảm thấy như nó sẽ cung cấp cho bạn một phạm vi rất hạn chế về tất cả những gì đang diễn ra trong khung.

Nhìn chung, Ruby on Rails có thể là điểm khởi đầu tốt để bắt đầu, nhưng có rất nhiều điều để tìm hiểu về phát triển web mà bạn có thể bỏ lỡ bằng cách quá phụ thuộc vào một khung duy nhất.


15

Tôi đã cố gắng học RoR nhiều lần và vấn đề lớn nhất của tôi là luôn cố gắng để các gói hoạt động chính xác và tài liệu. Vấn đề với tài liệu này là nó dường như luôn lỗi thời (hoặc rất cơ bản). Tôi đã nhận được những điều cơ bản từ trang web nhưng hơn thế nữa, mọi thứ dường như quá cũ (ngay cả cuốn sách tôi đã mua và cuối cùng trở lại). Một điều khác có thể là một nhược điểm là sự phụ thuộc mà một số thư viện có và cách chúng có thể xung đột với nhau như đã nêu của Ben Coe .


Một cái gì đó mà tôi nghĩ đến sau này và thay vì đưa ra nhận xét, tôi sẽ chỉ chỉnh sửa câu trả lời của mình là: RoR có cơ hội hủy hoại Ruby cho bạn. Tôi biết khi tôi thử nó, nó khiến tôi nghĩ rằng "Ruby thật ngu ngốc". Sau đó vài tháng, tôi quyết định cho Ruby đi và yêu thích ngôn ngữ này, đó là khuôn khổ khiến tôi ghét ngôn ngữ này. Tôi đã không say mê nó nhiều, nhưng khi tôi làm, tôi thực sự thích Sinatra . Tôi nghĩ rằng tôi đã có được niềm vui khi hầu hết mọi người thoát khỏi RoR khỏi Sinatra.


+1 Tôi đã có cùng trải nghiệm. Tôi đã cố gắng học Ruby on Rails, nhưng tôi đã gặp lỗi chỉ bằng cách thực hiện rake db:migrate. Mặt khác, tôi thấy Sinatra đơn giản và dễ hiểu hơn nhiều. Ở mức độ nào, tôi thích thiết lập mọi thứ theo cách riêng của mình và cấu trúc cơ bản của ứng dụng đường ray dường như quá phức tạp đối với tôi.
Zhehao Mao

@Zhehao Mao - Tôi rất vui khi thấy tôi không phải là người duy nhất có trải nghiệm này. Mặc dù, tôi không nghĩ nó phức tạp ... miễn là bạn nghĩ giống hệt như DHH. Nếu bạn có một loại quá trình suy nghĩ khác, RoR có thể là một nỗi đau ở phía sau.
Jetti

Tôi đoán nó không phức tạp. Tôi cho rằng vấn đề của tôi là mỗi lần tôi cố gắng tạo một ứng dụng rails, không có gì hoạt động ngoài hộp theo cách mà tài liệu nói.
Zhehao Mao

Tôi thấy nó vô cùng phức tạp vì thực tế đó là tốt. Đó cũng là lý do tôi từ bỏ. Để nó được RAD, nó phải hoạt động. Tôi thành thật nghĩ rằng tôi đã có thể tạo một ứng dụng CRUD trong C ++ nhanh hơn RoR vì tất cả các vấn đề tôi gặp phải khi RoR hoạt động (một chút cường điệu nhưng vẫn ...)
Jetti

Tôi không chắc liệu các bạn đã đọc đúng tài liệu hay tại sao bạn không yêu cầu giúp đỡ ...
Sevenseacat

12

Nếu đây là ngôn ngữ phía máy chủ đầu tiên của bạn, thì nó cũng tốt như bất kỳ ngôn ngữ nào. Điều cần làm là tập trung vào một, và sau khi bạn cảm thấy mình đã thành thạo nó, hãy khám phá những người khác và suy luận ra kết luận của riêng bạn.

Tôi làm việc với RoR và ASP.NET hàng ngày, nhưng thật kỳ lạ, tôi thích thế giới ASP.NET, nhưng điều đó có liên quan nhiều đến triết lý cá nhân hơn là liên quan đến ngôn ngữ hoặc kiến ​​trúc. (Tôi là một người thích kiểm soát và cá nhân tôi bị thu hút bởi các ngôn ngữ được gõ mạnh).

Bất kể, tôi nói cho nó đi. RoR là một môi trường tuyệt vời để làm việc, nhưng trước khi bạn nhảy ngay vào Rails, hãy thoải mái với Ruby như một ngôn ngữ. Ngoài công cụ web, Ruby là một ngôn ngữ kịch bản khá hay nếu bạn phải quản lý hộp * nix và có thể giúp bạn tiết kiệm được rất nhiều thời gian.


4
+1 cho kiểm soát quái vật. Tôi có một chút của vệt đó quá. Không chỉ đối với loại mạnh, mà còn - tôi thực sự theo một cách như cấu hình (mặc dù có tính dài dòng), thay vì các quy ước đưa ra các giả định cho tôi.
Bàn Bobby

Ditto, @BOB Bàn!
Marlon

6

Là một người đã học Rails gần đây (như một sở thích - không bao giờ sử dụng nó để phát triển cấp độ thương mại) và đã từng làm việc trong JEE và ASP.NET, câu trả lời của Wayne M rất đúng.

Dù sao, có một khía cạnh tinh tế cho vấn đề này mà chưa ai đề cập đến, nhưng điều đó làm tôi bận tâm một chút với Rails - sự phụ thuộc mạnh mẽ vào quy ước về cấu hình .

Về cơ bản, nếu bạn đã quen sử dụng định hướng "Tìm trong tệp" với cơ sở mã mới, CoC có thể sẽ làm phiền bạn khi cố gắng chọn Rails. Thật tuyệt vời cho các trường xanh CRUD đơn giản được thực hiện chính xác theo cách của Rails (như Wayne M nói), nhưng đối với bất kỳ điều gì độc đáo và phức tạp hơn, sẽ khó có thể tìm ra điều gì đang xảy ra nếu bạn cố gắng tìm ra dòng chảy bằng cách tìm kiếm công cụ trong các tập tin để xem làm thế nào hệ thống ống nước được nối lên.

Mặc dù tôi nghĩ, vấn đề này có lẽ sẽ không tệ như vậy khi bạn có nhiều kinh nghiệm hơn với Rails. Tôi chắc chắn có thể thấy đó là một vấn đề đối với ai đó đến từ phát triển web Java / .NET cũ, người đã quen với một luồng cấu hình rất dài dòng - và được sử dụng để dựa vào việc nhìn thấy mọi thứ được phát âm ở đâu đó.


1
Điều đó làm phiền tôi một chút lúc đầu, nhưng sau đó nó không còn nữa. Thật tuyệt vời khi có thể viết di chuyển cơ sở dữ liệu để tạo các cột mới, sau đó đính kèm logic nghiệp vụ vào dữ liệu mới mà không có bước ánh xạ riêng biệt.
kevin cline

@kevincline Làm thế nào để bạn thực hiện điều đó trong RoR? Bạn có thể làm điều đó với AOP trong thế giới Java và .NET.
nghiền nát

@crush: Thật khó khăn trong Java và .NET vì bạn phải tạo và ánh xạ các thuộc tính một cách rõ ràng trong lớp được ánh xạ cho mỗi cột trong cơ sở dữ liệu mà logic nghiệp vụ sử dụng. Thêm một cột có nghĩa là thay đổi nhiều lớp. RoR thực hiện tất cả điều này vào thời gian chạy theo quy ước. Bạn sửa đổi lược đồ cơ sở dữ liệu, sau đó chỉ cần thay đổi logic nghiệp vụ và lớp trình bày để sử dụng cột mới.
kevin cline

5

Với tôi, vấn đề lớn nhất khi tôi học X đầu tiên của mình (trong trường hợp của bạn, X là ngôn ngữ / khung web phía máy chủ), ngay khi tôi thấy các vấn đề khác, tôi ngay lập tức muốn bắt đầu áp dụng X, ngay cả khi nó có thể không phải là lựa chọn tốt nhất Tôi đã trở nên tốt hơn về điều này, nhưng nó vẫn là một xu hướng mạnh mẽ.

Ruby on Rails là một lựa chọn tốt để bắt đầu - có một cộng đồng tốt, nhiều tài liệu và hướng dẫn tốt. Nhưng hãy chắc chắn để giữ các lựa chọn thay thế trong tâm trí, đặc biệt là nếu bạn bắt đầu thực hiện phát triển web nhiều hơn. RoR có thể là quá mức cần thiết cho một số vấn đề, một giải pháp không phù hợp cho những vấn đề khác và sự lựa chọn tốt nhất cho một bộ khác. Biết đó là điểm mạnh, điểm yếu và cách sử dụng công cụ.


4

Lời khuyên của tôi sẽ là có một bức tranh rõ ràng về dự án mà bạn muốn hoàn thành và sau đó chỉ cần bắt đầu cố gắng xây dựng nó. Khi bạn gặp vấn đề, cuối cùng bạn sẽ lấy được tất cả các công cụ phù hợp. Cách tiếp cận này là tốt bởi vì bạn đang đưa ra quyết định dựa trên các vấn đề cô đọng.

Một điều cần làm là mua sách. Hướng dẫn Internet không cắt giảm theo kinh nghiệm của tôi; họ cũng để lại rất nhiều phòng để phân tâm. Khi bạn có một cuốn sách, các nhà xuất bản phải đảm bảo rằng nó cung cấp giá trị vì họ sẽ mất tiền nếu nhận được đánh giá xấu. Chi tiêu một ít tiền sẽ giúp bạn tiết kiệm rất nhiều thời gian.


Nhưng đừng quên railscasts.com. Anh ấy làm một công việc xuất sắc là cung cấp cho bạn một cái nhìn tổng quan về một chủ đề / khái niệm trong khoảng 10 phút. Tôi nhớ rằng đã dành cả một ngày cuối tuần để cố gắng làm cho Sunspot hoạt động, sau đó xem Railscast 10 phút về cách thực hiện tìm kiếm theo khía cạnh, và có nó và chạy trong chưa đầy một giờ. Cũng đáng giá $ 9 / tháng.
Kyle Carlson

1

Thành thật mà nói tôi không thể hiểu được những người thích thơ mộng về việc đi dạo trong vườn Ruby-on-Rails là gì. Tôi đến với nó như một nhà phát triển ASP.NET-MVC, Java, PHP, Python có kinh nghiệm - và thấy nó là công cụ rút thời gian khủng khiếp nhất từ ​​trước đến nay! 90 phần trăm câu trả lời google trực tuyến là sai hoặc không đầy đủ. Tại sao? Nó đã thay đổi nhiều như vậy mỗi năm? Hoặc là không ai quan tâm đến việc làm cho mã thực sự hoạt động? Tôi đã mất rất nhiều thời gian để làm những việc đơn giản; chẳng hạn, xa hơn nhiều so với nó sẽ đưa tôi vào C # / ASP.NET-MVC chẳng hạn. Nó chắc chắn không bao giờ đưa tôi đến bất cứ nơi nào gần đó để học các công nghệ ban đầu của tôi. Cấp, ROR là ngắn gọn. Nếu điều đó quan trọng với bạn. Nhưng tôi thấy hiếm khi rõ ràng làm thế nào để tạo mã sẽ hoàn thành một nhiệm vụ. Cá nhân, tôi muốn gõ trên bàn phím trong 20 giây để viết mã chắc chắn hoạt động, rõ ràng và bạn có thể theo dõi nó, thay vì nhập mã Ruby trong 2 giây, nhưng nó không bao giờ hoạt động cho đến khi tôi thức cả đêm để tìm cách nào đó thực sự làm cho nó hoạt động. Đó là một đống dodo khủng khiếp, hôi thối. Tại sao? Có phải đó là mã nguồn mở (như miễn phí), không tạo ra các ưu đãi để biến nó thành một công cụ chất lượng? Quá nhiều kịch bản-kiddies bơm sửa đổi và mô-đun và tài liệu xấu vào đó? Tôi không biết. Nhưng cuối cùng khi tôi có thể thoát khỏi dự án Ruby-Rails đầu tiên đó, tôi đã thề rằng tôi sẽ không bao giờ bước vào mớ hỗn độn đó nữa! sản xuất không có khuyến khích để làm cho nó một công cụ chất lượng? Quá nhiều kịch bản-kiddies bơm sửa đổi và mô-đun và tài liệu xấu vào đó? Tôi không biết. Nhưng cuối cùng khi tôi có thể thoát khỏi dự án Ruby-Rails đầu tiên đó, tôi đã thề rằng tôi sẽ không bao giờ bước vào mớ hỗn độn đó nữa! sản xuất không có khuyến khích để làm cho nó một công cụ chất lượng? Quá nhiều kịch bản-kiddies bơm sửa đổi và mô-đun và tài liệu xấu vào đó? Tôi không biết. Nhưng cuối cùng khi tôi có thể thoát khỏi dự án Ruby-Rails đầu tiên đó, tôi đã thề rằng tôi sẽ không bao giờ bước vào mớ hỗn độn đó nữa!


bài này khá khó đọc (tường văn bản). Bạn có phiền chỉnh sửa ing nó thành một hình dạng tốt hơn?
gnat

Câu trả lời này rất vui nhộn. Rails là chắc chắn nhất, khách quan tiết kiệm thời gian. Mối hận thù của bạn đối với nó hoàn toàn là vì bạn chưa quen với nó và hy vọng mọi thứ sẽ nhấp trong vài tuần đầu tiên. Di chuyển cơ sở dữ liệu một mình có giá trị chuyển sang Rails cho.
serserg


0

Tôi đồng ý với một số câu trả lời ở trên về RoR, tôi đã phát triển các ứng dụng với RoR trong hai năm qua. Nó thực sự tốt với các ứng dụng đơn giản, các thao tác CRUD (Tạo, Đọc, Cập nhật và Xóa) hoạt động rất tốt, là một lợi ích để phát triển các ứng dụng đơn giản nhưng cũng là những hạn chế của nó. Mặc dù có rất nhiều đá quý cung cấp các lợi thế khác nhau và dễ sử dụng, về cơ bản nó là nó. Đi ra khỏi hộp sẽ giúp bạn có tất cả các ứng dụng xoắn.

Nếu bạn là một nhóm lớn làm việc trên một ứng dụng sử dụng RoR, đoàn làm việc có thể khó thoát khỏi.


Một điều làm tôi ngạc nhiên đôi khi là rất nhiều viên đá quý ngoài kia dường như độc lập với RoR hóa ra chỉ được sử dụng với RoR chứ không phải độc lập. Rất tò mò tại sao điều này là. Tái bút: Tôi không phải là lập trình viên Ruby, vì vậy tôi có thể đã có ấn tượng sai. Nhưng tôi đã vấp ngã điều này một vài lần. Đáng buồn là tôi không có ví dụ tại thời điểm này .
Htbaa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.