ტექნოლოგიურ სამყაროში ახალი პროექტი გამოჩნდა, რომელიც Unix shell-ის კონცეფციას ახლებურად აყალიბებს. Rubish არის shell, რომელიც მთლიანად Ruby-ს ენაზეა დაწერილი. მისი მთავარი უპირატესობა Bash-თან სრულ თავსებადობაშია, რაც ნიშნავს, რომ მომხმარებლებს შეუძლიათ თავიანთი არსებული სკრიპტები ცვლილებების გარეშე გაუშვან.

როგორ მუშაობს Rubish?

Rubish არ არის მხოლოდ shell-ის კიდევ ერთი რეალიზაცია; ის Ruby-ს ენას სისტემურ დონეზე აინტეგრირებს. shell-ის სინტაქსი განიხილება და კომპილირდება Ruby-ს კოდად, რომელსაც შემდეგ Ruby-ს ვირტუალური მანქანა (VM) ასრულებს. ეს საშუალებას გაძლევთ, shell ბრძანებები და Ruby-ს კოდი ერთმანეთში შეუფერხებლად აურიოთ.

მაგალითად, შეგიძლიათ გამოიყენოთ Ruby-ს ისეთი მახასიათებლები, როგორიცაა ბლოკები, იტერატორები და ბიბლიოთეკები პირდაპირ shell სკრიპტებში. პირობითი ოპერატორები, როგორიცაა if, while ან until, შეიძლება შეიცავდეს Ruby-ს გამოსახულებებს ფიგურულ ფრჩხილებში, სადაც shell-ის ცვლადები ავტომატურად უკავშირდება Ruby-ს ლოკალურ ცვლადებს.

მოქნილი სინტაქსი და ინტეგრაცია

Rubish-ში ბრძანებების გაშვება შესაძლებელია როგორც ტრადიციული Unix სტილით, ასევე Ruby-ს მეთოდების გამოძახების სინტაქსით. შესაძლებელია ბრძანებების გადაჯაჭვა (pipelining) Ruby-ს მეთოდების გამოყენებით, რაც კოდს უფრო სუფთას და წაკითხვადს ხდის.

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

პროექტი ასევე გთავაზობთ lazy_load ფუნქციას, რომელიც საშუალებას იძლევა, ნელი ინიციალიზაციის პროცესები (როგორიცაა rbenv ან nvm) ფონურ რეჟიმში გადაიტანოთ. შედეგად, shell-ის ჩატვირთვა მყისიერია, რაც მნიშვნელოვნად ზრდის მუშაობის ეფექტურობას.

უსაფრთხოება და API

მათთვის, ვისაც არასანდო სკრიპტების გაშვება სჭირდება, Rubish-ს აქვს -r რეჟიმი. ის თიშავს Ruby-ს ინტეგრაციის ყველა ფუნქციას და ტოვებს მხოლოდ სტანდარტულ shell სინტაქსს, რაც უზრუნველყოფს უსაფრთხო გარემოს.

გარდა ამისა, Rubish-ს აქვს საჯარო API, რაც საშუალებას აძლევს სხვა Ruby პროგრამებს, როგორიცაა ტერმინალის ემულატორები ან IDE დანამატები, პირდაპირ მართონ Rubish-ის სესიები. ეს მიდგომა გამორიცხავს ზედმეტ პროცესებს და ზრდის სისტემის მუშაობის სისწრაფეს.