Гайд по деплою · Ruby on Rails
Разверните Ruby on Rails за считанные минуты.
Подключите репозиторий, Railpack соберёт его, сервис получит домен с TLS. Базы данных из шаблонов, потребление списывается поминутно с предоплаченного баланса, всё на нодах в ЕС.
$ npm i -g skiffly && skiffly login
$ cd my-rails-app && skiffly init
$ skiffly deploy --template postgres
$ skiffly variables set 'DATABASE_URL=${{Postgres.DATABASE_URL}}' RAILS_ENV=production
$ skiffly upЧто распознаёт Railpack
Railpack изучает репозиторий и подбирает сборку для Ruby on Rails; большинству проектов настройка не нужна. Dockerfile в репозитории всегда имеет приоритет.
- Gemfile with
rails - config.ru
- .ruby-version
- Сборщик
- Railpack (по умолчанию)
- Команда запуска
- bundle exec rails db:prepare && bundle exec rails server -b 0.0.0.0 -p $PORT
Определяется Railpack; переопределите её в Настройки → Деплой → Команда запуска.
Порт и $PORT
Skiffly прокидывает PORT в каждый сервис и направляет на него публичный домен. Укажите порт в настройках сервиса, если приложение слушает фиксированный; по умолчанию для Ruby on Rails это 3000, а если ничего не задано — 8080.
bundle exec rails server -b 0.0.0.0 -p $PORT- PORT
- 3000
- SKIFFLY_PUBLIC_DOMAIN
- <service>.skiffly.cloud
Из терминала
Установите CLI, привяжите директорию, разверните. skiffly up собирает запушенный HEAD текущей ветки и стримит логи сборки; skiffly domain выдаёт сервису адрес *.skiffly.cloud.
Или опишите один раз
.skiffly/skiffly.ts объявляет сервис, его базы данных и ссылки между ними. skiffly config plan показывает diff, skiffly config apply применяет его. API повторяет railway/iac.
// .skiffly/skiffly.ts
import { defineSkiffly, generate, github, postgres, project, service } from "@skiffly/config";
export default defineSkiffly(() => {
const db = postgres("db");
const web = service("web", {
source: github("acme/web"),
start: "bundle exec rails db:prepare && bundle exec rails server -b 0.0.0.0 -p $PORT",
port: 3000,
healthcheck: "/",
env: {
DATABASE_URL: db.env.DATABASE_URL,
RAILS_ENV: "production",
SECRET_KEY_BASE: generate("hex64"),
},
});
return project("web", { resources: [web, db] });
});Работает с нужными вам шаблонами
Разверните базу данных рядом с сервисом Ruby on Rails и сошлитесь на её переменные: ${{Postgres.DATABASE_URL}} работает по приватной сети, без публичного порта.
Ruby on Rails на Skiffly: частые вопросы
Как задать переменные окружения для Ruby on Rails?
skiffly variables set KEY=value или в .skiffly/skiffly.ts. Ссылайтесь на другие сервисы через ${{Postgres.DATABASE_URL}}, а на общие значения окружения — через ${{shared.NAME}}. Секреты шифруются при хранении.Можно ли изменить команду сборки или запуска?
Как добавить Postgres или Redis?
skiffly connect postgres.Будут ли preview-окружения для каждого pull request?
Сколько стоит небольшое приложение на Ruby on Rails?
Может ли сервис Ruby on Rails засыпать при простое?
Разверните своё приложение на Ruby on Rails сегодня
Бесплатный тариф без карты. Hobby от $5, из них $5 потребления включено.