// production-ready Rails 8 generator with batteries included
// complete before first deploy
rails credentials:edit
config files
repository settings
app-specific
// what you get with 'Use defaults? Yes'
PostgreSQL
Vite + Tailwind 4 + DaisyUI
React 19 + TypeScript
Devise (User model)
Pundit
Shrine + S3
Sentry
NewRelic
Rack::Attack
Bullet (N+1)
Kamal (prod + staging)
GitHub Actions
Solid Queue
Mission Control
ViewComponent
meta-tags + sitemap
pagy (pagination)
invisible_captcha
// quick reference for included technologies
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>
<button class="btn btn-accent">Accent</button>
<!-- Theme: app/frontend/stylesheets/daisyui.css -->
# app/components/button_component.rb
class ButtonComponent < ViewComponent::Base
def initialize(label:, variant: :primary)
@label = label
@variant = variant
end
end
# Usage in view:
<%= render ButtonComponent.new(label: "Click") %>
# Controller
@pagy, @records = pagy(:offset, Model.all)
# View
<%== @pagy.series_nav %>
# app/policies/post_policy.rb
class PostPolicy < ApplicationPolicy
def update?
record.user == user
end
end
# Controller: authorize @post
# Model
class User < ApplicationRecord
include ImageUploader::Attachment(:avatar)
end
# Form
<%= form.file_field :avatar %>
# Controller
set_meta_tags(
title: 'Page Title',
description: 'Page description',
og: { title: 'OG Title' }
)
# View: <%= display_meta_tags %>
// rails credentials:edit
id: 'G-XXXXXXXXXX'
dsn: 'https://xxx@sentry.io/xxx'
license_key: 'xxx'
access_key_id: 'xxx'
secret_access_key: 'xxx'
bucket: 'my-bucket'
region: 'eu-central-1'
user: 'postgres'
password: 'xxx'
name: 'myapp_production'
user: 'admin'
password: 'xxx'
user_name: 'postmaster@mg.domain.com'
password: 'xxx'
address: 'smtp.mailgun.org'
port: 587
// replace placeholders before deploy
YOUR_SERVER_IP → 1.2.3.4
your-domain.com → myapp.com
staging.your-domain.com → staging.myapp.com
Sitemap: https://your-domain.com/sitemap.xml
Add secrets: SSH_PRIVATE_KEY, RAILS_MASTER_KEY
// ready to use after generation
dev_user
pan@admin.pl / 123123