Александр Кириллов. Веб разработка: Что такое ruby on rails....
TRANSCRIPT
ЧТО ТАКОЕ RUBY ON RAILSВЕБ-РАЗРАБОТКА ДЛЯ НАЧИНАЮЩИХ
О ФРЕЙМВОРКЕ
• Еще один фреймворк• Написан полностью на Ruby• … by David Heinemeier Hansson• … как ядро BaseCamp• 3 146 контрибьюторов на 2016
О ФРЕЙМВОРКЕ
• Conventions over configurations• DRY (Don`t repeat yourself)• Поддерживает почти все
современные базы данных• Удобство и простота в разработке
веб-приложений
MVC PATTERNВ RAILS
МОДЕЛЬ
• ActiveRecord• SQL/NOSQL• Соглашения - везде!• Встроенная валидация• Миграции
ACTIVE RECORD: MIGRATION
class CreatePublications < ActiveRecord::Migration[5.0] def change create_table :publications do |t| t.string :title t.text :description t.references :publication t.boolean :single_issue t.timestamps end add_index :publications, :publication_type_id endend
ACTIVE RECORD: MODEL
class Publication < ActiveRecord::Base validates :title, presence: true validates :description, presence: true #...end
# How to use:publication = Publication.new({ title: "Post1", description: "This is my description"})publication.save # => true/false
КОНТРОЛЛЕР
• И тут соглашения!• Методы и экшены• Работа с параметрами запроса• Сессии• Фильтры• Безопасность
CONTROLLER: ROUTES
Application.routes.draw do resources :books resources :blogs do resources :publications end namespace :api do resources :users end get "/login", to: "sessions#new"end
CONTROLLER
class PublicationsController < ApplicationController::Base def index @publications = Publications.all end
def show @publication = Publication.find(params[:id]) endend
ПРЕДСТАВЛЕНИЯ
• Шаблоны (ERB, HAML, Slim)• Макеты (layouts)• Partials• Helpers• Ajax• Переводы и локализация (I18n)
ПРЕДСТАВЛЕНИЯ: HAML
ДОПОЛНИТЕЛЬНЫЕ ЗАДАЧИ• отправка почты• загрузка изображений• сборка ассетов• периодические задачи
(sidekiq, delayed_jobs)
ТЕСТИРОВАНИЕ• Minitests• Rspec• Capybara• Cucumber
TESTS: RSPEC
RSpec.describe TeamsController do describe "GET index" do it "assigns @teams" do team = Team.create get :index expect(assigns(:teams)).to eq([team]) end it "renders the index template" do get :index expect(response).to render_template("index") end endend
DEPLOY• Capistrano• Mina• Docker
ВОПРОСЫ?Дополнительные ресурсы:http://guides.rubyonrails.org/http://rusrails.ru/
Блоги:https://robots.thoughtbot.com/webhttp://rubyflow.ru/https://www.railstutorial.org/book
Мои контакты:Email: [email protected]: @kirill0vЕще мои слайды про Ruby/Rails:http://www.slideshare.net/ssusercdd0ed