გრეილსი

**გრეილსი** — სრულყოფილი ვებ პროგრამების დამამზადებელი პლათფორმა, რომლის კოდი გახსნილია პროგრამისტებისთვის. ის იყენებს ჯავისა და გრუვის გაერთიანებულ კოდებს, რაც მას განსაკუთრებულ სიძლიერეს ანიჭებს თავის სფეროში. ჯავა, რომელიც სრულყოფილი და დახვეწილი პროგრამირების ენაა, გრეილსის ქვედა ფენების კონტრილისთვის გამოიყენება, ხოლო გრუვი — სკრიპტინგის მიზნებისთვის. გრეილსის მეშვეობით ვებგანვითარება უფრო მაღალი დონის აბსტრაქციაზე ადის და მარტივს ქმნის რთული პრობლემების გადალახვას.

## გრეილსის მუშაობის მოდელი 
გრეილსი დაფუძნებულია მოდელ-ხედ-კონტროლერის (MVC) ბაზაზე. მოდელი წარმოადგენს გადასაწყვეტი პრობლემის მთავარ ლოგიკას. ხედი პრობლემის ვიზუალური წარმოდგენაა, ხოლო კონტროლერი ამ ორის გამაერთიანებელი სისტემაა. პრობლემის ასეთი გზით გადაწყვეტა საშუალებას იძლევა მოდელი და ხედი ერთმანეთისაგან სრულიად დამოუკიდებელი გახადოს. კარგად დამზადებული და განხილული კონტროლერი ერთი და იმავე მოდელის სხვადასხვანაირი ხედით წარმოდგენას ამარტივებს.

thumb|250px|გრეილსის მუშაობის მოდელი.

## გრეილსის მთავარი თვისებები 
გრეილსის უამრავ თვისებას შორის აღსანიშნავია ხუთი თვისება, რაც მას განსაკუთრებულს ხდის. ესენია:
# *Convention over Configuration:* იმის მაგივრად, რომ გამოყენებული იქნას უამრავი XML ფაილი სისტემის სამართავად, გრეილსი დაფუძნებულია კონვენციებზე ანუ პირობითობებზე, რათა გაამარტივოს და უფრო ნაყოფიერი გახადოს პროგრამების განვითარება.

# *Unit Testing:* იმის გამო, რომ გრუვი არის დინამიკური პროგრამირების ენა და კომპილაციის ფაზას ხშირად არ გადის, შეუძლებელია მრავალი შეცდომის გამოვლენა სანამ პროგრმის რეალური გაშვება არ მოხდება. ჯავა, რომელიც თავიდან კომპილირდება, ახერხებს ისეთი შეცდომების დადგენას, როგორიცაა ცვლადის ტიპი, რაც გრუვის სიტუაციაში არ არის შესაძლებელი. Unit Testing წარმოადგენს გრუვის კოდების ნაწილობრივ ან სრულ ტესტირებას, სადაც დგინდება შესაძლებელი შეცდომების დაშვების რეგიონები.

# *Scaffolding: create read update delete*. ამ თვისების მეშვეობით კოდის რამდენიმე ხაზით მონაცემთა ბაზის ელემენტარული მოქმედებების გამოყენება შეიძლება. ეს მოქმედებებია: შექმნა (create), წაკითხვა (read), განახლება (update) და წაშლაა (delete).

# *Object Relational Mapping:* მონაცემთა ბაზის და დომეინ კლასების დამაკავშირებელი სისტემა GORM მონაცემთა ბაზის ცხრილებს დომეინ კლასებზე დაყრდნობით ქმნის. ის აგრეთვე აწარმოებს ცხრილებს შორის ურთიერთობებს. რაც მთავარია GORM-ი ავტომატურად ქმნის ამ ცხრილებზე ელემენტარულ მოქმედებებს, რის გამოც არ არის საჭირო ამ მოქმედებების დომეინ კლასებში ფუნქციების სახით გამოხატვა.

# *Plug-in:* საცობები ანუ ფლაგ-ინები გრეილსის სხვადასხვა თვისებების გასაფართოვებლად გამოიყენება. არსებობს უამრავი ფლაგი-ინი რომლის პოვნაც ინტერნეტშია შესაძლებელი. ვებ პროგრამის განსაკუთრებული თვისების შემოსატანად შესაძლებელია მათი პერსონალურად დამზადება.

## გარე ტექნოლოგიები 
გრეილსის სიმძლავრე გამოიხატება არა მხოლოდ თავისი თვისებების გამო, არამედ სხვა კარგად ცნობილი ტექნოლიგიების გამოყენების
ხარჯზე. გრუვის ენის გამოყენების გარდა ის მჭიდროდ არის დაკავშირებული Spring Framework-თან, Hibernate ობიექტების მონაცემთა
ბაზასთან დამაკავშირებელ სისტემასთან, ვებ გვერდების გარეკანის დამამზადებელ SiteMesh Framework-თან, ასინქრონულ ჯავასკრიპტ Ajax Framework-თან, Jetty-ს სრულყოფილ ვებ პროგრამების განვითარების გარემოსთან, მონაცემთა ბაზის HSQLDB სისტემასთან და JUnit ტესტირების ცნობილ სისტემასთან. სწორედ ამ ჩამონათვლის გამო შესაძლებელია გრეილსის როგორც ვებ დამზადების საკმაოდ სრულყოფილ, ძლიერ და თანამედროვე სისტემად ჩათვლა.

## ტესტირება 
გრეილსი წარმოგვიდგენს ორი ტიპის ტესტირებას, რომლებიცაა ერთეული(unit) და ინტეგრირებული(integration) ტესტები. ერთეული ტესტირება შესაძლებელია ცალკეულ კლასებზე, ხოლო ინტეგრირებული ტესტირება მთელ აპლიკაციაზე იწარმოება, რაც მას ერთეულ ტესტირებასთან შედარებით უფრო ნელს ქმნის.
ტესტირება ხდება სპეციალური ფაილების მეშვეობით რომლებიც იქმნება კონტროლერ ფაილებთან ერთად.
კონსოლში ჩაწერილი ბრძანება grails create-controller myController ქმნის ორ ფაილს myCtrler.groovy და myCtrlerControllerTests.groovy.
myCtrlerControllerTests.groovy ფაილი შეიცავს myCtrler.groovy კონტროლერ ფაილის ტესტირების ვარიანტებს. ტესტირების ფაილში იმ პროგრამის გაშვების
იმ ვარიანტებს ვწერთ, რომელებსაც მოველოდებით კონტროლერ ფაილის გაშვებისას.

## გრეილსის კონსოლი (აგრეთვე გრუვის კონსოლი) 
გრეილსის კომპიუტერზე დაყენებისას ავტომატიურად ინსტალირდება პროგრამირების ენა გრუვი. იმის გამო რომ ეს ენა არის დინამიკური და სკრიპტების სახით გვევლინება,
არსებობს ამ ენის ტესტირების ან მოკლე სკრიპტების გაშვების მოსახერხებელი ხელსაწყო groovyConsole. ამ კონსოლის გაშვება შეიძლება groovyConsole ან 
grails console ბრძანებების გამოყენებით. მეორე შემთხვევაში აუცილებელია ვებ პროგრამის საქაღალდეში ყოფნა. კონსოლის გაშვების მერე ჩნდება ფანჯარა რომელიც გაყოფილია სკრიპტების ჩაწერის და მათი გაშვების შედეგის ქვეგანაყოფებად.
ზედა ნაწილში შესაძლებელია გრუვის კოდის ნებისმიერი გამოსახულების აკრეფვა. 
thumb|250px|გრუვის კონსოლი.
მაგალითად ქვემოთ მოყვანილი გამოსახულების გაშვებისას

   def kateti_1 = 3
   def kateti_2 = 4
   def ipotenuza = Math.sqrt ( ((kateti_1)**2) + ((kateti_2)**2) )

მივიღებთ შემდეგ გამოსახულებას ანუ შედეგს

   groovy> def kateti_1 = 3
   groovy> def kateti_2 = 4
   groovy> def ipotenuza = Math.sqrt ( ((kateti_1)**2) + ((kateti_2) ** 2) )
   Result: 5.0

## რესურსები ინტერნეტში 
* Grails home page 
* Groovy home page
* Grails Screencasts 
* Introduction To Grails, by Jeff Brown, Principal Software Engineer, Object Computing, Inc. (OCI)
* Getting Started with Grails, by Jason Rudolph, as part of the InfoQ Enterprise Development series of books — available as a free PDF download to registered users
* Grails Tutorials  fresh grails posts, from the blogosphere, with code snippets and tutorials to get started quickly
* Grails Tutorial  Gentle introduction to Grails
* Grails Brasil  Largest Brazilian Grails user group

კატეგორია:პროგრამირების ენები