You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
No apt-get install libvips-dev imagemagick line in your Dockerfile
No system-library setup on CI
Works on Heroku / Fly.io / Render without buildpack drama
Works on Windows without MSYS2 dance
As of v0.3.0, even the image_processing runtime gem dependency is gone — replaced by an in-house pura-processing. So the dependency story is now literal: zero gems, zero system libs.
The page boots ruby.wasm and runs ImageProcessing::Pura chains in the browser. To be precise, only the image-processing layer runs in wasm — Active Storage itself (blob storage, variant orchestration) doesn't run in the browser. But it's a nice way to see that a Rails variant definition can survive in a wasm sandbox.
Tradeoffs
JPEG / WebP encoding is slower than libvips. Fine for typical avatar / thumbnail workloads, not for high-volume image pipelines.
The library is young — please benchmark against your real workload before swapping it in production.
The Solid Queue / Solid Cache / Solid Cable line is removing external infrastructure dependencies in favor of "it just works with what you already have." pura-image applies the same idea to image processing: the default Active Storage experience can be one bundle install instead of a per-OS setup guide.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Hi Rails community,
Wanted to share a project aimed at the "system library install dance" pain in Active Storage setup.
What it is
pura-image — a pure-Ruby image processing library that drops into Active Storage as a
variant_processor. The full integration is one config line:Models and views stay exactly the same:
What changes for Rails users
brew install vipsfor new dev setupapt-get install libvips-dev imagemagickline in your Dockerfileimage_processingruntime gem dependency is gone — replaced by an in-housepura-processing. So the dependency story is now literal: zero gems, zero system libs.Browser playground
komagata.github.io/pura-image
The page boots ruby.wasm and runs
ImageProcessing::Purachains in the browser. To be precise, only the image-processing layer runs in wasm — Active Storage itself (blob storage, variant orchestration) doesn't run in the browser. But it's a nice way to see that a Rails variant definition can survive in a wasm sandbox.Tradeoffs
image_processinggem-compatible API, MIT.Why this might fit Rails 8 direction
The Solid Queue / Solid Cache / Solid Cable line is removing external infrastructure dependencies in favor of "it just works with what you already have."
pura-imageapplies the same idea to image processing: the default Active Storage experience can be onebundle installinstead of a per-OS setup guide.GitHub: https://github.com/komagata/pura-image
Writeup with benchmarks: https://dev.to/komagata/active-storage-without-libvips-or-imagemagick-a-pure-ruby-alternative-4o99
Would love feedback from anyone who tries it on a real Rails app, especially failure modes I haven't hit yet.
All reactions