Skip to content

feat: CSV export for jobs, failed jobs, and history views#33

Merged
eclectic-coding merged 3 commits into
mainfrom
feat/csv-export
May 20, 2026
Merged

feat: CSV export for jobs, failed jobs, and history views#33
eclectic-coding merged 3 commits into
mainfrom
feat/csv-export

Conversation

@eclectic-coding
Copy link
Copy Markdown
Owner

Summary

  • Adds an Export CSV button to the jobs, failed jobs, and history pages
  • Exports all records matching the current filters (status, queue, search, period) — not just the current page
  • Columns tailored per view:
    • Jobs: id, class_name, queue_name, status, priority, enqueued_at
    • Failed jobs: id, class_name, queue_name, error_class, error_message, failed_at
    • History: id, class_name, queue_name, duration_seconds, finished_at
  • Links use data-turbo="false" to bypass Turbo frame interception so the download triggers correctly
  • csv gem added as an explicit dependency (unbundled from Ruby's stdlib in 4.0+)

Test plan

  • Visit /jobs — "Export CSV" button visible alongside status tabs; click downloads jobs-ready-<date>.csv with correct columns and rows matching current filters
  • Visit /jobs/failed_jobs — "Export CSV" appears next to Retry All / Discard All; downloaded file includes error class and message
  • Visit /jobs/history — "Export CSV" appears in page header; downloaded file includes duration and finished_at
  • Apply a filter (e.g. queue or search term) then export — CSV reflects filtered results, not all jobs
  • No console errors; no Turbo navigation interference

🤖 Generated with Claude Code

eclectic-coding and others added 3 commits May 20, 2026 09:46
Adds an "Export CSV" button to the jobs, failed jobs, and history pages.
Clicking it downloads all records matching the current filters (status,
queue, search, period) — not just the current page. Each view has its
own columns:
  - Jobs: id, class_name, queue_name, status, priority, enqueued_at
  - Failed jobs: id, class_name, queue_name, error_class, error_message, failed_at
  - History: id, class_name, queue_name, duration_seconds, finished_at

Links use data-turbo="false" to bypass Turbo frame interception.
The csv gem is added as an explicit dependency (unbundled from Ruby 4.0+).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@eclectic-coding eclectic-coding merged commit 21bd3e4 into main May 20, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant