Questions tagged [ruby-on-rails]

Для вопросов о веб-фреймворке Ruby on Rails и отдельных его компонентах: ActiveRecord, ActiveSupport, Sprockets, и т. д.

Ruby on Rails

Фреймворк с открытым исходным кодом (лицензия MIT) на базе языка Ruby (см. ) для разработки веб-приложений.

Ориентирован на скорость разработки:

  • Convention over Configuration: где это возможно, рекомендуется следование конвенциям и использование настроек по умолчанию
  • Основан на архитектурном паттерне "Модель-Представление-Контроллер" (MVC)
  • Поставляется с набором заготовок для типичных ситуаций, в том числе генераторами для большинства сущностей
  • Использует синтаксическую гибкость и выразительность Ruby, а также "утиную типизацию"

Rails распространяется через RubyGems в виде гема (библиотеки в экосистеме Ruby) rails. Rails — модульный фреймворк, и состоит из набора компонентов, гем ничего не содержит сам по себе. Можно использовать только те модули, которые необходимы.

Компоненты

  • ActiveSupport расширяет стандартную библиотеку Ruby, делая язык ещё более выразительным за счёт добавления ряда методов во встроенные классы.
    Из-за согласованности и плотной интеграции со стандартной библиотекой — компоненты этой библиотеки порой ошибочно приписываются стандартной библиотеке Ruby.
  • ActionPack (ActionDispatch + ActionController) работает с маршрутами (routing) и отвечает за передачу запросов на обработку контроллерам, которые отвечают на запросы представлениями (см. далее).
  • ActionView отвечает за формирование представлений (в особенности веб-страниц): содержит логику поиска и обработки шаблонов, а также содержит ряд методов, облегчающих формирование HTML-разметки (в особенности форм).
  • ActiveModel содержит ряд интерфейсов, с помощью которых обеспечивается взаимодействие классов моделей с остальными компонентами фреймворка, а также ряд удобств для моделей в целом, например, валидации в декларативном стиле.
  • ActiveRecord ORM отвечает за работу с реляционными базами данных в качестве хранилища информации о моделях; запросы к хранилищу осуществляются на лёгком в использовании встроенном языке на основе Ruby и Arel, в котором можно при необходимости использовать отдельные части на SQL.
  • ActionMailer отвечает за формирование и отсылку писем на электронную почту.
  • ActiveJob (Rails 4.2+) отвечает за отгрузку долгих процессов (например, отправки писем на электронную почту) из основного цикла "запрос-ответ" в фоновую очередь задач. Является абстракцией над несколькими видами очередей.
  • ActionCable (Rails 5.0+) обеспечивает двухстороннюю связь между сервером и клиентом по протоколу WebSocket.

Также в шаблон приложения по умолчанию включен ряд других библиотек. Многие из них разрабатываются той же командой, но частью Rails они формально не являются:

  • Sprockets (для работы с ресурсами, вроде стилей и JavaScript)
  • JBuilder (для сборки структур в JSON)
  • CoffeeScript (тонкая синтаксическая обёртка над JavaScript)
  • Spring (предзагрузчик приложения, ускоряющий запуск)
  • ...и другие.
1284 questions
8
votes
0 answers

Почему возникает проблема с ресурсами в production?

В общем, разобравшись что да как, опишу всю ситуацию. Имеется CloudFlare. У него в настройках домена включил Development Mode. Но навряд ли тут CloudFlare вообще на что-то влияет. Идем дальше. Если проект запускать в режиме development, то все…
Colibri
  • 1,825
6
votes
1 answer

Установка Ruby on Rails

При установке Ruby on rails наткнулся на небольшую проблему. Действовал так же, как описано в туториале на http://railstutorial.ru/. После выполнения gem install rails --version 4.0.0 попытался запустить rails -v и получил ошибку: Приложение…
5
votes
1 answer

Ruby on Rails Activerecord - id в модели перепутаны

Дело обстоит в Ruby on Rails 4.2.0 на Ruby 2.1.0. Есть следующая миграция: class CreateStateTemplates < ActiveRecord::Migration def change create_table :state_templates do |t| t.string :name t.references :next t.references…
5
votes
3 answers

Как отфильтровать данные и поставить условие на date

Есть запрос такого вида Сущность.where(calendars: {date: "1.07.2015"}).count Мне возвращает количество записей с значением "1.07.2015" в поле date. Но мне надо запрашивать именно 7й месяц (или любой другой). Как отфильтровать и поставить условие…
ks_on_v
  • 1,227
4
votes
2 answers

вывод в show из соединительной таблицы

Привет! есть 3 модели (RailwayStation, Route и джоин таблица RailwayStationsRoute) class RailwayStationsRoute < ApplicationRecord belongs_to :railway_station belongs_to :route class Route < ApplicationRecord has_many…
4
votes
1 answer

В чем перспектива Ruby on Rails?

Для web и другие его возможности...
4
votes
2 answers

Когда может быть полезна команда rake db:schema:load?

В Rails есть команда rake db:schema:load. Когда она может быть полезна, в каких случаях ее применять?
jisecayeyo
  • 1,265
4
votes
2 answers

Назначение ролей для прав доступа

Добрый день. class Ability can :manage, Company do |company| user.available_roles.include?(company.role) end class User belongs_to :company delegate :admin?, :operator?, :agent?, :sales?, :visitor?, :available_roles, :role, to: :company class…
4
votes
1 answer

rails 4 Перевод ошибок валидации accepts_nested_attributes_for?

Как можно перевести название полей в i18n(ru.yml) файле поля для ошибок в accepts_nested_attributes_for? Модель Company связана с Phone, так же есть у Company accepts_nested_attributes_for :phones. Вроде бы все переводит в хелпере, но именно при…
Mayken
  • 43
4
votes
1 answer

Rails 4. Ошибка No route matches [PUT] "/client/orders"

Пытаюсь создать процесс оформления заказа в интернет магазине. Пользователь открывает корзину (объект Cart), в которой видны товары (объекты LineItem). Вместе с этим сразу же создается объект Order, в который будет записан готовый заказ. Так…
4
votes
2 answers

Роуты и категории rails

Есть post и post_category, post_category связана с post по post_category_id: class Post < ActiveRecord::Base belongs_to :post_category end class PostCategory < ActiveRecord::Base has_many :posts end Есть категория к примеру Еда, при…
bismoney
  • 188
4
votes
3 answers

Вопрос про админки в Ruby On Rails

Здравствуйте, нужно понять, какая сейчас админка: 1) поддерживает Ruby On Rails последней версии под номером 4.2 2) русифицированная, вместе с ошибками валидации, либо понять как это сделать максимально просто и быстро и какими gem'ами нужно…
3
votes
1 answer

Как удалить обьект из бд, на сайте на Rails 5?

Гуглил. Нашел способ в этой статье, но не помогло. часть вьюхи <%= link_to 'Destroy', client, method: :delete, data: { confirm: 'Are you sure?' } %> <%= link_to 'Destroy',…
Svatoslav
  • 113
3
votes
1 answer

Нововведения в Rails 5, касающиеся Active Record Associations?

Совсем недавно перешел на Rails 5.0.0.1 и не совсем понимаю кое-каких вещей, связанных с ассоциациями Active Record. Либо я что-то упускаю (давно не брался за рельсы). В 4-ой версии рельс я мог спокойно проделать следующие действия, не получив при…
smellyshovel
  • 5,224
3
votes
3 answers

Когда использовать path в link_to?

<% @products.each do |product| %> <%= link_to 'Show', product %> <%= link_to 'Edit', edit_product_path(product) %> <%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %> <% end %> <%= link_to…
jisecayeyo
  • 1,265
1
2 3
26 27