Wynika to z uczenia się przez doświadczenie, ciągłego uczenia się i pisania stosunkowo prostej aplikacji w Railsach.
1) Krzywa uczenia się
Szyny są zwodniczo proste. Wszystkie samouczki, filmy i książki pokazują, jak szybko można uzyskać działającą (choć brzydką) aplikację, ale tak naprawdę po prostu drapią powierzchnię. Zwykle polegają głównie na generowaniu kodu i „rusztowaniu”, co wprawdzie jest dobrym narzędziem do nauki, ale szybko przestaje być przydatne.
Nie popełnij błędu, Rails jest trudny do opanowania. Gdy przejdziesz przez podstawy (więcej o tym później), wybiegniesz na ścianę, jeśli chcesz zrobić coś więcej niż bardzo uproszczoną funkcjonalność „aplikacji demo”, którą widzisz. Możesz uczyć się z podstawową znajomością języka Ruby podczas nauki, ale szybko musisz go podnieść, bo w przeciwnym razie pozostaniesz wysoki i suchy (i nie jest to dobry rodzaj DRY
), jeśli chcesz wyjść poza ograniczenia Rails.
Rails to, jak lubię to nazywać w sposób kochający, programowanie według numerów . Jeśli trzymasz się w 100% konwencji (tj. Trzymasz się linii i używasz kolorów, o których kazanie ci chodzi), możesz szybko i łatwo tworzyć przyzwoite aplikacje. Jeśli i kiedy musisz zboczyć, Railsy mogą przejść od twojego najlepszego przyjaciela do najgorszego wroga.
2) Gdy wszystko, co masz, to młotek ...
Railsy bardzo dobrze radzą sobie z uproszczonymi aplikacjami CRUD. Problem pojawia się, gdy aplikacja musi robić coś więcej niż tylko odczyt / zapis z bazy danych. Teraz, dla przypomnienia, ostatnią wersją Railsa, której użyłem, było 2.3.4, więc od tego czasu mogły się zmienić, ale napotkałem poważne problemy, gdy zmieniły się wymagania biznesowe, więc aplikacja musiała mieć wbudowany mały system przepływu pracy i zintegrować się z starsza aplikacja PHP. Konwencja Rails „jedna forma, jeden model” działa dobrze w przypadku trywialnych aplikacji i aplikacji do wprowadzania danych, ale nie tak bardzo, gdy trzeba wykonać logikę przetwarzania, mieć przepływy pracy lub cokolwiek innego niż typowy „Użytkownik wprowadza dane do kilka pól tekstowych, trafienia Prześlij „rzecz”. To może być zrobione, ale to bynajmniej nie „Easy”, czy raczej to nie było”
Ponadto Rails nie lubi dobrze grać z innymi aplikacjami, które nie używają jego preferowanych metod dostępu do danych; jeśli musisz połączyć się z aplikacją, która nie ma interfejsu API w stylu „Web 2.0”, musisz obejść Railsy zamiast tego; znowu mówię z doświadczenia tutaj, ponieważ tak się ze mną stało.
3) Jest nowy
Wreszcie, Rails wciąż jest „nowym dzieckiem na bloku” w wielu obszarach. Nie ma to znaczenia dla użytku osobistego lub scenariuszy typu „Myślę, że to fajne i chcę się tego nauczyć”, ale mówienie jako ktoś, kto wolałby używać Railsów w mojej codziennej pracy, jeśli nie jesteś w miejscu, w którym Rails jest rozpowszechnione, może być bardzo trudno znaleźć pracę w pełnym wymiarze godzin jako programista Railsów. Nadal jest w dużej mierze domeną „modnych, nowych startupów” i nie jest znaczącym graczem w większości obszarów metropolitalnych. Twój przebieg może być różny pod tym względem, ale wiem, że moja okolica (Tampa) Szyny w zasadzie nie istnieje.
4) Ogień i ruch
Szyny ciągle się zmieniają. Jest to zarówno dobra, jak i zła rzecz; to dobrze, ponieważ społeczność ewoluuje i obejmuje nowe koncepcje. Jest źle, ponieważ społeczność ewoluuje i obejmuje nowe koncepcje. Dla początkującego Railsów może to być bardzo przytłaczające, ponieważ zazwyczaj, gdy napotkasz problem i rozejrzysz się, zobaczysz albo osoby polecające taki i taki klejnot, aby to naprawić, albo mówiące, że i tak jest źle i nie powinieneś użyj go, oto lepszy sposób ... i w końcu masz listę prania dodatkowych narzędzi do nauki wraz z Railsami, aby nadążyć za cognoscenti Railsów. Rzeczy takie jak Git
, BDD/RSpec
, Cucumber
,Haml/Sass
, a róg obfitości innych rzeczy unosi się wokół i zostaje popchnięty jako „właściwy sposób robienia rzeczy” w Rails-land, a mówiąc z doświadczenia możesz zostać zalany próbą nauczenia się kilkunastu lub więcej technologii oprócz Railsów, ponieważ używanie standardowego zestawu narzędzi Railsów wydaje się „złe”.
Jest to jeszcze bardziej skomplikowane przez Rails 3.1, dzięki czemu Sass i CoffeeScript wszystkich rzeczy są domyślnymi, więc nowicjusz w Rails musi nie tylko nauczyć się Ruby i Rails, ale Sass (prawdopodobnie prosty, jeśli znasz CSS) i CoffeeScript (nie jest to szalenie trudne, ale na pewno różni się od surowego JavaScript) na minimum, aby zacząć, a ponadto można założyć, że Git. Nawet bez uwzględnienia RSpec i przyjaciół oraz kilkunastu klejnotów, z którymi zwykle się skończysz, to 4 różne rzeczy, których musisz nauczyć się, zanim zaczniesz poważnie pisać aplikacje Railsowe. Porównaj to z językiem takim jak C #, Java, a nawet PHP, w którym Twoja wiedza na temat HTML / CSS / JavaScript / SQL nie ulegnie zmianie i wystarczy nauczyć się samego języka i być może niuansów ramowych.