Running Rails commands and tailing logs

bosun run for console/rake/migrations, and bosun logs — both load shared/.env the same way Puma/Sidekiq do.

bosun run is a generic wrapper around rails for one app — console, migrations, a custom rake task, rails runner, anything listed by rails -T — not a fixed list of shortcuts. The app name is the last argument (everything before it forwards to rails verbatim, including its own flags), unlike install/setup/deploy/cleanup, which take the app name first:

bosun run console myapp                          # -> bundle exec rails console
  bosun run db:migrate myapp                        # -> bundle exec rails db:migrate
  bosun run db:migrate VERSION=20260101120000 myapp  # extra args forward too
  bosun run runner 'puts User.count' myapp           # quote multi-word args as one

No sudo, no gem dependency, and it never touches bundle/rails directly itself — it resolves the app's shared/bin/run wrapper (created by add) and execs rails "$@" through it, so RUBY_VERSION/ RUBY_GEMSET/deploy.conf/shared/.env are loaded exactly the same way puma/sidekiq get them.

bosun logs shows (or follows) an app's Rails log files under shared/log/ — the same directory current/log symlinks to. No sudo needed; shared/ is already webapps-group readable for every developer/ admin account:

bosun logs myapp        # last 200 lines, then exit
  bosun logs -t myapp     # follow (like tail -f), Ctrl-C to stop

This is the app's own Rails.logger output (log/production.log, etc.) — for the puma/sidekiq process's stdout/stderr (crashes, boot errors before Rails.logger even starts), use sudo journalctl -u puma-myapp / -u sidekiq-myapp instead — already whitelisted for developers, no argument restriction.