// the find
ankane/chartkick
Create beautiful JavaScript charts with one line of Ruby
Chartkick wraps Chart.js, Google Charts, and Highcharts behind a single Ruby helper API, so you can drop a line-chart into an ERB template without touching JavaScript. It's been around since 2013 and is the de-facto choice for Rails devs who want charts fast without building a frontend. Pairs well with Groupdate for time-series aggregations.
The abstraction holds up well — one helper method covers the common chart types across three different charting backends, and the `library:` escape hatch means you're not boxed in when you need something the wrapper doesn't expose. The URL data source pattern (render JSON from a controller, pass the path to the helper) is a genuinely good idea that keeps charts from blocking page load. The JavaScript API (`chart.updateData`, `chart.refreshData`) gives you enough control for reactive dashboards without rewriting the wrapper. Active maintenance from ankane, who has a track record of keeping Ruby gems current.
Highcharts has a commercial license — Chartkick doesn't warn you about this, so someone could accidentally ship it in a commercial product and owe money. The abstraction leaks constantly: prefix/suffix/precision options only work on Chart.js and Highcharts, geo charts and timelines only work on Google Charts, and you'll be checking the docs every time to see what's supported where. The bundled `Chart.bundle.js` vendor file (Chart.js + date-fns adapter in one blob) makes version pinning opaque — you can't easily upgrade Chart.js independently. No React/Vue/Stimulus integration story; in a modern Rails app with a JS framework, you'll fight the ERB-centric helper pattern.