Ruby on Rails za web-dev pocetnike

lnxdr

Obećava
Poruka
68
Pozdrav svima, ja sam medior Ruby on Rails dev, ovim putem zelim da uputim druge u vec dobro poznati framework Ruby on Rails.
Omogucava veoma brzo pravljenje kompletnog sajta sa bazom podataka za 1 sat umesto dan. Ova tema je namenjena onima koji jos uvek odlucuju kojim putem da krenu u svetu programiranja, kao i onima koji zele da uce RoR. Takodje ako radite sa razlicitim bazama podataka, RoR je odlicna solucija, te je ovo tekst i za vas. Ovo su osnovne odlike Ruby on Rails-a, a u nastavku cu ostavljati linkove za ucenje kome je potrebno.

Ruby

Ruby je programski jezik, poreklom iz Japana, i zadnja verzija u vreme pisanja teksta je 2.7.0. Ruby je potpuno Object Oriented, za razliku od npr Python-a ili PHP-a koji nisu potpuno OOP. U ruby-ju je sve objekat, i ono sto definisete jednom mozete da koristite uvek. Jedna od odlicnih osobina koja odlikuje ruby programere, je DRY - "Don't Repeat Yourself". To znaci da ako neku funkciju koristite na vise mesta, definisite je kao metod samo jednom, umesto da ponavljate isti kod i dalje. To omogucava mnogo brze pisanje koda nego u drugim programskim jezicima. Takodje Ruby ima popularne Gemove, prethodno napisan kod (libraries), koji dodatno skracuje vreme programiranja.

Vise o ovom programskom jeziku mozete potraziti na internetu, de poceti sa osnovama koje su dostupne svuda (linkove cu dodavati naknadno). Ruby je Open-Source, i tako su i gemovi dostupni besplatno i lako:
https://rubygems.org

Rails

Rails je framework koje je napisan u Ruby jeziku. U pitanju je MVC framework (Model-View-Controller), kao sto su Laravel ili CodeIgniter u PHP-u. Jedna od osnovnih odlika, takodje medju najbitnijim odlikama Rails-a, je DRW - "Don't Reinvent the Wheel", odnosno "convention over configuration". Ako je nesto uradjeno kako treba, i radi kako treba, nemoj ga menjati. Tu se ponovo vracamo na Gemove, delove koda koje programeri postavljaju na rubygems.org, kako bi drugi mogli da ih koriste u svojim projektima. Rails je takodje sam po sebi ruby Gem, a gemovi koje koristite u projektu se definisu u dokumentu Gemfile. Evo kako izgleda jedan Gemfile od web aplikacije napravljene u RoR-u:

Ruby:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.4'

gem 'carrierwave'
gem 'mini_magick'
gem 'devise'
gem 'simple_form'
gem 'jquery-rails'
gem 'bulma-rails'
gem 'rails', '~> 6.0.3', '>= 6.0.3.4'
gem 'sqlite3', '~> 1.4'
gem 'puma', '~> 4.1'
gem 'sass-rails', '>= 6'
gem 'webpacker', '~> 4.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.7'
gem 'bcrypt', '~> 3.1.7'
gem 'bootsnap'
gem 'friendly_id'
gem 'will_paginate', '~> 3.1.0'
gem 'blockcypher-ruby', '~> 0.2.6'
gem 'money-tree'

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

Rails ima mnogo precica (komandi) koje vam dodatno olaksavaju posao, automatski kreirajuci HTML i bazu podataka. Upravo tako, bazu podataka. Rails omogucava rad sa razlicitim tipovima DB poput mysql, postgresql, sqlite3, redis... i mozete da kreirate nove tabele, kolone, podatke u kolonama, bez znanja SQL jezika. Za ovo je zasluzan gem Active Record, koji kontaktira sa bazom podataka.

Rails ima takodje jos jednu veliku prednost, a to je TEST. U rails-u je veoma lako napisati test za svaku funkciju u kodu, i Rails veoma dobro prati greske i obavestava vas tacno gde je problem. Na ovaj nacin se lako proveri da li aplikacija potpuno radi, a sam RSPEC test kada se cita objasnjava sam sebe.

Za oni koji vec imaju osnovno znanje u RoR-u, ovde su 2 (u seriji od 3) tutoriala na srpskom:
Deo I => https://dev.to/linuxander/rails-bitcoin-prodavnica-deo-i-52ph
Deo II => https://dev.to/linuxander/rails-bitcoin-prodavnica-deo-ii-2ilj

Ako imate nesto da pitate, pitajte ovde ili preko PP, ali ne garantujem kada cu procitati PP.
 
Ako je ruby interpreter ili delimicni compiler, kolika je podrzanost i brzina od strane browsera koji postoje ili su manje poznati...
WEBGL kao skup instrukcija je npr primer za dve stvari , kako je lako biti uspesan a uzasno los programer webgl koji daje uzasno spor i los prikaz i istovremeno koliko je razlicita brzina kojom se kod izvrsava na razlicitim browserima..

Posto je danas svima vaznije da brzo napisu kod, to je net prepun smeca od sajtova....koji rade ili ograniceno rade...ili zahtevaju net koji je optika i mali ping...
 
Govorim o brzom pisanju koda ali bez gubljenja na kvalitetu. Ruby i Rails omogucavaju da se brzo urade jednostavne stvari, medjutim ima jos mnogo toga sto ga cini veoma profesionalnim i visoko kvalitetnim. Brzina renderovanja Rails views nije nesto cime se RoR moze pohvaliti, cak sta vise sporiji je od konkurencije. Medjutim to 'sporiji' je samo u statistici, iz mog iskustva (o sajtova poput GitHub, Shopify, Netflix) vidim da je u stvari u praksi stvar drugacija. Takodje RoR podrzava stare browsere bez problema, od tebe zavisi kako ces da radis frontend, backend je dovoljno brz. Mana RoR-a je to sto nema toliko shared servera kao za druge jezike, dakle moras uzeti VPS. Takodje Rails kao backend za aplikaciju koja koristi JS kao frontend, dovoljno je brzo da ne smeta korisniku i da dobije dobru ocenu od Google-a. (iako SEO nije toliko moj fah)

Medjutim Ruby ponovo ima prednost da se isti kod koristi na bilo kom OS-u, da se koristi za GUI aplikacije, Android, Web, da je sam po sebi siguran (CSRF, sql injection, XSS) sto je mnogo bitnije od svega drugog, a sto wordpress cini izuzetno problematicnim za sajtove koji rade sa poverljivim informacijama.
 
Da ne otvaram nove teme, dodavacu komentar ovde, sa stvarima za koje mislim da mogu da posluze drugima.

AFINUS (Anti Forensic Investigation Null Script)

Ovo sam prvo napisao kao skriptu, pa je prepravljeno i spakovano kao Ruby Gem. Veoma korisno ako zelis da prodas racunar, a bojis se da neko moze da povrati obrisane podatke. Nakon ovoga je apsolutno nemoguce povratiti bilo sta, a opet je jednostvniji od vecine programa tog tipa. Afinus source code je dostupan https://www.github.com, kao i na https://rubygems.org.

Popunjava prazan prostor na hard disku fajlovma od 512 random kb, dok ga ne popuni skroz. Onda uzima svaki fajl, i prepise ga sa 100 random byte-a, pa ga obrise na 0, i to ponovi jos 3 puta sa 50 i 100 random byte-a. Moze da se definise pocetni folder, ili pocinje od foldera iz kog je skripta pokrenuta. Takodje ima opciju -r (recursive), znaci da nastavlja da cisti i ostale foldere i fajlove u njima.

Ako koristite Linux:
Bash:
sudo apt install ruby
gem install afinus

Za Windows:

Korak I:

Instalirajte Ruby programski jezik. Ovo je i vise nego lako.

Korak II:
U vasem terminalu (CTRL+T za linux, CTRL+R ako koristite windows) kucajte:
Bash:
gem install afinus

Korak III:
Napravite novi dokument, nazovite ga afinus.rb i u njega dodajte sledece:
Ruby:
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'afinus'

  opts = Optimist.options do
    opt :recursive, 'Clean directories recursively'
    opt :dir, 'Working directory', default: Dir.pwd, type: :string
  end

  AFI.new.execute!(opts.dir, recursive: opts.recursive)

Da ga pokrenete iz vaseg terminala ukucajte:

ruby afinus.rb -d '/home/directory' -r

Obavezno uraditi backup pre pocetka!
Ako hocete da ga testirate, radite to u VM!
 
Evo postupak za instaliranje Ruby i Rails-a, da ne otvaram novu temu za to. Ako koristite windows imate ruby installer, ukoliko koristite linux, najbolja opcija je RVM (ruby version manager). Sa njim jednostavno mozete imati vise Ruby verzija bez problema.

Instalirajte sve sto je potrebno pre Ruby-ja:

Bash:
sudo apt install curl
curl -sL [URL]https://deb.nodesource.com/setup_12.x[/URL] | sudo -E bash -
curl -sS [URL]https://dl.yarnpkg.com/debian/pubkey.gpg[/URL] | sudo apt-key add -
echo "deb [URL='https://dl.yarnpkg.com/debian']https://dl.yarnpkg.com/debia[/URL]n/ stable main" | sudo tee / etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install git-core zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn

Nakon toga instalirajte RVM:

Bash:
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev gpg2
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL [URL]https://get.rvm.io[/URL] | bash -s stable
source ~/.rvm/scripts/rvm
rvm install 2.7.0
rvm use 2.7.0 --default
ruby -v

Restartujte racunar i instalirajte bundler sa

gem install bundler

Da instalirate rails:

gem install rails
 

Back
Top