Ruby on Rails nhược điểm và cẩn thận [đóng]


25

Đây không phải là một sự kiện mở đầu cho RoR bashing - trung thực!

Tôi đang học khung Ruby và Rails. Prima facie nó có vẻ khá tuyệt, và một trải nghiệm tuyệt vời so với PHP. (Trên thực tế, nó nhắc nhở tôi về những ngày hạnh phúc hơn với C # và .NET.)

Tuy nhiên, đi sâu vào vấn đề này, tôi không có kinh nghiệm với khuôn khổ hoặc ngôn ngữ này và tôi tò mò - những nhược điểm hiện tại hoặc những điều bạn muốn bạn biết khi bạn bắt đầu là gì?

(Có lẽ điều này nên được tạo một wiki cộng đồng?)


Tôi đã thử đường ray một lần và dừng lại khi tôi nhận ra rằng thiết kế thực thể đầu tiên cơ sở dữ liệu là không dễ dàng.
Falcon

5
avdi.org/devblog/2011/08/22/your-code-is-my-hell rất đáng đọc. Tôi sẽ nói thêm rằng với bất kỳ ngôn ngữ được gõ động nào, điều cực kỳ quan trọng là có phạm vi kiểm tra 80% trở lên, hoặc tái cấu trúc sẽ gần như không thể.
Eric Wilson

Làm cho câu hỏi của bạn cụ thể và cân bằng hơn (ví dụ: "Chuyển đổi từ PHP sang Ruby on Rails - Ưu điểm và nhược điểm) sẽ loại bỏ nhu cầu từ chối bản thân và mong muốn về wiki cộng đồng.
Thomas Langston

2
@Thomas Nhưng đó không phải là câu hỏi của tôi! Những ưu và nhược điểm của PHP thực sự rất nổi tiếng. Ưu điểm của RoR khá dễ tìm. Tuy nhiên, nhược điểm của RoR không dễ để khám phá như một người mới và tôi nghi ngờ họ sẽ chỉ được khám phá với nhiều năm kinh nghiệm. Học hỏi từ kinh nghiệm kiếm được tốt của người khác là mục tiêu của việc này. Nhiều người trong số các CW tôi đã đọc khá cụ thể về bản chất của họ.
Matty

Câu trả lời:


32

Đây là từ kinh nghiệm học tập, tiếp tục học hỏi và viết một ứng dụng tương đối đơn giản trong Rails.

1) Đường cong học tập

Rails là đơn giản quyết định. Các hướng dẫn, video và sách đều thể hiện mức độ nhanh chóng bạn có thể có được một ứng dụng hoạt động (nếu xấu xí), nhưng những thứ này thực sự chỉ làm trầy xước bề mặt. Họ có xu hướng phụ thuộc rất nhiều vào việc tạo mã và "giàn giáo", điều này thừa nhận là một công cụ tốt khi học nhưng nhanh chóng vượt xa sự hữu ích của nó.

Không có lỗi, Rails là khó để làm chủ. Khi bạn vượt qua được những điều cơ bản (nhiều hơn về điều này sau), bạn sẽ chạy dài vào tường nếu bạn cần làm nhiều hơn chức năng "ứng dụng demo" cực kỳ đơn giản mà bạn thấy được chào hàng. Bạn có thể có được kiến ​​thức cơ bản về Ruby khi học, nhưng bạn cần nhanh chóng nhặt Ruby hoặc bạn sẽ bị khô và cao (và không phải là loại tốt DRY) nếu bạn cần đi ra ngoài các ràng buộc của Rails.

Rails là, như tôi muốn gọi nó theo một cách yêu thương, vẽ bằng cách lập trình số . Nếu bạn tuân thủ 100% các quy ước (nghĩa là ở trong các dòng và sử dụng các màu bạn được bảo sẽ sử dụng), bạn có thể tạo ra các ứng dụng phong nha một cách nhanh chóng và dễ dàng. Nếu và khi bạn phải đi chệch hướng, Rails có thể đi từ người bạn thân nhất đến kẻ thù tồi tệ nhất của bạn.

2) Khi tất cả những gì bạn có là một cái búa ...

Rails thực hiện các ứng dụng CRUD đơn giản rất tốt. Vấn đề xảy ra khi ứng dụng của bạn phải làm nhiều việc hơn là chỉ đọc / ghi từ cơ sở dữ liệu. Bây giờ, đối với bản ghi phiên bản Rails cuối cùng tôi sử dụng là 2.3.4 nên mọi thứ có thể đã thay đổi kể từ đó, nhưng tôi gặp vấn đề lớn khi yêu cầu kinh doanh thay đổi nên ứng dụng phải có một hệ thống quy trình công việc nhỏ được tích hợp và tích hợp với một ứng dụng PHP kế thừa. Quy ước Rails của "một hình thức, một mô hình" hoạt động tốt đối với các ứng dụng tầm thường và ứng dụng nhập dữ liệu, nhưng không quá nhiều khi bạn cần xử lý logic hoặc có quy trình công việc hoặc bất cứ điều gì không phải là "Người dùng nhập dữ liệu thông thường vào một vài trường văn bản, lượt truy cập Gửi "loại điều. Nó có thể được thực hiện, nhưng nó không có nghĩa là "dễ dàng", hay đúng hơn là nó không '

Ngoài ra, Rails không thích chơi tốt với các ứng dụng khác không sử dụng các phương thức truy cập dữ liệu ưa thích của nó; nếu bạn phải giao tiếp với một ứng dụng không có API kiểu "Web 2.0", bạn phải làm việc xung quanh Rails thay vì với nó; một lần nữa tôi nói từ kinh nghiệm ở đây vì đây là những gì đã xảy ra với tôi.

3) Nó mới

Cuối cùng, Rails vẫn là "đứa trẻ mới trên khối" ở nhiều khu vực. Điều này không quan trọng đối với việc sử dụng cá nhân hoặc loại kịch bản "Tôi nghĩ thật tuyệt và muốn tìm hiểu nó", nhưng nói như một người thích sử dụng Rails trong công việc hàng ngày của tôi, nếu bạn không ở vị trí có Rails Trên diện rộng, có thể rất khó tìm được công việc toàn thời gian với tư cách là nhà phát triển Rails. Nó vẫn chủ yếu là lĩnh vực của "hông, khởi nghiệp mới" và không phải là một người chơi chính trong hầu hết các khu vực đô thị. Số dặm của bạn có thể khác nhau về vấn đề này, nhưng tôi biết Rails khu vực của tôi (Tampa) về cơ bản là không có.

4) Lửa và chuyển động

Rails luôn thay đổi. Đây là cả một điều tốt và xấu; thật tốt vì cộng đồng phát triển và đón nhận những khái niệm mới. Thật tệ vì cộng đồng phát triển và đón nhận những khái niệm mới. Nó có thể rất áp đảo đối với một người mới chơi Rails vì thông thường khi bạn gặp phải một vấn đề và nhìn xung quanh, bạn sẽ thấy mọi người khuyên bạn nên dùng loại đá quý như vậy để khắc phục nó, hoặc nói rằng đó là cách xấu và bạn không nên ' Sử dụng nó, đây là một cách tốt hơn ... và cuối cùng bạn có một danh sách các công cụ bổ sung để tìm hiểu cùng với Rails để theo kịp với Rails cognoscenti. Những điều thích Git, BDD/RSpec, Cucumber,Haml/Sassvà vô số những thứ khác trôi nổi xung quanh và bị thúc đẩy là "cách làm đúng đắn" trong Rails-Land, và nói từ kinh nghiệm bạn có thể sẽ bị ngập trong khi cố gắng học hàng tá công nghệ trở lên ngoài Rails, bởi vì sử dụng bộ công cụ Rails tiêu chuẩn cảm thấy "sai".

Điều này giờ đây còn được kết hợp nhiều hơn bởi Rails 3.1, biến Sass và CoffeeScript thành tất cả mọi thứ thành mặc định, do đó, một người mới chơi Rails hoàn toàn không chỉ phải học Ruby và Rails mà còn đơn giản nếu bạn biết CSS) và CoffeeScript (không khó điên rồ nhưng chắc chắn đủ khác với JavaScript thô) ở mức tối thiểu để bắt đầu, cộng với Git có thể được giả định. Ngay cả khi không bao gồm trong RSpec và bạn bè, và hàng tá đá quý mà bạn thường kết thúc, đó là 4 điều khác nhau bạn phải học trước khi bạn có thể nghiêm túc bắt đầu viết các ứng dụng Rails. So sánh ngôn ngữ này với ngôn ngữ như C #, hoặc Java hoặc thậm chí PHP nơi kiến ​​thức HTML / CSS / JavaScript / SQL của bạn sẽ không thay đổi và bạn chỉ cần tự học ngôn ngữ và có lẽ các sắc thái khung.


3
WRT Rails 3.1 Sass & CoffeeScript là các giá trị mặc định có thể dễ dàng tắt. Trong thực tế, CSS "bình thường" sẽ chỉ hoạt động do Rails 3.1 sử dụng cú pháp SCSS của SASS. Bạn có thể sử dụng chúng nhưng bạn không bị ép buộc. WRT Git Tôi nghĩ Linus giải thích rõ hơn về lý do tại sao bạn thực sự nên sử dụng DVCS như Git, bất kể bạn sử dụng khuôn khổ nào. youtube.com/watch?v=4XpnKHJAok8
Shreyas Satish

Ồ tôi đồng ý, chỉ nói rằng mặc định Rails thường được thổi phồng rất nhiều nên một người mới sẽ cảm thấy áp lực khi sử dụng nó (tôi biết tôi cảm thấy như vậy)
Wayne Molina

3
+1 cho # 4 ... nếu bạn rời Rails trong một năm, khi bạn quay trở lại, mọi người sẽ bay xung quanh trong tàu vũ trụ và bạn sẽ ở trong thuyền của bạn suy nghĩ wtf? Cú pháp Rails 2 cảm thấy cũ trước khi Rails 3 được phát hành.
jimworm

-1 Bài bails tốt bashing nhưng bạn thậm chí không đề xuất một thay thế. "Các hình thức lồng nhau" là một vấn đề khó khăn và Rails có thể giải quyết nó tốt hơn bất kỳ ai.
scottschulthess

13

Tài liệu.

Mặc dù Hướng dẫn Rails là tài nguyên học tập tuyệt vời, nhưng Rails (và Ruby, nói chung) tham chiếu thư viện không dễ điều hướng. Nói, bạn muốn tìm hiểu thêm về belongs_tophương pháp. Mặc dù nó được sử dụng trên các ActiveRecord::Baselớp con (mô hình của một người), nhưng nó không được ghi lại trong các ActiveRecord::Basetài liệu, nhưng trong một hỗn hợp mà lớp nhập khẩu. Về cơ bản, bạn không thể thấy một danh sách toàn diện về tất cả các phương thức mà bạn có thể sử dụng trên một đối tượng ở một nơi (ngoại trừ khi bạn khởi động irbvà kiểm tra chính đối tượng đó).

Với một ngôn ngữ rất năng động như Ruby, không đơn giản để nói một phương pháp bạn đang sử dụng đến từ đâu. Nó có thể là một vấn đề, đặc biệt đối với các lập trình viên học tập cố gắng nắm bắt một chồng công nghệ mới.


Đây là một kẻ giết người đối với tôi; Bất cứ khi nào tôi cần gỡ lỗi một số mã Ruby / Rails của chúng tôi, tôi luôn dành quá nhiều thời gian để cố gắng tìm ra một phương thức đã cho được xác định; và thậm chí sau đó, luôn phải giữ ý tưởng ở phía sau đầu tôi rằng chỉ vì tôi có thể thấy định nghĩa phương thức, nó có thể đã được định nghĩa lại ở nơi khác.
joev

9

Ruby on Rails có một đường cong học tập đáng kể. Đầu tiên bạn phải học những điều kỳ lạ của ngôn ngữ, sau đó học khung, sau đó học cách làm việc của Rails, sau đó tìm hiểu về nhiều viên đá quý thường được sử dụng.

Tuy nhiên, khi bạn đã học được những điều đó, nó sẽ đến một cách tự nhiên đến không ngờ. Trong thực tế, các khung khác bắt đầu cảm thấy như một gánh nặng.

Rails rất định hướng TDD / BDD, vì vậy nếu bạn không phải là hai điều nữa bạn sẽ phải học trước khi trở thành một lập trình viên Rails có năng lực. Bạn không có trình biên dịch và IDE để sao lưu, vì vậy phạm vi kiểm tra rất nhiều dự phòng của bạn.

Nhiều người ủng hộ TDD, bao gồm cả tôi, sẽ coi đây là một trong những thế mạnh của RoR, cũng như lời nguyền của nó. Khi bạn bắt đầu viết TDD, bạn thấy rằng bảo mật được cung cấp bởi phạm vi kiểm tra tốt hơn bảo mật được cung cấp bởi trình biên dịch. Sau đó phải viết mã CHỈ để làm hài lòng một trình biên dịch trở nên nặng nề.

TDD không cảm thấy như một nhiệm vụ bổ sung trong RoR, nó cảm thấy giống như cách duy nhất để làm việc.

Rails có một vấn đề nghiêm trọng về hiệu năng: mỗi yêu cầu được xếp hàng phía sau yêu cầu hiện đang hoạt động, trái ngược với việc xâu chuỗi chúng như hầu hết các khung làm hoặc cho phép chặn các sự kiện để giải phóng các yêu cầu khác giống như của Node.js và Twister. Điều này có nghĩa là bạn phải mã hóa để thực hiện thời gian phản hồi nhanh, nhưng điều đó khá dễ thực hiện trong hầu hết các trường hợp.

Rails cũng được thiết kế rất nhiều để xử lý các hệ thống nội dung rất tốt, điều mà công bằng là rất nhiều internet. Làm một cái gì đó phức tạp hơn một chút, chẳng hạn như một trò chơi web hoặc một hệ thống thương mại điện tử, có nghĩa là học những viên ngọc mới. Bạn nhanh chóng biết rằng tất cả các viên đá quý đều ở ngoài đó, nhưng điều bạn muốn làm càng mơ hồ thì càng khó tìm được tài liệu tốt.


Về các vấn đề hiệu suất - Tôi dường như nhớ lại việc đọc rằng rất nhiều trong số đó đã được giải quyết phần lớn với v1.9 của trình thông dịch, nhưng tôi có thể hoàn toàn sai. Có cách nào để vượt qua giới hạn hiệu suất này?
Matty

1
@Matty: Như tôi đã thêm, mã để tạo thời gian phản hồi nhanh nhất có thể. Bất cứ điều gì có thể để lại cho một quá trình phụ trợ, hãy làm như vậy. Nhưng sau đó, bạn nên làm điều đó với bất kỳ khuôn khổ nào - thật dễ dàng phải không. Ngoài ra, jRuby được phân luồng khác nhau, nhưng nó đi kèm với các vấn đề riêng của nó và câu trả lời của tôi đã đủ dài.
pdr

7

Theo kinh nghiệm cá nhân của tôi, vấn đề đau đầu chính là sự tương thích .

Khi nào:

  • Có những xdự án đường ray được triển khai,
  • mỗi dự án sử dụng yđá quý.
  • trong khi có ncác phiên bản của đường ray,
  • cộng với mcác phiên bản đá quý được cài đặt,
  • với severalcác phiên bản của ruby,
  • trên một hộp Linux duy nhất là máy sản xuất.
  • lập trình viên làm việc trên một notebook phát triển OS X khác.

Là một freelancer, người không có sự sang trọng để cập nhật / nâng cấp hầu hết các sự vật, sẽ phải đối mặt với rất nhiều vấn đề tương thích từ biến trên ... trong khi rails, gemsrubytiếp tục thay đổi / phát triển.


7
Mọi thứ bạn đề cập đều được sửa bằng cách sử dụng RVM (hoặc rbenv ) và Bundler . Bạn có thể có các phiên bản cụ thể của Ruby và các bộ đá quý riêng biệt cho từng dự án.
Ashley Williams

Câu trả lời này là (bây giờ) hoàn toàn không liên quan. RVM để quản lý phiên bản Ruby, Bundler để xử lý phiên bản đá quý; Capistrano để xử lý việc triển khai đến máy chủ sản xuất và Figaro đảm nhiệm các bí mật ứng dụng / biến môi trường. Tôi phát triển ứng dụng của mình trên [Cloud9] (c9.io) (IDE web) và quy trình triển khai của tôi theo đúng nghĩa đen bundle exec cap production deploy. Capistrano đảm nhiệm việc phiên bản ứng dụng trên máy chủ. Giống như bất kỳ khung công tác nào khác xuất hiện (ví dụ: Node.js), các công cụ được viết để giải quyết các vấn đề của bạn .
Chris Cirefice

5

Tốc độ chắc chắn là một vấn đề. Tính linh hoạt cao của Ruby đi kèm với một hiệu suất đáng kể.

Chia tỷ lệ theo chiều ngang là một nhiệm vụ không rõ ràng, ngoại trừ các công nghệ được thiết kế riêng cho nhiệm vụ đó, thường đánh đổi sự đơn giản để mở rộng quy mô.
Nếu bạn có thể xử lý gấp 100 lần số yêu cầu cho mỗi máy có công nghệ A so với công nghệ B, thì sử dụng công nghệ A rất đáng để cân nhắc nếu bạn có lý do để tin rằng bạn có thể phục vụ dữ liệu của mình từ một máy chủ trong một khung thời gian cho phép bạn thêm song song sau đó.
Trong năm 2009 stackoverflow vẫn được phục vụ từ một máy chủ web . Tất nhiên đây không còn là một lựa chọn. Nhưng tôi cho rằng thật tốt khi họ bắt đầu với một công nghệ, có thể mở rộng quy mô cho nhiều người dùng trong một trường hợp, trước khi họ phải lo lắng về việc nhân rộng.

So với điều đó, RoR thực sự chậm. Thời gian để xử lý các yêu cầu đơn giản là rất quan trọng và do đó, đây là một vấn đề cần xử lý nhiều khách hàng (đây là tất cả những gì liên quan đến các lựa chọn thay thế nhanh hơn).

Vì mục đích mơ hồ, đây là một số con số, so sánh nhiều ngôn ngữ khác phù hợp để phát triển web với Ruby:

  • Đi
  • Clojure
  • JavaScript V8 ( node.js )
  • JRuby (một giải pháp thay thế không thể quên - tùy thuộc vào khu vực có vấn đề của bạn, JRuby có thể là lựa chọn tốt hơn hoặc tồi tệ hơn để có được một số tốc độ ra khỏi ứng dụng đường ray)
  • Scala
  • Java
  • C #

Lưu ý rằng điều này không có nghĩa, nếu bạn sử dụng framework X cho Java thì nó sẽ nhanh hơn 200 lần so với RoR. Nhưng sự khác biệt về tốc độ được đo trong các điểm chuẩn này có tác động quan trọng đến hiệu suất chung của ứng dụng của bạn.


4
Câu trả lời này chỉ nói về "tốc độ" khi chạy. Ruby (và Rails) được tối ưu hóa cho tốc độ phát triển.
Nicolai Reuschling

5
Đây không phải là một so sánh tốt. Phần lớn thời gian dành cho một yêu cầu web là thực hiện I / O từ cơ sở dữ liệu. Liên kết đến điểm chuẩn chuyên sâu cpu là sai lệch.
ryeguy

3
@pdr: Rất nhiều vấn đề của twitter là họ đã sử dụng ruby ​​cho mọi thứ , ngay cả các quy trình phụ trợ của họ vốn rất chuyên sâu. Các khu vực như thế được các ngôn ngữ gõ tĩnh tỏa sáng. Bây giờ họ sử dụng Scala. Tôi thực sự, thực sự, tin rằng sử dụng RoR nhanh hơn nhiều về thời gian phát triển so với C # hoặc Java. Tôi sẽ sử dụng nó cho hầu hết các ứng dụng web, và sau đó sử dụng C # hoặc Scala cho bất kỳ công việc nền tảng cpu nào.
ryeguy

3
+1, cho điểm hợp lệ. Điều đó đang được nói, bạn có thể làm rất nhiều để tối ưu hóa các ứng dụng Rails. Rack tự cho mình là một hệ thống khá mở rộng cho phép rất linh hoạt trong cách mọi thứ được gọi. Chưa kể, Ruby 1.9 nhanh hơn, JRuby nhanh hơn. Cá nhân tôi là một fan hâm mộ lớn của JRuby, có thể hòa nhập vào sức mạnh của JVM là một chiến thắng tuyệt vời (chỉ cần cẩn thận với các loại đá quý sử dụng ngoại lệ để kiểm soát dòng chảy -> chi phí khổng lồ)
Xorlev

2
@Nicolai Reuschling: Giá trị nào nằm ở Ruby hoặc RoR được "tối ưu hóa cho tốc độ phát triển"? Bạn có thể cung cấp dữ liệu có thể kiểm chứng , định lượng như thế nào Ruby thực sự cung cấp tốc độ phát triển cao hơn so với các lựa chọn thay thế (ví dụ Nâng) không? Bất cứ điều gì khác chỉ là một yêu cầu trống. Ngoài ra, câu hỏi này là về nhược điểm của RoR . Tốc độ phát triển cao là một lợi thế và do đó nằm ngoài phạm vi của câu hỏi này. Hiệu suất thời gian chạy kém nằm trong phạm vi của câu hỏi này, bởi vì nó là một nhược điểm.
back2dos

3

Rails có một vấn đề nghiêm trọng về hiệu năng: mỗi yêu cầu được xếp hàng phía sau yêu cầu hiện đang hoạt động, trái ngược với việc xâu chuỗi chúng như hầu hết các khung làm hoặc cho phép chặn các sự kiện để giải phóng các yêu cầu khác giống như của Node.js và Twister. Điều này có nghĩa là bạn phải mã hóa để thực hiện thời gian phản hồi nhanh, nhưng điều đó khá dễ thực hiện trong hầu hết các trường hợp.

Tôi nghĩ rằng điều này là rất sai lầm. Bạn có thể chạy Rails ở chế độ đa luồng. Khi chạy ở chế độ đa luồng, bạn chỉ nên sử dụng các thư viện IO giải phóng GIL (ví dụ: 'mysql2' gem) nếu không nó sẽ trở nên vô nghĩa.

Nếu bạn đang sử dụng jRuby, thì bạn chỉ có thể chạy một quy trình đường ray duy nhất ở chế độ đa luồng và sử dụng đầy đủ tất cả sức mạnh CPU có sẵn. Tuy nhiên, nếu bạn đang sử dụng MRI (Ruby 1.8.x hoặc 1.9.x), bạn phải chạy nhiều quy trình để sử dụng đầy đủ CPU, đó là trường hợp với node.js.


Một câu hỏi làm rõ ở đây - có cách nào dễ dàng để tìm thư viện IO nào phát hành GIL không?
Matty

Tôi nghĩ rằng cách tốt nhất để tìm ra điều đó là điểm chuẩn nó gist.github.com/35d4769d8c8c0dfafc56
Pratik Naik


Thật tốt khi nghe từ một trong những nhà phát triển cốt lõi! Thông tin này không được liệt kê trong bất kỳ tài liệu nào? Thật là tẻ nhạt (mặc dù là một hoạt động thú vị) để bắt đầu thử nghiệm các thư viện để tìm ra điều này.
Matty

3
  • Rails có rất nhiều niceties che giấu sự phức tạp từ bạn. (Các hiệp hội ActiveRecord, toàn bộ vòng đời xác thực / lưu, giải thích dữ liệu yêu cầu dựa trên các tiêu đề được cung cấp) Khi bạn mới bắt đầu, điều này thật tuyệt vời. Khi bạn phát triển, bạn sẽ thấy rằng bạn bắt đầu điều chỉnh ứng dụng của mình theo "cách Rails" để xử lý mọi thứ - đôi khi điều này tốt, đôi khi điều này vô hại và đôi khi nó thực sự trái ngược với điều bạn đang cố gắng làm. Không phải tất cả các bảng cơ sở dữ liệu phải được mô hình hóa thành các đối tượng, một bước xác thực có thể cần phải xảy ra ở nơi khác, v.v ... Rất nhiều lập trình viên Rails không chiến đấu với khung (thường là khôn ngoan), nhưng hiệu quả lâu dài của việc này là ... bạn sẽ mang theo thói quen của Rails với bạn đến những nơi mà họ không nhất thiết phải kêu gọi.

  • Cộng đồng có thói quen viết phần mềm được coi là "ma thuật" - bộ nhớ cache hoạt động kỳ diệu! Sự kiện I / O mà kỳ diệu làm cho bạn nhanh hơn! Phép thuật kỳ diệu! Điều thường xảy ra ở đây là một API rất hấp dẫn được cung cấp cho một giải pháp kỹ thuật còn thiếu và bạn bị đánh lừa bởi những ví dụ rất hay rằng điều đó làm theo ý bạn, và chỉ sau đó mới thấy rằng nó bao trùm một giải pháp chưa hoàn chỉnh. Chu kỳ của điều này là khá ổn định, và bạn học cách lăn lộn với nó, nhưng bạn chắc chắn nên làm quen với ý tưởng đọc rất nhiều mã mà bạn phụ thuộc vào (một điều tốt!). Các giải pháp ma thuật cộng đồng của Rails gần như không phải là phép thuật như README có thể gợi ý, tôi đang nói.

  • Hệ quả ở trên: Bạn càng sử dụng Rails, bạn càng nên đọc nguồn của nó. Bạn càng hiểu rõ về khuôn khổ bên trong, bạn sẽ càng hạnh phúc lâu dài. Không thực sự Rails cụ thể trong việc này, nhưng tôi chỉ nói với bạn từ kinh nghiệm ở đây. Tên phương thức đôi khi hứa hẹn một cái gì đó bạn không thực sự nhận được.

  • Văn hóa hàng hóa là một vấn đề w / Rails, nhưng đó có lẽ là đúng với tất cả các cộng đồng khung / lang. Dường như rõ ràng hơn (đối với tôi) trong Rails, và như vậy có xu hướng mang lại cái nhìn thế hệ kỳ lạ cho mã Rails - khi bạn làm việc trên các dự án Rails khác nhau, bạn sẽ nhận thấy xu hướng nhất định có xu hướng phản bội khoảng thời gian mà chúng được tạo ra . Như bạn có thể đoán từ tuyên bố đó, cộng đồng có xu hướng di chuyển khá nhanh trong việc áp dụng các giải pháp mới và không tán thành các giải pháp cũ. Bạn nên thực sự đứng đầu về tin tức Ruby của bạn, chỉ để hiểu một số mã mà bạn sẽ trải nghiệm hàng ngày.

  • Nói chung, tôi nghĩ rằng vấn đề đồng thời dữ liệu thường không được cộng đồng giải quyết tốt - khi bạn phát triển một ứng dụng, khi bạn đạt đến điểm cần hủy dữ liệu, khôi phục các thay đổi vật lý từ xa và khóa truy cập dữ liệu, các giải pháp trở thành điều chỉnh tay nhiều hơn một chút, điều này làm cho một số thứ Rails đẹp mắt mà bạn làm được làm rối tung lên với sự cần thiết về kỹ thuật của độ chính xác. Rails không giải quyết mọi vấn đề bạn sẽ gặp phải với một ứng dụng web, tôi đoán là tôi đang nói, và trong khi những người sáng tạo chắc chắn không thuyết phục rằng thông điệp đó thật dễ bị lừa khi nghĩ rằng nó ngụ ý.


2

Tùy thuộc vào cách bạn nhìn vào nó, tốc độ thay đổi Rails có thể hoặc không phải là một cảnh báo cho bạn. Mọi thứ thay đổi hoàn toàn từ năm này sang năm khác vì nhiều thứ bị bỏ qua những gì tệ hại và cần giải pháp.

Tuy nhiên, nếu bạn đang trong giai đoạn phát triển tích cực, bạn sẽ có ngón tay của mình trong nhịp đập này.

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.