Ponekad čujem kako se ljudi žale na svoje klijente, govoreći da jesu inzistirati na korištenju Railsa, da su imali previše Kool Aida. Ako su novaci, gotovo da im pozli u želucu zbog toga što će morati pronaći još jednog programera Ruby on Rails 'primadona'. Tada izvuku nešto slično ovom nevjerojatno neukom usporedba između Gita i PHP-a kako bi dokazali svoju poantu. 'Oni ni sami ne znaju što traže', kažu.
Za nas kao programeri , ponekad se doista čini da naši klijenti nemaju pojma. Volimo pretjerivati s ovakvim slučajevima. Kad malo razmislite, ne čini se ispravnim pomisliti da je osoba koja mi daje novac za izgradnju stvari nekako ograničena i ‘jednostavno ne shvaća’. Zapravo, Vjerujem da većina klijenata dobro poznaje svoje mogućnosti, a opet još odluči ići s Railsom.
Pokušat ću objasniti što, po mom mišljenju, čini Rails dovoljno korisnim da se ozbiljno razmotri za mnoštvo projekata i potreba.
ukrasni uzorak obično je povezan s
Moguće je da nitko ne bi ni znao za blagodati Rubyja da nije bilo same Rails. Neki ljudi vole omalovažavati Ruby govoreći da je 'tako lako za Ruby' sa svojim 'vitezom u sjajnom oklopu zvanom Rails' i da bi bez Railsa 'Ruby bila nebitna'. Ne mogu sa sigurnošću reći je li to istina ili ne, ali znam da bi bila velika šteta kad bi svijet propustio tako vrhunski jezik. Činjenica je: autor Railsa namjerno je odabrao Ruby, a njegova se 'divlja' oklada isplatila s ogromnim zanimanjem. Ono što je on vidio tada, mnogi drugi mogu vidjeti i danas. Ruby nekako omogućuje programerima na poseban način koji je tako teško objasniti ‘neopranoj masi’. Pa, zašto koristiti Ruby on Rails? Ruby usrećuje programera, kao što se reklamira.
Iako se većina programera slaže da je Ruby zgodan, neki to vide kao previše tako. Brinu se što bi se moglo dogoditi sa svim slobodama koje Ruby dopušta, kao i sa svim mogućnostima zlouporabe. Dopustite mi da ilustriram s nekim krpanjem majmuna:
'1'.to_i #=> 1 class String def to_i raise 'foobar' end end '1'.to_i #=> RuntimeError: foobar
To je tako jednostavno: sa samo pet redaka koda uzeli smo postojeću klasu i nadjačali njezino ponašanje. Nohting je sveto - čak ni Gudač. Ovu posebnu pogrešku bilo bi lako uočiti, ali stvari mogu postati puno zlokobnije:
class String def to_i self.to_f - 1.13 end end '2'.to_i #=> 0.8700000000000001
Upravo smo tako u klasu String unijeli pogrešku koja se može umotati i zakloniti slojem po sloju složenosti.
Dakle, možda mislite: Mogu li svi i njihova majka zbrkati moju dragocjenu prijavu? Iako ovo ponašanje doista izgleda zastrašujuće - zapravo nije. U pet godina koristeći Ruby , Imao sam točno nula problema s ovim ponašanjem. Možda se čini neintuitivnim, ali opet, tako je i s vožnjom automobila brzinom od 60 km / h u suprotnim smjerovima odvojenim samo tankom bijelom linijom nasred ceste. U praksi oboje djeluju izvanredno dobro.
s korporacija i c korporacijaMožda se čini neintuitivnim, ali opet, tako je i s vožnjom automobila brzinom od 60 km / h u suprotnim smjerovima odvojenim samo tankom bijelom linijom nasred ceste. U praksi oboje djeluju izvanredno dobro.
Druga je prednost što je Ruby svestran alat. Kao takav ima oštre rubove nalik na nož. Volim misliti da odrasli mogu sasvim dobro rukovati noževima - zaštita djece je za, pa, djecu ( Cvrkut ). A ako se u IT-u s vama postupa kao s djetetom, ostavljate žrtvu Paula Grahama Paradoks Bluba : mislite da vam je bolje bez određenih značajki koje ne razumijete ili za koje vam je netko rekao da su preopasne. Naravno, danas se pitamo 'zašto koristiti Ruby na tračnicama'; dakle, ovo je rasprava za neki drugi put. Doduše, Ruby propušta neke značajke koje imaju drugi jezici (Lisp hmm, hmm). Sve u svemu, Ruby je blizu vrha 'kontinuuma jezične snage'.
Mojih prvih nekoliko godina s Ruby bilo je ponizno. Toliko sam naučio čitajući tuđi kod. Ponekad sam bio zapanjen; ponekad sam bila luda; no na kraju mi je to znanje omogućilo da komuniciram s računalom mnogo učinkovitije nego prije. Gotovo mi je žao nekih drugih ‘birokratskih’ jezika zbog kojih skačete kroz obruče samo da biste ih preskočili, a sve dok vam kažem „Ja samo radim ono što je najbolje za vas, to je za vaše dobro!“
Duboko se poštuje pragmatizam upleten u Railsov DNK na najnižoj mogućoj razini. U kombinaciji s prednostima Rubyja, ovaj pragmatizam daje elegantna rješenja i potiče / nadahnjuje Zajednica za razvoj Ruby on Rails učiniti isto. Pragmatizam se često oglašava kao šator šina, tako da ova tvrdnja nije nova, ali podsjetio sam na to da je istinitost nedavno kada mi je prijatelj pokušao pokazati koliko sam 'cool' Hibernate stvarno jest. Mučio se. Osjetio sam njegovu bol jer nije uspio postaviti bezbroj opcija i konfiguracijskih parametara koji bi uopće trebali biti zadane vrijednosti okvira.
S godinama su moji standardi za umjetnu složenost postajali sve viši i viši. S obzirom na to da sam proizvodni kod počeo pisati davne 1989. godine u dobi od 11 godina (počevši od projekta za mog susjeda iz Clipper Ljeto ‘87 ), Imam blizu nulte tolerancije na nepotrebne komplikacije. A Rails ima jako visoke rezultate na tom odjelu. To je više od puke 'konvencije oko konfiguracije'; Govorim o cijelom pragmatičnom načinu razmišljanja koji je visoko cijenjen unutar i koji se prožima kroz zajednicu Rails.
Rails je najbliži engleskom jeziku (osim ako ne koristite COBOL). Koristi ono što je poznato kao interno DSL , proširujući Ruby vlastitom semantikom. Konstruiranje DSL-a uvijek je opasno jer učinkovito razvijate novi jezik. Budući da je interni, ne trebate koristiti vanjski parser, ali u određenom se smislu čini kao novi jezik. Rails tim postigao je dobru ravnotežu sa svojim DSL-om, koristeći ga tamo gdje to ima smisla i rijetko pretjerujući, pokazujući izvrsnu samokontrolu. Mislim da bi svaki programer, bez obzira na Railsovo iskustvo, (pa čak i neki ne-programeri) ovo mogao razumjeti:
class User true acts_as_taggable acts_as_taggable_on :certificates, :expertise_kinds validates_presence_of :first_name, :last_name, :email has_many :translations has_attached_file :avatar, :styles => {:small => '240x240>'} has_attached_file :cv ...
Zapravo, ako niste upoznati s Rubyjem, ovo bi moglo izgledati čudno - gotovo kao da nije programski jezik. Jednom kad shvatite da su to samo pozivi metoda bez zagrada, spremni ste za početak. Ipak, Rails DSL osjeća se kao da je ovo poseban jezik za opisivanje zahtjeva, a zapravo je to samo pametno imenovanje i svojstvena upotreba izvrsne Rubyne sintakse.
Rails ima vojsku obveznika koji osiguravaju da ostane u top-top stanju. Mnogi se projekti s godinama utapaju, no kod Rails-a iskre i dalje lete kad treba donijeti odluke. Čini se da održavatelji (još uvijek) istinski brinu i žele da ljudi koriste Ruby on Rails i shvate njegove prednosti.
Mnogi se projekti s godinama utapaju, no kod Rails-a iskre i dalje lete kad treba donijeti odluke. CvrkutIspod Rails-a, kao trešnja na vrhu, stoji Ruby sa svojim strašnim upraviteljem paketa, RubyGems , usporedivo s CPAN s obzirom na broj paketa - a s obzirom na CPAN-ovu dob, ta je tvrdnja (blago rečeno) vrlo impresivna. Rails je nakratko skrenuo s tračnica kada je pokušao izraditi vlastite 'Rails plugins'. Srećom, ovo se nije držalo, pa RubyGems ostaje jedinstveni, vrhunski izvor koda koji programiraju vrlo pametni pojedinci.
kako stvoriti api u javascriptu
Sinergija između cool jezika, pragmatičnog mrežnog okvira i izvrsne zajednice daje Railsu rezultat mnogo bolji od zbroja njegovih dijelova.
Tračnice su oko bloka. Na neki hipsterski način, to više nije ni tako cool. To je dobra stvar što se tiče odabira tehnološkog snopa: želite nešto provjereno. A Rails je upravo to. Nedavno smo napisali članak koji govori o širokoj paleti Tumači i vrijeme izvođenja Rubyja koji su sada dostupni.
Ja znam ja znam. Kao IT stručnjak, stvarno bih trebao cijeniti 'ozbiljan' stvari i zanemarite ‘Sjaj’ . Možda se čini plitko, ali suočavamo se s tim:
Ovdje se čak ne radi ni o taštini; radi se o angažiranju što većeg broja pametnih ljudi da stave vodu u mlin. Kad se razmatraju okviri, najbolje je biti u gužvi. Odabir okvira na koji se ovi pametni ljudi usredotočuju jednostavno znači da je za vas već pokriveno puno više terena. I ovo me dovodi do moje sljedeće točke.
Imam blago mjesto za sićušne okvire. Volim kad mogu razumjeti što određeni okvir radi i zašto. U tom smislu, Rails je pomalo napuhan, a ponekad i neodoljiv.
kako zaobići cvv kod
Ovdje je nedoumica: koliko puta želite iznova pisati iste stvari? Siguran sam da se neki od njih mogu bolje napisati, ali treba vremena - puno vremena. Što više dopustite Rails-u da učini za vas, to ćete manje morati brinuti o ponovnom pisanju ili ponovnoj implementaciji svoje funkcije.
Rails je (kako se kaže) 'baterije uključene'. To nije dobra stvar ako ste ljubitelj rijetkosti ili ako osjećate potrebu za širokim znanjem o tome kako sve funkcionira. U praksi, ako se oslobodite strahova, čini se da to djeluje. Rails ima razumne zadane vrijednosti za gotovo sve što vam treba i dovoljno je modularan da vas izbjegne da vas stisnu u usko mjesto.
Zapitajte se opet, zašto koristiti Ruby na tračnicama ? Rails je prikladan i za najsuvremenije javne web stranice koje se natječu s JavaScript aplikacijama s jednom stranicom i za složene poslovne programe korporativnog sustava koji obično izgledaju pomalo 'ružnije' (s generičnijim korisničkim sučeljem niže vjernosti), ali to nadoknađuju mrlja s gomilom složenih poslovnih pravila i logike. Njegova je prednost što je svestran i sposoban se natjecati i s elegantnim i s moćnim.
Za većinu najčešćih problema, Rails vam na raspolaganju ima komponentu koja je gotovo izravno s dokumentacijom koja je stalno iznadprosječna (nekako je osnovni tim Railsa uvjerio suradnike da je pisanje dokumentacije cool (iako svi znamo da je to not), što dovodi do dobro napisanih, konciznih i dokumenata koji štede vrijeme).
Kad ostavite po strani jednoroge i zagrljaje u petak, na kraju ćete dobiti moćni okvir koji možete koristiti i za buduću izmjenu igara i za svoju sljedeću poslovnu stranicu na sredini puta. A s vašim bazenom vrhunskih dragulja, na dohvat ruke imate arsenal koji provodi neke od najsjajnijih ideja u računalnom programiranju. Bez frke.
Povezano: Skraćivanje vremenske oznake: Priča o Ruby on Rails ActiveRecord