Объясните, как создать новое Rails-приложение.ruby-41

1. Подготовка системы

Перед созданием приложения убедитесь, что установлены:

  • Ruby (рекомендуется использовать rbenv или rvm)
  • Bundler
  • База данных (PostgreSQL/MySQL/SQLite)
  • Node.js (для Asset Pipeline)

Проверьте версии:

ruby -v  # => ruby 3.2.2
rails -v # => Rails 7.1.3
bundler -v # => Bundler 2.4.10

2. Создание нового приложения

Основная команда:

rails new my_app

Ключевые опции:

rails new my_app \
  -d postgresql \    # Использовать PostgreSQL
  -j esbuild \       # Сборка JavaScript с esbuild
  -c tailwind \      # CSS с Tailwind
  --skip-test \      # Пропустить тестовую инфраструктуру
  --api              # API-режим

3. Структура созданного проекта

Основные директории:

my_app/
├── app/           # Основной код приложения (MVC)
├── bin/           # Исполняемые файлы
├── config/        # Конфигурация
├── db/            # Миграции и схема БД
├── lib/           # Собственные библиотеки
├── public/        # Статические файлы
├── storage/       # Active Storage файлы
├── test/          # Тесты (или spec/ для RSpec)
├── tmp/           # Временные файлы
├── vendor/        # Зависимости
├── Gemfile        # Зависимости Ruby
└── README.md      # Описание проекта

4. Настройка базы данных

Редактируем config/database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: my_app_development
  pool: 5
  username: postgres
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: localhost

Создаем БД:

rails db:create

5. Запуск приложения

Основные команды:

rails server      # Запуск сервера (обычно на 3000 порту)
rails console    # Интерактивная консоль
rails routes     # Просмотр маршрутов
rails db:migrate # Применение миграций

6. Генерация ресурса

Создаем полноценный CRUD-ресурс:

rails generate scaffold Post title:string body:text published:boolean

Эта команда создает:

  • Модель (с миграцией)
  • Контроллер с действиями CRUD
  • Views (ERB-шаблоны)
  • Маршруты в config/routes.rb

7. Настройка маршрутов

Редактируем config/routes.rb:

Rails.application.routes.draw do
  resources :posts
  root 'posts#index' # Главная страница
end

8. Добавление гемов

Редактируем Gemfile:

gem 'devise'          # Аутентификация
gem 'pundit'          # Авторизация
gem 'sidekiq'         # Фоновые задачи
gem 'ransack'         # Поиск и фильтрация
group :development do
  gem 'annotate'      # Комментарии в моделях
  gem 'rubocop'       # Линтер
end

Устанавливаем гемы:

bundle install

9. Настройка окружения

Важные конфигурационные файлы:

  • config/environments/development.rb
  • config/application.rb
  • config/initializers/ (кастомные инициализаторы)

10. Деплой приложения

Популярные варианты:

  1. Heroku (самый простой):

    heroku create
    git push heroku main
    heroku run rails db:migrate
    
  2. Docker (для production):

    FROM ruby:3.2
    RUN apt-get update && apt-get install -y postgresql-client
    WORKDIR /app
    COPY Gemfile* ./
    RUN bundle install
    COPY . .
    CMD ["rails", "server", "-b", "0.0.0.0"]
    

Советы профессионала

  1. Используйте .env для конфиденциальных данных
  2. Настройте gitignore:
    /storage/*
    /node_modules
    .env
    
  3. Автоматизируйте с помощью Rake-тасков
  4. Следуйте принципам RESTful-дизайна

Резюмируем: создание Rails-приложения начинается с команды rails new, включает настройку БД, добавление необходимых гемов, генерацию ресурсов и конфигурацию маршрутов. Современный Rails предлагает гибкие опции для разных типов приложений (от монолитов до API-серверов).