ПредишенСледващото

Вероятно сте чували за това как често Руби на релси увеличава производителността и качеството на производителността на уеб програмист. Честно казано, за да се разбере напълно, защото от това, което е необходимо, без цензура, за да се чете "Agile Уеб разработка с релси». Въпреки това, в малка серия, аз все още се опитват да даде обща представа за това, което е на "релси" и как те са толкова добри.

Много кратка история на Ruby и RoR

Имах нужда от "скриптове" език, който ще бъде по-силен от Perl, и по-ООП от Python. Затова реших да се създаде свой собствен език за програмиране.

В интервю за O'Reilly LinuxDevCenter


Снимки от официалното си блог

Но всичко това са голи и скучни факти.

Накратко за свръх и ползите


Ако търсите информация за RoR, а след това да се препънат по силни изявления, че използването на тази рамка може да се развие 10 пъти по-бързо уеб приложения от Java (с неговите рамки, разбира се), и т.н. Така че не вярвам, че всичко това. Отначало го опитате сами, а след това няма да се налага да се каже нищо. И така, вие ще разберете, че това е наистина вярно.

И така, какво е толкова добри тези релси? Най-важното нещо, по мое мнение, е фактът, че рамката не е роден в изкуствени условия, както и "излъган" от работещ и печеливш софтуерен продукт. По този начин, още преди първото споменаване, той премина втория тур в реалния свят, с реални потребители и риск. Ако се вгледате в архитектурните и техническите аспекти, на

- от една страна, архитектурата MVC го прави лесно да се разделят слоевете на данни, представяне и бизнес логика един от друг;
- второ, RoR стриктно спазва принципа на DRY (не се повтаряй - не се повтаря), която ви позволява да пишете гъвкави и legkosoprovozhdaemye приложения;
- На трето място, релси Ви дава възможност да се съсредоточи върху задачата, а не изобретяването на колелото. Ако е необходимо да се провери дали е изпълнен полето за име, просто напишете validates_presence_of: име и да преминат към изпълнението на по-важните неща (or'll отиде да пие чай);
- и накрая, това е рамка от уеб програмисти практикуващи практикуване на уеб-програмисти, а не плод на болен мозък - луд теория - на "разработчиците", маркетинг щепсела или курсовата работа по компютърни науки.

слой данни (модел) - ActiveRecord


ActiveRecord е реализация на ORM, снабден с релси. Но това, което е ORM? ORM (Object-релационни съответствия) - техника, на представяне на база данни с помощта на обекти. Т.е. клас е една маса низ обект и неговите полета, съответно, на колоната. защото повечето читатели запознат «С подобни» синтаксис, тук е един пример в Java.

Вземете няколко книги за маса:
ID междинно съединение (10)
име VARCHAR (100)

Тази таблица може да бъде представен като клас книга:

обществени клас Book обществен инт номер;
обществено име String;


Т.е. Book thinkinginjava = нова книга (1); ние ще се върне линия книги в таблица ID = 1.

ActiveRecord ни предлага много богат изпълнение на ORM, което от своя страна изгражда йерархия на класове на базата на структурата на таблицата. Освен това, тук (както е, наистина, на друго място в RoR) се подкрепя от принципа на "Конвенция над конфигурация". Но текстът на текста и кода казва всичко за себе си. Ако вземем таблицата по-горе, ние само трябва да тичам поколение модел скрипт само:

рубин скрипт / генерира модел Book


И готово! В папката / ап / модели / появи book.rb файл чрез отваряне, че ще видим нещо подобно на следния код:

клас Book край


И така, какво се е случило? Имаме готов модел за масата за книги. Когато Rails инициализация означава, че името на таблицата е името на класа, в множествено число, когато думите са разделени с долна черта. Т.е. поръчки маса съответства на клас орден, line_items - договорената покупка, хората - Лице, и т.н. Така, вече можем да го използваме ..:

defensivedesign = Book .new
defensivedesign. име = "Отбранителна Дизайн за уеб"
defensivedesign. спасяване


Както можем да видим, атрибутите на класа по подразбиране се изпълняват, което да съответства на колони в таблицата и методи за CRUD (Създаване, получите паролата, актуализиране, изтриване). Няма да описвам тук тези методи, за да не се превърне тази статия в един вид наръчник. Те са много и те са много удобни.

Така че, с помощта на някои "магия" за нас е огромна сума на рутинна работа. Въпреки това, много да мисля, че не може да се измъкне по някакъв начин след тази магия. Това не е така, защото всички "Споразумението" лесно може да бъде игнориран. Например, ако вече имате база данни, която не може да се променя и таблицата за книгите, тя се нарича книги, а след това просто трябва да се отбележи това:

клас Book set_table_name "книги"
край


Същото се отнася и с други неща, като, например, първични ключове. По подразбиране, RoR предполага, че областта е основен ключ, наречен номер (който, между другото, е много разумно), но можете да го поправите, като писмено set_primary_key "kitob_cifra".

Едно от малкото места, където трябва да изберете този файл /config/database.yml, в която се посочват видът и името на базата данни. Заслужава да се отбележи, че развитието се препоръчва използването на три еднакви база данни за трите състояния на системата: производство, разработка и тестове. Както подсказва името, това е една производствена база за стабилни версии на системата, развитие - да се развива и изпитване е предназначено за автоматизирани тестове.

database.yml подаде Пример:

развитие:
адаптер. MySQL
база данни. books_development
потребителско име. корен
парола. парола
домакин. Localhost

тест:
адаптер. MySQL
база данни. books_test
парола. парола
домакин. Localhost

производство:
адаптер. MySQL
база данни. books_production
парола. парола
домакин. Localhost


Към днешна дата, Руби на релси поддържа бази данни като MySQL, DB2, PostgreSQL, Oracle, SQLite, MS SQL Server.

Това не е всичко, което се отнася до ActiveRecord и аз не се каже за отношенията между маси, сделки, агрегация, обратни повиквания и др. Това просто не е част от формата на тази статия. Само ще отбележа, че почти всичко в RoR реализира възхитително прост. Трябва да предоставите една маса в едно дърво на обекти, сортирани по полето за име? Няма нищо по-лесно!

Категория клас acts_as_tree. За да => "име"
край


Така че ние видяхме, че нивото на данни в RoR се осъществява в една проста, но в същото време, много мощен инструмент - ActiveRecord, което отнема по-голямата част от рутинните операции и ви позволява да се съсредоточи върху себе си задачата. Следващия път ще говорим за нивото на бизнес логика "на релси", т.е. около контролери.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!