aditya7iyengar

aditya7iyengar

Rummage.Ecto and Rummage.Phoenix provide ways to perform Searching, Sorting and Pagination over Ecto queries and Phoenix collections.

For more details visit this blog

Here’s a little demo:

Showing Posts 1 to 9

aditya7iyengar

aditya7iyengar OP

Hi everyone!

I wrote a library which provides ways to perform Searching, Sorting and Pagination over Ecto queries and Phoenix collections: Rummage. Rummage has been split into two libraries: Rummage.Ecto and Rummage.Phoenix.

Rummage is a Ransack-like library, which is designed in the Elixir way. Which means no defining functions on the models, transparency and configurability!

Rummage comes with a lot of powerful features which are available right away, without writing a bunch of code. Here are a few blogs that talk about how to use Rummage in a Phoenix or an Ecto application:

Let me know if you have any thoughts on Rummage!

Thank you!

Here’s a little demo:
Rummage

brightball

brightball

aditya7iyengar

aditya7iyengar OP

Very interesting! I agree with the implementation problems with offset, however I question the cost of adding it to Rummage.Ecto vs the benefits it will provide. However, it would be fun to implement a custom hook for that. This is precisely why I made Rummage.Ecto configurable, which means you can write a simple pagination hook to do what you’re saying, while using its Search and Sort hooks with all the HTML support.

michalmuskala

michalmuskala

This looks like a great project - it has several issues, though (I’m speaking only about the ecto part - haven’t looked at others yet).

It injects a lot of code and functions inside __using__/1 - it is considered a bad practice. This leads to multiple issues - including slower compilation and inferior debugging experience.
It also couples schema to the repo module, which is something ecto actively avoids.

As an alternative, I could easily imagine a pure function-based interface, for example:

Rummage.Ecto.paginate(query, MyApp.Repo)
# instead of
MySchema.rummage(query)

The schema can be easily extracted from the query:

query = Ecto.Queryable.to_query(query)
{_source, schema} = query.from

One thing to note, though is that the schema can be nil, since it’s not required, but I also don’t see really a reason why it would be needed.

aditya7iyengar

aditya7iyengar OP

That’s a great suggestion! It will be great to not have a lot of code in __using__/1. I guess I have some work to do over this week. Thanks for your input!

tmbb

tmbb

Are you still working on an API that avoids hardcoding the Repo in the config? I’d like to use Rummage in an admin framework for Phoenix, but being limited to a single repo which one must specify in the config is a big NO…

wlminimal

wlminimal

Does Rummage.Phoenix support phoenix 1.3?

db8

db8

Doesn’t look like it supports Phoenix 1.3 (or 1.4):

HotAndWild

HotAndWild

I am new to Elixir Phoenix, I tried to implement Rummage.ecto but failed to make it work in Phoenix v1.6. Is there an available demo of this library that runs in Phoenix v1.6?

— All posts loaded —

Where Next? Top

Trending in Announcing Top

restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub. Docs are at OpenaiEx User Gu...
152 12366 136
New
type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New
GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
ausimian
Castle is a package I put together to assist with building Elixir releases capable of being live-upgraded via the ‘official’ release hand...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
drozdzynski
Storex is a frontend store with state management handled on the backend. It allows you to update the store state both from the frontend a...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews