Skip to content

valasek/ensemble

Repository files navigation

Ensemble

...

Roadmap

Podujatia

  • Možnosť výberu najdôležitejších podujatí ako príznak
  • Podujatie má na konci prílohy. Fotografie, doklady
  • Podujatie má type a institution

Nová kategória, repertoár

  • Názov, rok premiéry, rok, choreograf, hudba, dĺžka, popis a videá, fotografie

Ostatné:

  • Pridať Administráciu za užívateľské prihlásenie
  • Pridať export a import
  • MCP server

...

License

All source code in this repository is released under the O'Saasy license.

  • Commercial use is permitted (with restrictions)
  • 🚫 Cannot offer as competing SaaS/hosted service
  • 📝 Attribution and copyright notice must be included
  • ⚠️ No liability and no warranty

Import data

bin/rails performances:extract bin/rails performances:parse kamal app exec 'bin/rails performances:import ASSEMBLY=bralen'

Details are in /lib/tasks/import_performances.rake

Reindex all Tables

rails runner 'Member.clear_index!'
rails runner 'Performance.clear_index!'
rails runner 'Performance.reindex!'
rails runner 'Member.reindex!'

Or in a Rake task lib/tasks/search.rake

namespace :search do
  desc "Reindex all searchable models"
  task reindex: :environment do
    Article.reindex!
    # Add other models as needed
    puts "Reindexing complete!"
  end
end

How to deploy

kamal deploy

Deploy accessory only

kamal accessory remove meilisearch kamal accessory boot meilisearch kamal accessory reboot meilisearch

Reindex after deployment

kamal app exec 'bin/rails runner 'Performance.reindex!'

Check logs

kamal app logs kamal accessory logs meilisearch

And optional:

kamal reset_demo
kamal logs
kamal console

Infrastructure

DB Backup

Uses litestream

config file: /etc/litestream.yml service file: /usr/lib/systemd/system/litestream.service

Show status litestream status sudo systemctl status litestream

Stop service sudo systemctl stop litestream

Start service sudo systemctl start litestream

Show logs sudo journalctl -u ensemble --since "100 hours ago"

DB Restore

litestream restore -config /etc/litestream.yml -o production.sqlite3 /var/lib/docker/volumes/ensemble_storage/_data/production.sqlite3 sqlite production.sqlite3 "PRAGMA integrity_check;" cp production.sqlite3/var/lib/docker/volumes/ensemble_storage/_data/production.sqlite3

Local Backup Process: From your host machine

docker cp your-rails7-container:/storage/production.sqlite3 ./backup/production.sqlite3
docker cp 290055864fd3:/storage/production-backup.sqlite3 ./production.sqlite3

Local Restore Process: To your new Rails 8 container

docker cp --chown rails:rails ./production.sqlite3 your-rails8-container:/rails/storage/production.sqlite3
docker cp ./production.sqlite3 290055864fd3:/rails/storage/production.sqlite3

And backup locally

scp ./production.sqlite3 root@162.55.185.37:/root/production.sqlite3

Inspect container via bash

docker exec -it 290055864fd3 bash

Technical notes

SVG Icons: https://heroicons.com

Start app with bin/dev

Runn local ci: bin/ci

Run tests bin/rails test

Precompile rails assets: rails assets:clean assets:precompile

Build Tailwind bin/rails tailwindcss:build

Clean all assets rails assets:clobber

See test emails (email integration is done via resend.com):

  • in folder tmp/mail/
  • see previews in the browser: http://localhost:3000/rails/mailers

Include into precommit hook:

rubocop rails db:test:prepare test test:system

Reset demo user rails demo_user:reset

Edit rails credentials VISUAL="code --wait" bin/rails credentials:edit

Update

Gems

bundle outdated bundle update --all

Bundler

bundle update --bundler

Daisyui

curl -sLo app/assets/tailwind/daisyui.js https://github.com/saadeghi/daisyui/releases/latest/download/daisyui.js

Kamal

gem update kamal kamal proxy upgrade

Clean up unused images and containers kamal prune

JS packages

Update: pin "instantsearch.js", to: "https://cdn.jsdelivr.net/npm/instantsearch.js@4.87.1/dist/instantsearch.production.min.js" pin "algoliasearch", to: "https://cdn.jsdelivr.net/npm/algoliasearch@5.48.1/dist/algoliasearch-lite.umd.js"

Show list of rake tasks

bin/rails -T

KAMAL deployment setup

run kamal init

if not using root account, in ./delpoy.yaml add

ssh:
  user: kamal
  keys: [ "~/.ssh/id_ed25519" ]

Create private docker repository e.h. on DockerHub add access token (Read, Write, Delete) and store it in ./kamal/secrets in variable KAMAL_REGISTRY_PASSWORD or set as en environment variable export KAMAL_REGISTRY_PASSWORD=password

Create e.f. Hetzner machine with ssh Add identity to ssh Confirm it via ssh-add -l

create RAILS_MASTER_KEY

VISUAL="code --wait" bin/rails credentials:edit

export key from console from previous commant to env variable export RAILS_MASTER_KEY=<key from console>

VISUAL="code --wait" bin/rails credentials:edit

export key from console from previous command to env variable or copy it from config/master.key

export RAILS_MASTER_KEY=<key from console>

docker login

run kamal setup


Rails dev-container configuration https://dev.to/konyu/how-to-use-docker-containers-for-ruby-on-rails-development-in-visual-studio-code-23np