Rails es un framework basado en Ruby, para agilizar y optimizar el desarrollo web
Cuando clonamos:Ruby install
git clone https://github.com/postmodern/ruby-install.git cd ruby-install/bin ./ruby-install --update ruby #la ultima version vi ~/.bashrc export PATH="$PATH:/home/fed/.rubies/ruby-3.2.2/bin" . ~/.bashrc gem i rails yum -y install nodejs // Para JavaScript runtime
bundle
gem i las que fallen
Actualizamos las versiones de ruby y rails en Gemfile, para que coincidan con las nuestras
Debemos atender a:
ruby --version
Nueva app
sqlite3 --version
gem install rails
rails new app-name
Despliegue
bin/rails server
Generar controlador
rails server -e production
bin/rails generate controller Articles index --skip-routes
Configurar rutas
config/routes.rb
Generar modelo
Rails.application.routes.draw do
root "articles#index"
get "/articles", to: "articles#index"
end
bin/rails generate model Article title:string body:text
Generar modelo, referente a otro
bin/rails generate model Comment commenter:string body:text article:references
Añadir campo a la bd
rails generate migration AddNewValuesToComments star:integer
Eliminar campo de la base de datos
rails generate migration RemoveInitialValuesFromComments star:integer
Migrar modelo hacia la bd, siempre que creemos, modifiquemos, borremos la estructura de bd
bin/rails db:migrate
Consola interactiva Ruby sin acceso a la base de datos del proyecto
bin/rails irb
Consola interactiva Ruby con acceso a bd del proyecto
bin/rails console
Inicializar un objeto nuevo,
article = Article.new(title: "Hello Rails", body: "I am on Rails!")
Grabarlo en la base de datos
article.save
Mostrarlo
article
Mostrar el primer articulo de la bd,
Article.find(1)
Mostrarlos todos
Article.all
Eliminar uno
Article.delete_by(id:1)
Eliminar varios
Comment.delete_by(id:[16..19])
En el controlador, estipulamos lo que mostrara la vista
app/controller/articles_controller.db
La vista
def index
@articles - Article.all
end
app/views/articles/index.html.erb
Vemos que tiene sintaxis similar a JSP
<% @articles.each do |article| %>
<%= article.title %>
<% end %>
Bootstrap
En Gemfile
Font Awesome
# Booststrap
gem 'bootstrap', '~> 5.3.0.alpha3'
gem 'bootstrap_form'
gem 'jquery-rails'
gem "font-awesome-sass", "~> 6.4.0"
En app/assets/stylesheets/application.css.scss
Podemos generar un campo en cada tabla, para p.e., controlar que una clase sea visible para todo el mundo (public), o solo para el autor (private), lo crearemos como normalmente.
@import "bootstrap";
@import "font-awesome";