Apa kerugian RoR? [Tutup]

39

Saat ini saya sedang mencoba untuk memutuskan bahasa sisi server mana yang harus dipelajari dan digunakan untuk pengembangan web, dan meskipun relatif mudah untuk mendapatkan informasi tentang mengapa x, y, atau z adalah hal yang baik, lebih sulit untuk mengetahui kelemahan masing-masing. dari mereka.

Secara khusus, saya ingin tahu tentang apa kelemahannya untuk belajar dan / atau menggunakan Ruby on Rails sebagai lawan dari bahasa / kerangka kerja lainnya.

Maxfielden
sumber
5
Itu membuat saya membenci ASP.NET, banyak. Yang merupakan masalah karena itu adalah pekerjaan saya.
Jeremy
5
Hanya menyebutkan ini dalam komentar, kalau-kalau orang lain ingin menguraikan, tetapi satu hal yang baik pro dan kontra adalah bahwa RoR bisa menjadi sedikit terlalu "ajaib" di kali - mungkin sulit untuk memahami kadang-kadang apa yang terjadi di belakang adegan (jadi, jika Anda baru dalam pengembangan web, Anda akan menerima banyak hal begitu saja). Tentu saja, ini pada dasarnya berlaku untuk semua bahasa tingkat tinggi, dan itu juga yang membuatnya lebih mudah dan lebih cepat untuk dikerjakan.
grautur
1
FWIW jika Anda melihat RoR pasti melihat ASP.NET MVC3 dengan Razor. Dan jujur ​​jika Anda suka dibayar (saya yakin) bahwa 40% alasan saya berkembang di ASP.NET. 60% lainnya adalah saya merasa ini adalah periode platform web terbaik meskipun memiliki titik-titik kesedihannya, yang hampir semuanya diakhiri dengan Nuget.
Anggaplah RoR sebagai alat untuk aplikasi CRUD, Anda dapat melakukan hal-hal lain dengannya, tetapi untuk hal-hal yang lebih umum bahasa lain / kerangka kerja lebih fleksibel tanpa membuat berantakan.
alfa64

Jawaban:

59

Berbicara dari pengalaman: The downside adalah bahwa Anda mengandalkan kerangka Rails sedikit terlalu banyak. Ini adalah hal yang hebat dan luar biasa jika Anda hanya pernah menulis aplikasi CRUD greenfield sederhana yang jatuh tepat ke "sweet spot" Rails; produktivitas Anda akan meroket. Namun, saat Anda harus melakukan sesuatu di luar sweet spot itu - berinteraksi dengan database yang ada, berbicara dengan aplikasi lain yang tidak memiliki JSON atau XML API yang ditentukan, menerapkan alur kerja yang rumit, Rails akan menjadi musuh Anda. ini adalahmungkin untuk melakukan hal-hal ini dengan Rails, tetapi itu "melawan arus" sehingga Anda pada dasarnya sendiri dengan mencari tahu bagaimana melakukannya karena masyarakat biasanya hanya akan menjawab dengan "Jangan lakukan itu, itu bukan Rails cara "- ini menghasilkan hilangnya produktivitas atau kode yang sangat berantakan karena pada dasarnya Anda harus meretas kerangka Rails.

Juga, ada sisi buruk yang tak terucapkan: Segala sesuatu yang lain akan tampak jelek dan kotor. Setelah Anda mencicipi nektar Rails yang manis dan manis (oke, menginjilkan sedikit saja di sini ...) yang lainnya adalah swill. Kembali dari Rails kembali ke PHP, atau ASP.NET WebForms, atau Java seperti berjalan di atas paku setelah bermain-main di taman yang rimbun; Anda tidak akan melihat bahasa lain / kerangka kerja dalam cahaya yang sama, dan sementara Anda mungkin masih menghargai mereka, Anda diam-diam akan merindukan pelukan cinta Rails.

Wayne Molina
sumber
11
Kedengarannya seperti setiap kerangka kerja lainnya - saat Anda membutuhkan sesuatu di luar kotak, itu menjadi perjuangan.
Nemanja Trifunovic
12
Ya, tapi saya menemukan ini sedikit lebih buruk dengan Rails karena seluruh kerangka dibangun di sekitar ide Anda tidak akan pernah memiliki alasan untuk membutuhkan sesuatu "di luar kotak". Bandingkan dengan Zend untuk PHP atau ASP.NET MVC, atau Django untuk Python dan mereka jauh lebih fleksibel daripada Rails sambil tetap memberikan manfaat kerangka kerja. Tapi itu bukan slam melawan Rails.
Wayne Molina
3
Tapi untungnya RoR bukan satu-satunya webframework berbasis Ruby. Saya sendiri lebih suka Sinatra + Datamapper + Haml / Sass atau alternatifnya Sinatra + Sekuel + Sekuel + Haml / Sass untuk pengalaman SQL mentah ... RoR lebih bagus dibandingkan dengan Java-oder. Solusi berbasis NET. Tapi itu adalah monster yang berat dibandingkan dengan kerangka kerja berbasis Ruby lainnya.
Philip
4
Saya mengalami kesulitan menentukan apakah Wayne mencintai atau membenci RoR. Apakah ini hubungan cinta / benci yang umum di antara kebanyakan dev RoR?
Phil
2
@Phil sedikit dari Kolom A, sedikit dari Kolom B. Saya suka RoR, meskipun saya tidak benar-benar tahu banyak tentang itu; Saya terus berusaha mempelajarinya karena itu sangat bagus. Tetapi di sisi lain saya telah menggunakannya di aplikasi "dunia nyata" dan itu menggigit saya ketika saya harus pergi ke luar kotak aplikasi CRUD yang berbicara ke satu basis data dengan 1-2 model per formulir, dan itu dia.
Wayne Molina
30

Untuk bahasa sisi server pertama Anda, saya merasa ada beberapa masalah dengan RoR:

  1. Anda tidak hanya belajar bahasa, Anda belajar kerangka kerja. Saya pasti akan meluangkan waktu untuk bermain-main dengan batu ruby ​​tua sebelum melompat ke pagar.

  2. Karena itu adalah sebuah kerangka kerja, dan yang 'berpendapatan' pada saat itu, saya merasa itu akan memberi Anda ruang lingkup yang sangat terbatas tentang apa yang sedang terjadi dalam kerangka kerja tersebut.

Secara keseluruhan Ruby on Rails bisa menjadi titik awal yang baik untuk memulai, tetapi ada banyak hal untuk dipelajari tentang pengembangan web yang mungkin Anda lewatkan dengan menjadi terlalu bergantung pada satu kerangka kerja.

GSto
sumber
15

Saya sudah mencoba mempelajari RoR beberapa kali dan masalah terbesar saya adalah selalu berusaha agar paket bekerja dengan benar dan dokumentasinya. Masalah dengan dokumentasi adalah bahwa ia selalu ketinggalan zaman (atau sangat mendasar). Saya mendapatkan dasar-dasar dari situs tetapi di luar itu semuanya tampak begitu tanggal (bahkan buku yang saya beli dan akhirnya kembali). Hal lain yang bisa menjadi kelemahan adalah ketergantungan yang dimiliki beberapa perpustakaan dan bagaimana mereka dapat bertentangan dengan yang lain sebagaimana dinyatakan oleh Ben Coe .


Sesuatu yang saya pikirkan kemudian dan bukannya berkomentar, saya hanya akan mengedit jawaban saya adalah ini: RoR memiliki peluang untuk menghancurkan Ruby untuk Anda. Saya tahu ketika saya mencobanya, itu membuat saya berpikir bahwa "Ruby itu bodoh". Kemudian beberapa bulan kemudian saya memutuskan untuk mencoba Ruby dan menyukai bahasa itu, kerangka itulah yang membuat saya membenci bahasa itu. Saya belum banyak berkecimpung di dalamnya, tetapi ketika saya melakukannya, saya benar-benar menikmati Sinatra . Saya pikir saya mendapat kesenangan yang sebagian besar orang dapatkan dari RoR dari Sinatra.

Jetti
sumber
+1 Saya memiliki pengalaman yang sama. Saya mencoba mempelajari Ruby on Rails, tetapi saya mendapatkan kesalahan hanya dengan melakukan rake db:migrate. Di sisi lain, saya menemukan Sinatra jauh lebih sederhana dan mudah dipahami. Bagaimanapun, saya lebih suka mengatur segalanya dengan cara saya sendiri, dan struktur dasar aplikasi rel sepertinya terlalu rumit bagi saya.
Zhehao Mao
@Zhehao Mao - Saya senang melihat bahwa saya bukan satu-satunya yang memiliki pengalaman ini. Meskipun, saya tidak berpikir itu rumit ... selama Anda berpikir dengan cara yang sama persis seperti DHH. Jika Anda memiliki jenis proses pemikiran yang berbeda, RoR dapat menjadi masalah di belakang.
Jetti
Saya kira itu tidak rumit. Saya kira masalah saya adalah bahwa setiap kali saya mencoba membuat aplikasi rel, tidak ada yang berhasil seperti yang dikatakan oleh dokumentasi.
Zhehao Mao
Saya merasa sangat rumit karena fakta itu juga. Itu juga sebabnya saya menyerah. Agar itu menjadi RAD itu harus bekerja. Jujur saya pikir saya bisa membuat aplikasi CRUD di C + + lebih cepat dari RoR karena semua masalah yang saya punya mendapatkan RoR dan berjalan (sedikit berlebihan tapi masih ...)
Jetti
Saya tidak yakin apakah kalian membaca dokumen yang benar, atau mengapa Anda tidak meminta bantuan ...
sevenseacat
12

Jika ini adalah bahasa sisi server pertama Anda, itu sama baiknya dengan bahasa lainnya. Yang harus dilakukan adalah fokus pada satu, dan setelah Anda merasa sudah menguasainya, jelajahi orang lain dan simpulkan kesimpulan Anda sendiri.

Saya bekerja dengan RoR dan ASP.NET setiap hari, tapi anehnya, saya lebih suka dunia ASP.NET, tetapi itu lebih berkaitan dengan filosofi pribadi daripada hubungannya dengan bahasa atau arsitektur itu sendiri. (Saya sedikit aneh kontrol dan saya pribadi tertarik ke bahasa yang sangat diketik).

Bagaimanapun, saya katakan mencobanya. RoR adalah lingkungan yang bagus untuk bekerja, tetapi sebelum Anda langsung masuk ke Rails, terbiasalah dengan Ruby sebagai bahasa. Di luar hal-hal web, Ruby adalah bahasa penulisan yang cukup keren jika Anda harus mengelola kotak * nix dan dapat menghemat banyak waktu.

Marlon
sumber
4
+1 untuk orang aneh kontrol. Saya memiliki sedikit coretan itu juga. Tidak hanya untuk tipe yang kuat, tetapi juga - Saya sebenarnya dengan cara seperti konfigurasi (meskipun sangat jelas), daripada konvensi membuat asumsi untuk saya.
Bobby Tables
Ditto, @Bobby Tables!
Marlon
6

Sebagai seseorang yang mempelajari Rails baru-baru ini (sebagai hobi - tidak pernah menggunakannya untuk pengembangan kelas komersial) dan sudah bekerja di JEE dan ASP.NET, jawaban Wayne M berdering sangat benar.

Bagaimanapun, ada sisi halus dari hal ini yang belum ada yang disebutkan, tetapi yang sedikit mengganggu saya dengan Rails - ketergantungan yang kuat pada konvensi atas konfigurasi .

Intinya, jika Anda terbiasa dengan "Find In Files" -venven dengan basis kode baru, CoC kemungkinan akan mengganggu Anda ketika mencoba mengambil Rails. Ini bagus untuk CRUD greenfields sederhana yang dilakukan dengan cara Rails (seperti yang dikatakan Wayne M), tetapi untuk hal lain yang lebih unik dan rumit, akan sulit untuk mengetahui apa yang terjadi jika Anda mencoba mencari tahu alurnya dengan mencari hal-hal dalam file untuk melihat bagaimana pipa ledeng dihubungkan.

Meskipun saya pikir, masalah ini mungkin tidak akan seburuk setelah Anda memiliki lebih banyak pengalaman dengan Rails. Saya pasti bisa melihatnya menjadi masalah bagi seseorang yang berasal dari oldskool Java / .NET pengembangan web yang digunakan untuk aliran konfigurasi yang sangat verbose - dan digunakan untuk mengandalkan melihat semuanya dieja di suatu tempat.

Tabel Bobby
sumber
1
Awalnya itu sedikit mengganggu saya, tapi kemudian tidak lagi. Sangat menyenangkan bisa menulis migrasi basis data untuk membuat kolom baru, lalu melampirkan logika bisnis ke data baru tanpa langkah pemetaan terpisah.
kevin cline
@kevincline Bagaimana Anda mencapai itu di RoR? Anda dapat melakukannya dengan AOP di dunia Java dan .NET.
naksir
@ Crush: Ini menyakitkan di Jawa dan. NET karena Anda harus secara eksplisit membuat dan memetakan properti di kelas yang dipetakan untuk setiap kolom dalam database yang menggunakan logika bisnis. Menambahkan kolom berarti mengubah beberapa kelas. RoR melakukan semua ini saat run-time oleh konvensi. Anda memodifikasi skema basis data, kemudian hanya mengubah logika bisnis dan lapisan presentasi untuk menggunakan kolom baru.
kevin cline
5

Dengan saya, masalah terbesar dengan saya mempelajari X pertama saya (dalam kasus Anda, X adalah bahasa web / kerangka kerja server-side), itu begitu saya melihat masalah lain, saya segera ingin mulai menerapkan X, bahkan ketika itu mungkin bukan opsi terbaik. Saya sudah lebih baik dalam hal ini, tetapi masih kecenderungan yang kuat.

Ruby on Rails adalah pilihan yang baik untuk memulai - ada komunitas yang bagus, banyak dokumentasi, dan tutorial yang bagus. Tetapi pastikan untuk mengingat alternatif, terutama jika Anda mulai melakukan lebih banyak pengembangan web. RoR mungkin berlebihan untuk beberapa masalah, solusi yang tidak memadai untuk orang lain, dan pilihan terbaik untuk set yang berbeda. Ketahuilah kekuatan, kelemahan, dan cara menggunakan alat ini.

Thomas Owens
sumber
4

Saran saya adalah untuk memiliki gambaran yang jelas tentang proyek yang ingin Anda selesaikan dan kemudian mulailah mencoba membangunnya. Saat Anda mengalami masalah Anda pada akhirnya akan mengambil semua alat yang tepat. Pendekatan ini baik karena Anda mengambil keputusan berdasarkan masalah yang ringkas.

Hal lain yang harus dilakukan adalah membeli buku. Tutorial internet tidak memotongnya dalam pengalaman saya; mereka juga meninggalkan banyak ruang terbuka untuk gangguan. Saat Anda memiliki buku, penerbit harus memastikan buku itu memberikan nilai karena mereka akan kehilangan uang jika mendapat ulasan buruk. Menghabiskan sedikit uang akan menghemat banyak waktu.

Spencer
sumber
Tapi jangan lupa tentang railscasts.com. Dia melakukan pekerjaan yang luar biasa untuk memberi Anda gambaran umum tentang suatu topik / konsep dalam waktu sekitar 10 menit. Saya ingat menghabiskan seluruh akhir pekan mencoba untuk membuat Sunspot bekerja, kemudian menonton Railscast 10 menit tentang bagaimana menerapkan pencarian berwajah, & menjalankannya dalam waktu kurang dari satu jam. BAIK senilai $ 9 / bulan.
Kyle Carlson
1

Sejujurnya aku tidak bisa mengerti mereka yang berpesta puitis tentang apa jalan-jalan di taman Ruby-on-Rails. Saya datang sebagai pengembang ASP.NET-MVC, Java, PHP, Python yang berpengalaman - dan menemukan itu sebagai pembuang waktu paling mengerikan yang pernah ada! 90 persen jawaban google online salah atau tidak lengkap. Mengapa? Apakah sudah banyak berubah setiap tahun? Atau apakah tidak ada yang peduli membuat kode benar-benar berfungsi? Butuh banyak waktu untuk melakukan hal-hal sederhana; jauh, jauh lebih banyak daripada yang akan saya dapatkan di C # / ASP.NET-MVC, misalnya. Jelas tidak pernah membawa saya sedekat itu untuk mempelajari teknologi asli saya. Memang, ROR singkat. Jika itu penting bagi Anda. Tapi saya jarang menemukan cara membuat kode yang bisa menyelesaikan tugas. Secara pribadi, saya lebih suka mengetik di keyboard selama 20 detik untuk menulis kode yang pasti berfungsi, jelas dan Anda dapat mengikutinya, daripada mengetik kode Ruby singkat selama 2 detik, tetapi yang tidak pernah berhasil sampai saya terjaga sepanjang malam mencari beberapa cara untuk benar-benar membuatnya bekerja. Itu adalah tumpukan dodo yang mengerikan dan bau. Mengapa? Apakah itu kode sumber terbuka (seperti dalam gratis), tidak menghasilkan insentif untuk menjadikannya alat yang berkualitas? Terlalu banyak script-kiddies yang memompa revisi dan modul serta dokumentasi yang buruk ke dalamnya? Saya tidak tahu Tetapi ketika saya akhirnya bisa melarikan diri dari proyek Ruby-Rails pertama itu, saya bersumpah tidak akan pernah terlibat dalam kekacauan itu lagi! tidak menghasilkan insentif untuk menjadikannya alat yang berkualitas? Terlalu banyak script-kiddies yang memompa revisi dan modul serta dokumentasi yang buruk ke dalamnya? Saya tidak tahu Tetapi ketika saya akhirnya bisa melarikan diri dari proyek Ruby-Rails pertama itu, saya bersumpah tidak akan pernah terlibat dalam kekacauan itu lagi! tidak menghasilkan insentif untuk menjadikannya alat yang berkualitas? Terlalu banyak script-kiddies yang memompa revisi dan modul serta dokumentasi yang buruk ke dalamnya? Saya tidak tahu Tetapi ketika saya akhirnya bisa melarikan diri dari proyek Ruby-Rails pertama itu, saya bersumpah tidak akan pernah terlibat dalam kekacauan itu lagi!

James Hurst
sumber
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk
Jawaban ini lucu. Rel paling pasti, secara obyektif adalah penghemat waktu. Dendam Anda terhadapnya adalah murni karena Anda baru mengenalnya dan mengharapkan segalanya untuk diklik dalam beberapa minggu pertama. Migrasi basis data saja layak untuk dipindahkan ke Rails.
sergserg
0

Saya setuju dengan beberapa jawaban di atas tentang RoR, saya telah mengembangkan aplikasi dengan RoR selama dua tahun terakhir. Sangat bagus dengan aplikasi sederhana, operasi CRUD (Buat, Baca, Perbarui dan Hapus) bekerja dengan sangat baik, ini merupakan anugerah untuk mengembangkan aplikasi sederhana tetapi juga keterbatasannya. Meskipun ada banyak permata menawarkan berbagai keuntungan dan kemudahan penggunaan, pada dasarnya itu. Keluar dari kotak akan membuat Anda semua aplikasi bengkok.

Jika Anda adalah tim besar yang mengerjakan aplikasi menggunakan RoR, delegasi kerja mungkin sulit untuk dihindarinya.

Prashanth Pendurthi
sumber
Satu hal yang mengejutkan saya kadang-kadang adalah bahwa banyak permata di luar sana yang tampaknya independen dari RoR ternyata hanya digunakan dengan RoR, dan tidak mandiri. Sangat ingin tahu mengapa ini terjadi. PS: Saya bukan programmer Ruby, jadi saya mungkin mendapat kesan yang salah. Tetapi saya menemukan ini beberapa kali. Sayangnya saya tidak punya contoh saat ini .
Htbaa