RoR'un olumsuz yönleri nelerdir? [kapalı]


39

Şu anda hangi sunucu dilini öğrenmek ve web geliştirmede kullanmak için karar vermeye çalışıyorum ve x, y veya z'nin neden iyi bir şey olduğu hakkında bilgi edinmek nispeten kolay olsa da, her birinin dezavantajlarını anlamak daha zor Bunların

Özellikle, herhangi bir diğer dil / çerçevenin aksine Ruby on Rails'i öğrenmek ve / veya kullanmak için ne gibi sakıncalar olduğunu merak ediyorum.


5
Beni çok ASP.NET'ten nefret ettirdi. Günden beri yaptığım iş benim sorunumdu.
Jeremy,

5
Bunu başkalarına açıklamak istemeniz durumunda, bir yorumda belirtmekle birlikte, hem profesyonel olan hem de aleyhte olan şeylerden biri, RoR'nin zaman zaman biraz fazla "büyülü" olabileceğidir - bazen neler olduğunu anlamak zor olabilir. Sahneler (ve böylece, web geliştirmede yeniyseniz, size verilen birçok şeyi alırsınız). Tabii ki, bu temelde tüm üst düzey diller için geçerlidir ve onlarla çalışmak için onları daha kolay ve daha hızlı yapan şey de budur.
Grautur

1
FWIW, RoR'a bakıyorsanız, kesinlikle Jiletli ASP.NET MVC3'e bakın. Ve dürüst olmak gerekirse, ödeme almayı seviyorsanız (eminim) ASP.NET'te geliştirdiğim nedenin% 40'ı. Diğer% 60 ise, neredeyse hepsinin özetle Nuget ile bittiği acı noktaları olsa bile en iyi web platformu dönemi olduğunu hissediyorum.

RoR'yi CRUD uygulamaları için bir araç olarak düşünün, onunla başka şeyler de yapabilirsiniz, ancak daha genel şeyler için diğer diller / çerçeveler karışıklık yaratmadan daha esnektir.
alfa64,

Yanıtlar:


59

Deneyimden bahsetmek: Dezavantajı, Rails çerçevesine biraz fazla güvenmenizdir . Bu sadece çok basit bir şekilde Rails "tatlı nokta" içine düşen basit, yeşil alan CRUD uygulamaları yazıyorsanız, bu harika ve harika bir şeydir; Verimliliğiniz havaya uçacak. Ancak, o tatlı noktanın dışında bir şey yapmak zorunda olduğunuz an - mevcut bir veritabanıyla etkileşim kurun, tanımlanmış bir JSON veya XML API'si olmayan başka bir uygulamayla konuşun, karmaşık bir iş akışı uygulayın, Rails sizin düşmanınız olacak. Bu iseBunları Rails ile yapmak mümkün, ancak bu "tahılın karşısına" çıkıyor, bu yüzden toplumun genellikle "Sadece bunu yapma, Rails değil yol "- bu temelde Rails çerçevesini kırmanız gerektiğinden verimlilik kaybına veya çok karışık kodlara neden olur.

Ayrıca, söylenmemiş olumsuz tarafı var: Geri kalan her şey çirkin ve iğrenç görünecek. Bir kere tatlı, tatlı nektarı Rails'in tadına baktıktan sonra (tamam, sadece biraz parkala ...) her şey yolunda. Rails'den PHP'ye veya ASP.NET WebForms veya Java'ya geri dönmek, yemyeşil bir bahçede döndükten sonra çivi yatağında yürümek gibidir; diğer dilleri / çerçeveleri aynı ışıkta görmeyeceksiniz ve yine de onları takdir ederken, Rails'in sevgi dolu kucaklamasında gizlice özleyeceksiniz.


11
Her diğer çerçeveye benziyor - kutudan bir şeye ihtiyacınız olduğunda, bir mücadele olur.
Nemanja Trifunovic

12
Evet, ama Rails ile biraz daha kötü olduğunu gördüm, çünkü çerçevenin tamamı, "kutudan çıkacak" bir şeye ihtiyaç duymak için hiçbir nedeniniz olmayacak bir fikir etrafında inşa edildi. Bunu PHP ya da ASP.NET MVC için Zend ya da Python için Django ile karşılaştırın ve hala bir çerçevenin faydalarını sunarken Rails'ten çok daha esnekler. Bu Rails'e karşı gerçekten bir çarpma değil.
Wayne Molina

3
Neyse ki RoR, Ruby tabanlı tek web ödevi değil. Ham SQL deneyimi için Sinatra + Datamapper + Haml / Sass veya alternatif olarak Sinatra + Sequel + Sequel + Haml / Sass'ı tercih ediyorum ... RoR, Java tabanlı .NET çözümleriyle karşılaştırıldığında harika. Fakat diğer Ruby tabanlı web çerçevelerine kıyasla ağır bir canavar.
Philip

4
Wayne'in RoR'u sevip sevmeyeceğini belirlemek için zor zamanlar geçiriyorum. Bu aşk / nefret ilişkisi, çoğu RoR devi arasında yaygın mı?
Phil

2
@Phil A biraz Sütun, biraz B Sütunu. Çok fazla bilgim olmasa da RoR'u seviyorum; Öğrenmeye çalışıyorum çünkü gerçekten çok hoş. Ancak öte yandan, onu "gerçek dünya" uygulamasında kullandım ve form başına 1-2 modelle tek bir veritabanına giren bir CRUD uygulamasının kutusunun dışına çıkmam gerektiğinde beni kıçıma soktu, ve o oldu.
Wayne Molina

30

İlk sunucu tarafı diliniz için, RoR ile ilgili birkaç sorun olabileceğini düşünüyorum:

  1. Sadece bir dil öğrenmek değil, bir çerçeve öğrenmek. Raylara atlanmadan önce eski düz yakutla oynamak için biraz zaman alırdım.

  2. Bir çerçeve olduğu ve bu konuda 'görüşlü' olduğu için, çerçeve içinde neler olup bittiğine dair size sınırlı bir kapsam sağlayacak gibi hissediyorum.

Genel olarak Ruby on Rails, topu yuvarlamak için iyi bir başlangıç ​​noktası olabilir, ancak tek bir çerçeveye çok güvenerek, web geliştirme konusunda öğrenebileceğiniz çok şey var.


15

Birkaç kez RoR öğrenmeye çalıştım ve en büyük sorunum her zaman paketlerin doğru çalışmasını ve dokümantasyona ulaşmaya çalışmak. Belgelendirme ile ilgili sorun, daima güncel (veya çok basit) görünmesidir. Siteden temel bilgileri aldım ancak bunun ötesinde her şey çok tarihli görünüyordu (aldığım ve geri getirdiğim kitap bile). Dezavantajı olabilecek bir başka şey, bazı kütüphanelerin sahip olduğu bağımlılıklar ve Ben Coe tarafından belirtildiği gibi başkalarıyla nasıl çatışabilecekleridir .


Sonradan düşündüğüm ve yorum yapmak yerine, cevabımı düzenleyeceğim bir şey: RoR sizin için Ruby'yi mahvetme şansına sahip. Denedim, bana "Ruby'nin aptal olduğunu" düşündürdü. Sonra birkaç ay sonra Ruby'ye gidip dili sevmeye karar verdim, bu dilden nefret etmemi sağlayan çerçeve oldu. Çok fazla üzülmedim, ama bunu yaparken Sinatra'dan gerçekten zevk aldım . Sanırım çoğu insanın Sinatra’dan RoR’dan çıkması neşe duyuyor.


+1 Aynı deneyimi yaşadım. Ruby on Rails'i öğrenmeye çalıştım, ancak sadece yaparak hata yaptım rake db:migrate. Öte yandan, Sinatra'yı çok daha basit ve anlaşılması kolay buldum. Her halükarda, işleri kendi yoluma koymayı tercih ediyorum ve rayların uygulamasının temel yapısı bana çok karmaşık geldi.
Zhehao Mao,

@Zhehao Mao - Bu deneyime sahip tek kişi olmadığımı görmekten memnunum. Yine de, DHH ile aynı şekilde düşündüğünüz sürece, bunun karmaşık olduğunu düşünmüyorum. Farklı türde bir düşünce süreciniz varsa, RoR arka tarafta bir ağrı olabilir.
Jetti,

Sanırım karmaşık değil. Sanırım benim sorunum, her ne zaman bir ray uygulaması oluşturmak istediğimde, belgelerden olması gerektiği gibi hiçbir şey kutudan çıkmadı.
Zhehao Mao,

Bu gerçeği de inanılmaz derecede karmaşık buldum. Bu yüzden de pes ettim. RAD olması için çalışması gerekir. C ++ 'ta bir CRUD uygulaması yapabileceğimi düşünüyorum, çünkü
RoR'ı

Sizler doğru doktorları mı okuyorsunuz, ya da neden yardım istemediğinizden emin değilim ...
sevenseacat

12

Bu, ilk sunucu tarafı dilinizse, herhangi biri kadar iyidir. Yapılması gereken, bir konuya odaklanmak ve ustalaştığını hissettiğin andan sonra başkalarını keşfet ve kendi sonuçlarını çıkar.

RoR ve ASP.NET ile günlük olarak çalışıyorum, ama garip bir şekilde, ASP.NET dünyasını tercih ediyorum, ancak bunun dil ya da mimarinin kendisiyle olandan çok kişisel felsefeyle ilgisi var. (Ben biraz kontrol hastasıyım ve şahsen güçlü bir şekilde yazılmış dilleri çekiyorum).

Ne olursa olsun, bir şans ver. RoR, çalışmak için harika bir ortamdır, ancak doğrudan Rails'e atlamadan önce Ruby ile bir dil olarak rahat olun. Web içeriklerinin ötesinde, bir * nix kutusunu yönetmek zorunda kalırsanız ve size kayıkla zaman kazandırmak zorunda kalırsanız Ruby oldukça hoş bir betik dilidir.


4
Kontrol ucube için +1. Benim de bu çizgiden biraz var. Sadece güçlü tipler için değil, aynı zamanda - aslında benim için varsayımlar yapan sözleşmelerden ziyade, yapılandırma (ayrıntılarına rağmen) gibi bir şekilde.
Bobby Tables

Aynen, @ Bobby Tabloları!
Marlon,

6

Son zamanlarda Rails'i öğrenen biri (hobi olarak - asla ticari sınıf geliştirme için kullanmamış) ve zaten JEE ve ASP.NET'te çalışmış olan Wayne M'in cevabı çok doğru geldi.

Her neyse, henüz kimsenin bahsetmediği, ancak beni Rails ile biraz rahatsız eden , yapılandırma kongre konvansiyonuna olan güçlü bağlılığının ince bir yanı var .

Temel olarak, yeni bir kod tabanına sahip "Yönlendirmede" Dosyalarda Bulunmaya "alışkınsanız, CoC, Rails'i almaya çalışırken sizi rahatsız edecektir. Kesin olarak Rails yolu (Wayne M'ın dediği gibi) yapılan basit CRUD greenfields için harika, ancak daha benzersiz ve karmaşık bir şey için, aramaya devam ederek akışı bulmaya çalışırken neler olup bittiğini anlamak zor olacak sıhhi tesisatın nasıl bağlandığını görmek için dosyalardaki dosyaları doldurun.

Bence, bu konuda muhtemelen Rails ile ilgili daha fazla deneyiminiz olduğunda bu kadar kötü olmayacak. Oldskool Java / .NET web geliştirmesinden gelen ve çok ayrıntılı bir yapılandırma akışına alışmış olan ve herşeyin bir yerde yazıldığını görmeye dayanan biri için kesinlikle bir sorun olduğunu görebiliyorum.


1
Bu ilk başta beni biraz rahatsız etti, ama sonra artık yoktu. Yeni sütunlar oluşturmak için bir veritabanı geçişi yazabilmek, daha sonra ayrı bir eşleme adımı olmadan yeni verileri iş mantığı eklemek harikaydı.
kevin cline

@kevincline RoR'da bunu nasıl başarıyorsunuz? Java ve .NET dünyasında AOP ile yapabilirsiniz.
ezmek

@crush: Java ve .NET için acı vericidir, çünkü iş mantığının kullandığı veritabanındaki her sütun için eşlenen sınıfta özellikleri oluşturmanız ve eşlemeniz gerekir. Bir sütun eklemek, birden fazla sınıfı değiştirmek anlamına gelir. RoR tüm bunları kongre sırasında yapar. Veritabanı şemasını değiştirirsiniz, ardından yeni sütunu kullanmak için iş mantığını ve sunum katmanını değiştirirsiniz.
kevin cline

5

Benimle, ilk X'imi öğrendiğim en büyük sorun (senin durumunda, X sunucu tarafında bir web dili / çerçevesidir), diğer sorunları görür görmez hemen, hemen X uygulamasına başlamak istiyorum. en iyi seçenek olmayabilir. Bu konuda daha iyi oldum, ama yine de güçlü bir eğilim.

Ruby on Rails ile başlamak için iyi bir seçimdir - iyi bir topluluk, bol miktarda dokümantasyon ve iyi eğitimler var. Ancak, özellikle daha fazla web geliştirme yapmaya başlarsanız, alternatifleri aklınızda tuttuğunuzdan emin olun. RoR, bazı problemler için aşırı düşük, başkaları için yetersiz çözümler ve farklı bir set için en iyi seçim olabilir. Bunun güçlü, zayıf yönlerini ve aracın nasıl kullanılacağını bilin.


4

Tavsiyem Tamamlamak istediğiniz projenin net bir resminin olması ve daha sonra inşa etmeye çalışmanız olacaktır. Sorunlarla karşılaştığınızda, sonunda tüm doğru araçları elde edersiniz. Bu yaklaşım iyidir çünkü kısa ve öz problemlere dayalı kararlar alıyorsunuz.

Yapılacak bir şey de kitap satın almak. İnternet dersleri tecrübelerime göre kesmiyor; Ayrıca dikkat dağıtmak için çok fazla yer bırakıyorlar. Bir kitabınız olduğunda, yayıncılar, kötü yorumlar alırsa para kaybedeceklerinden, değer sağladığından emin olmak zorundadır. Biraz para harcamak size çok zaman kazandıracak.


Ama railscasts.com'u unutma. Size yaklaşık 10 dakika içinde bir konu / konsept hakkında genel bir bakış açısı sunmak için olağanüstü bir iş yapıyor. Sunspot'un çalışmasını sağlamak için bütün bir hafta sonunu geçirdiğimi hatırlıyorum, daha sonra yönlü bir aramanın nasıl uygulanacağı hakkında 10 dakikalık bir Railscast izledik ve bir saatten daha kısa bir süre içinde çalışmaya başladı. 9 $ / ay değerinde.
Kyle Carlson

1

Dürüst olmak gerekirse, bahçede yürüyüş için Ruby-on-Rails'in ne olduğu hakkında şiirselce cilalayanları anlayamıyorum. Bunun üzerine deneyimli bir ASP.NET-MVC, Java, PHP, Python geliştiricisi olarak geldim - ve şimdiye kadarki en korkunç zaman geçirici oldu! Çevrimiçi google cevaplarının yüzde 90'ı yanlış veya eksik. Neden? Her sene o kadar değişti mi? Yoksa kod çalıştırmayı hiç kimsenin umursamadığı mı? Sadece basit şeyler yapmam büyük zaman aldı; Örneğin, beni C # / ASP.NET-MVC’de alacağından çok daha fazlası. Özgün teknolojilerimi öğrenmek beni kesinlikle o kadar yakın hiçbir yere götürmedi. Verilmiş, ROR kısa. Bu senin için önemliyse. Ancak, bir görevi gerçekleştirecek kodun nasıl oluşturulacağını nadiren net buldum. Şahsen, kesinlikle işe yarayan bir kod yazmak için 20 saniye klavyeye yazmayı tercih ederim. açıktır ve 2 saniye boyunca terse Ruby kodu yazmak yerine bunu takip edebilirsiniz, ancak bu, tüm gece çalışana kadar çalışmamasını sağlayacak bir yol arayana kadar asla çalışmaz. Korkunç, kokuşmuş bir dodo yığını. Neden? Açık kaynak kodlu (serbest) kod, kaliteli bir araç yapmak için hiçbir teşvik üretmiyor mu? Çok fazla senaryo çocuğu revizyonları ve modülleri ve içine kötü dökümanları pompalar mı? Bilmiyorum. Ama sonunda ilk Ruby-Rails projesinden kaçmayı başarabildiğimde, bir daha asla bu karmaşaya girmeyeceğime yemin ettim! kaliteli bir araç yapmak için hiçbir teşvik üretmiyor mu? Çok fazla senaryo çocuğu revizyonları ve modülleri ve içine kötü dökümanları pompalar mı? Bilmiyorum. Ama sonunda ilk Ruby-Rails projesinden kaçmayı başarabildiğimde, bir daha asla bu karmaşaya girmeyeceğime yemin ettim! kaliteli bir araç yapmak için hiçbir teşvik üretmiyor mu? Çok fazla senaryo çocuğu revizyonları ve modülleri ve içine kötü dökümanları pompalar mı? Bilmiyorum. Ama sonunda ilk Ruby-Rails projesinden kaçmayı başarabildiğimde, bir daha asla bu karmaşaya girmeyeceğime yemin ettim!


Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
tatarcık

Bu cevap çok komik. Raylar kesinlikle, nesnel olarak bir zaman tasarrufu. Buna karşı kininiz tamamen yeni, çünkü siz onun için yenisiniz ve ilk birkaç hafta içinde her şeyin tıklamasını bekliyorsunuz. Tek başına veritabanı geçişleri Rails'e geçmeye değer.
sergserg


0

RoR ile ilgili yukarıdaki cevapların bazılarına katılıyorum, son iki yıldır RoR ile uygulamalar geliştiriyorum. Basit uygulamalarda gerçekten iyi, CRUD (Yarat, Oku, Güncelle ve Sil) işlemleri çok iyi sonuç veriyor, basit uygulamalar geliştirmek için bir nimettir ama aynı zamanda sınırlamaları da vardır. Çok sayıda mücevher olmasına rağmen, çeşitli avantajlar ve kullanım kolaylığı sunar, temelde budur. Kutunun dışına çıkmak, uygulamaları bükümlü hale getirecek.

RoR kullanarak bir uygulama üzerinde çalışan büyük bir ekibin iseniz, iş heyeti ile kurtulmak zor olabilir.


Beni zaman zaman şaşırtan bir şey, RoR'dan bağımsız olduğu görünen pek çok cevherin sadece RoR ile kullanılabildiği ve bağımsız olarak kullanılmadığıydı. Bunun neden olduğunu çok merak ediyorum. Not: Ben bir Ruby programcısı değilim, bu yüzden yanlış bir izlenim edinmiş olabilirim. Fakat bunun üzerine birkaç kez yanıldım. Ne yazık ki şu anda hiçbir örneğim yok .
Htbaa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.