- यह Rust web app crate को Ruby on Rails में ले जाने का एक व्यक्तिगत प्रोजेक्ट प्रयोग है, और लक्ष्य Tera व Axum आधारित 14,943 लाइनों का कोड है
- मौजूदा Rust सेटअप में Playwright E2E, अलग-थलग DB namespace, mocking services, और internal API crate तक की ज़रूरत पड़ती है, इसलिए testing cost काफ़ी अधिक है
- LLM तुलना में Rails का कुल स्कोर 710 रहा, जो Rust/Axum/Diesel के 480 से अधिक है, और development speed व unit testing की आसानियत इसकी मुख्य ताकत मानी गई
- Local Qwen3.6 के one-shot conversion में लगभग 30 मिनट लगे, और Ruby कोड 3,322 लाइनों तक सिमट गया, लेकिन अभी तक इसे चला कर verify नहीं किया गया है
- Rails की ताकत इसके built-in features और concise testing में है, जबकि Ruby में type safety की कमी को Sorbet या agent-आधारित type addition से कुछ हद तक पूरा किया जा सकता है
रूपांतरण प्रयोग की पृष्ठभूमि
- व्यक्तिगत प्रोजेक्ट के एक हिस्से, Rust web app crate, को Ruby on Rails migration के लिए चुना गया
- पूरा प्रोजेक्ट लगभग 30,000 लाइनों का है, और migration के लिए चुना गया crate Tera और Axum से लिखे गए web app के काफ़ी क़रीब है
- migration के दायरे वाला Rust कोड कुल 14,943 लाइनें है, और compile होने में लगभग 10 सेकंड लगते हैं
- कोड खुद बहुत बड़ा नहीं है, लेकिन इसकी dependency structure काफ़ी भारी है
- मौजूदा Rust सेटअप में testing cost अधिक है
- E2E testing के लिए Playwright configuration की ज़रूरत होती है
- mocking आसान नहीं है, इसलिए isolated database namespace और mocking services चाहिए होते हैं
- Playwright को headless mode में app के साथ interact कराने के लिए एक अलग internal API crate भी चाहिए
- Ruby और Ruby on Rails को एक अधिक concise विकल्प के रूप में देखा गया
- Ruby में types नहीं हैं, इसलिए इसकी stability Rust से कम हो सकती है
- Sorbet इस्तेमाल करने पर Ruby में भी type safety को कुछ हद तक बेहतर किया जा सकता है
- कई LLM instances से complexity, stability, testing ease जैसी चीज़ों की तुलना की गई, और Rails का स्कोर अधिक निकला
- Rust/Axum/Diesel का कुल स्कोर 480, Rails का 710, और Rails + Sorbet का 695 निकाला गया
- Rails को solo developer suitability 90, development speed 90, और unit testing ease 90 जैसे उच्च अंक मिले
- Rust/Axum/Diesel को safety 95 और performance 95 जैसे ऊँचे अंक मिले, लेकिन unit testing ease 20 और integration testing ease 30 जैसे कम अंक मिले
- साधारण कुल-योग के आधार पर यह निष्कर्ष निकाला गया कि Rails app 1.47 गुना बेहतर परिणाम दे सकती है
रूपांतरण के नतीजे और समीक्षा के बिंदु
1 टिप्पणियां
Hacker News की राय
इस पर यकीन करना मुश्किल है। यह कुछ ऐसा लगता है: “एक तकनीकी खुजली थी जिसे मैं खुजलाना चाहता था, और local AI ने 30 मिनट में काम पूरा कर दिया। यह चल भी रहा है या नहीं, देखने के लिए मैंने Start भी नहीं दबाया, लेकिन ब्लॉग पोस्ट लिख दी…”
बशर्ते इसे bots ने ऊपर न धकेला हो
2026: कृपया वह काम देखिए जो मैंने खुद किया ही नहीं!
2036: मैंने C नाम की प्राचीन Latin भाषा में 200 लाइनें कैसे लिखीं
शुरुआत में लगा यह दिलचस्प लेख होगा, लेकिन जैसे ही देखा कि conversion के लिए LLM इस्तेमाल हुआ, मेरी दिलचस्पी तुरंत खत्म हो गई। यह कुछ वैसा है जैसे, “मैं यह करना चाहता था, इसलिए मैंने अपने अधीन काम करने वाले से करवा लिया, और अब मैं उसकी कहानी सुनाऊँगा।”
न तो उसने conversion खुद किया और न ही उस पर गहराई से सोचा, तो इसे पढ़ने की खास वजह नहीं दिखती
इसलिए सिर्फ smoke test चलाने पर यह सफल भी लग सकता है
craftsmanship वाले programming को छोड़ दें, तो programming language खुद उतनी महत्वपूर्ण नहीं रह जाएगी
जैसे-जैसे LLM बेहतर होंगे, बात आखिरकार इस पर आ जाएगी कि specification किस तरह की language में generate करनी है
मानो UML और RUP camp ने आखिर बदला ले लिया हो
जैसा दूसरे comments में भी कहा गया, इस पर काफी व्यापक review हुआ था। यह कोई बहुत बड़ा project नहीं है, और कुछ मुश्किल हिस्सों को छोड़ दें तो ज़्यादातर एक web app ही है
“सोचा ही नहीं” कहना मुझे अनुचित लगता है। यह सिर्फ button दबाकर YOLO कर देने जैसा नहीं था
trade-offs और नतीजों की जांच की गई, Rust code fragments और Rails के बीच फर्क सच में बड़ा था, और Rust app की testability ऐसा विषय था जिस पर 2 महीने तक सोचा गया था
जैसा LLM enthusiasts कहते हैं, context matters ;)
मुझे नहीं पता कि कोई और language या framework Ruby on Rails जितनी developer happiness को प्राथमिकता देता है या नहीं
कुछ कहीं पर compose हो रहा था, पता ही नहीं चल रहा था कि कहाँ है, और आखिरकार मुझे अपना काम रोककर एक घंटे तक documentation पढ़नी पड़ी। जो लोग पूरे दिन Rails ही इस्तेमाल करते हैं, उनके लिए यह ठीक हो सकता है, लेकिन convention over configuration मेरे लिए एक बहुत बड़ा anti-pattern है
happiness हमेशा performance में नहीं बदलती। Twitter के JVM और Scala पर जाने से पहले वाले मशहूर whale logo का उदाहरण याद आता है
Ruby on Rails ने नाम कमाया, लेकिन इससे पहले Tcl-आधारित AOLServer और Vignette में भी ऐसा ही अनुभव था
एक Portuguese startup में उन्होंने इसका अपना variant बनाया था, और बाद में संस्थापकों ने OutSystems बनाया
यह websites और distributed systems development के लिए शुरुआती graphical RAD tools में से एक था, और low-code/no-code तरीके से JVM या CLR infrastructure को target करता था
फिर भी अब CRuby में default JIT आता देखना अच्छा लगता है
मैंने propel_rails नाम का एक gem bundle बनाया है, जो पहले से concise Ruby on Rails code को और भी चरम तक ले जाता है। यह API controllers और concerns जैसे top-level classes बनाता है, और वहाँ से पूरे RESTful resources (models, controllers, serializers, unit tests और E2E tests) बिना boilerplate के तैयार कर देता है
आखिर में controller में सिर्फ API द्वारा allow की गई properties की list रहती है, क्योंकि RESTful actions अपने-आप generate हो जाते हैं। इसे पूरी तरह समझाना थोड़ा मुश्किल है, लेकिन Ruby की metaprogramming ताकत वाकई कमाल की चीज़ों को आसान बना देती है
क्या यह domain model के आधार पर काम करता है?
मैं भी लगभग ऐसी ही स्थिति में हूँ
मुझे Go और Rust दोनों पसंद हैं, और दोनों ही अपनी खूबियों और कमियों के साथ शानदार languages हैं। लेकिन अफसोस, मैं इनमें से किसी में भी SaaS app नहीं बना पाया। जैसे चौकोर खूंटी को गोल छेद में फिट करने की कोशिश हो
हो सकता है मैं पूरी तरह गलत हूँ, लेकिन SaaS tools के साथ बहुत सारा built-in सामान आता है, और मैं उसे फिर से invent नहीं करना चाहता
RoR “काफी अच्छा” है। जब चाहें types ला सकते हैं, तेज़ी से बना सकते हैं, और tooling भी ठीक-ठाक है
मेरा पहला पेशेवर काम PHP में था, और उसमें pitfalls बहुत थे। Ruby थोड़ी ज़्यादा e-commerce की तरफ झुकी हुई लगती है, जो मुझे दिलचस्प लगा, और अगर यह Shopify के लिए काफी है, तो मेरे लिए भी ठीक है
अगर Rust से Ruby पर जाना समझदारी लगता है, तो शुरुआत में Rust चुनना ही गलती थी
जो लोग सोचते हैं कि Ruby, Rust से धीमी है, वे यह जानकर हैरान हो सकते हैं कि Ruby अब असल में Python से तेज़ है, जबकि Go या Rust से धीमी है
लेकिन जब कई background workers हों और हर एक 2GB से ज़्यादा memory खाने लगे, तो यह बहुत जल्दी जुड़ता जाता है
मैंने production में एक Rust service लिखी थी, और speed से भी ज़्यादा प्रभावशाली बात यह थी कि वह 30MB memory में चल रही थी
यह उकसाने वाली बात है, लेकिन अपने आसपास के आम लोगों को 900+ IQ दिखाने के लिए भले अच्छी हो, बहुत से बुद्धिमान और प्रतिभाशाली developers को Rust खास पसंद नहीं है। कुछ लोग Rust की एक लाइन लिखने के बजाय अपनी programming language और compiler खुद बनाना पसंद करेंगे
Jonathan Blow के Jai और Ginger Bill के Odin याद आते हैं
ऐसे और भी लोग हैं जिनकी creativity और depth साबित हो चुकी है, जिन्होंने खूबसूरत और व्यापक रूप से इस्तेमाल होने वाली libraries और frameworks बनाए हैं, लेकिन यहाँ जगह बर्बाद नहीं करना चाहता
बस इतना कि Rust का एक शानदार macho club और बेहद जुड़ी हुई brotherhood ज़रूर है
Claude, Rails apps पर वाकई बहुत अच्छा काम करता है। जैसा इस लेख के लेखक ने भी कहा, Ruby कम code में बहुत कुछ करा देती है, और Rails convention over configuration अपनाता है, इसलिए Rails apps और भी concise हो जाते हैं
Claude के Rails apps पर अच्छा काम करने की एक परिकल्पना token efficiency है
मैंने पहले एक project देखा था जो अलग-अलग projects की token efficiency मापकर compare करने की कोशिश करता है, और Rails ने वहाँ काफी अच्छे results दिखाए
https://felipemrvieira.github.io/SyntaxTax/dashboard/
कभी-कभी project का आकार देखकर मैं हैरान हो जाता हूँ। 30,000 lines का codebase छोटा है? मुझे पता है ceiling काफी ऊँची होती है, लेकिन 30,000 lines में बहुत सारी जानकारी और व्यवहार की बारीकियाँ समा सकती हैं
शायद यह मेरे background की वजह से भी है, जहाँ मेरा फोकस Go वाले backend/networking काम पर रहा है। 10,000 से 15,000 lines पार होते ही आम तौर पर पूरे codebase का model दिमाग में बनाए रखना मुश्किल हो जाता था, और वह काफी भारी लगने लगता था