Feia temps que em deia "has de llegir un tutorial de Ruby on Rails per aprendre'l". M'ho deia perquè Mastodon està principalment fet en aquest llenguatge de programació i la seva funcionalitat és espectacular. El moment ja ha arribat.

Estic aprenent els conceptes bàsics de Ruby on Rails, com per exemple que és un llenguatge basat en el patró MVC, M de Model, V de View i C de Controller. Model és l'encarregat de gestionar les bases de dades, View les pàgines (views) que es veuran en el navegador i Controller qui controla tot plegat. Ruby on Rails inclou tot el necessari per a crear aplicacions web, amb les dades relacionades dins la base de dades que vulguem, per exemple SQLite per a projectes petits o Postgresql per a projectes grans com ara Mastodon.

Crear un projecte, per exemple Blog, a Ruby on Rails és tant fàcil com teclejar el següent en el terminal:

rails new blog

Això genera tota l'estructura de directoris i fitxers necessaris per el projecte, dins de la carpeta blog. Però no avancem esdeveniments.

Com instal·lem Ruby on Rails a Debian Buster? Cal preparar el nostre estimat Debian amb els prerequisits:

sudo apt install build-essential curl nodejs

sudo apt install gawk autoconf automake bison libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool libyaml-dev pkg-config sqlite3 zlib1g-dev libgmp-dev libreadline-dev libssl-dev libpq-dev

I si no el tenim encara l'hi posem git:

sudo apt install git

Instal·lem yarn:

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn

Per a gestionar les versions de Ruby del nostre sistema va d'alló més be 'rbenv'. Com a usuari normal fem:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

Després dels passos de dalt ja podem instal·lar la versió concreta de Ruby que vulguem, per exemple la v2.6.6:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.6
rbenv global 2.6.6

Si dona l'error "configure: error: jemalloc requested but not found" cal que instal·lem la llibreria de desenvolupament de jemalloc:

sudo apt install libjemalloc-dev

I repetim els passos anteriors:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.6
rbenv global 2.6.6

Comprovem que s'ha instal·lat amb éxit fent 'ruby -v':
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]

Un cop tenim Ruby instal·lat ja podem fer ús del comando 'gem', que ens servirà per a instal·lat 'gems', o sigui, tot tipus de llibreries i dependències per el nostre projecte. Si no volem que 'gem' ens instal·li també la documentació, li podem dir així:

echo "gem: --no-document" > ~/.gemrc

Ara necessitem tenir el 'bundler', que ens ajudarà a gestionar les dependències de la nostra aplicació:

gem install bundler

I ja li toca el torn a Rails!

gem install rails

Quan hagi acabat ens dirà "40 gems installed" i podrem comprovar la versió que tenim amb "rails -v". A mi em retorna "Rails 6.0.3.4".
Ara ja podem crear els nostres projectes, fets amb Ruby on Rails, però ho veurem en un següent article.