Skip to content
This repository has been archived by the owner on Jun 30, 2018. It is now read-only.

Instance eval with delegation proof of concept. #904

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rafael
Copy link

@rafael rafael commented Nov 8, 2013

Hi,

I've been using tire and I've been facing the following issue. Sometimes, I would like to use some helper methods within the search blocks, but I always get an undefined method exception. In the current state, the only work around that I found for that so far is to write the search methods like this:

def execute
  Model.tire.search(page: page, load: true) do |s|
    s.query do |q|
      q.boolean do |b|
        b.must { |condition| condition.string "..."  } if tags
        ...
      end
      ...
    end
    s.sort { by :id, "desc" }
  end
end

def tags
    ...
end

I notice that this has to do with the use of instance eval inside the DSL. I found this interesting article where they explained a workaround for that:

http://www.dan-manges.com/blog/ruby-dsls-instance-eval-with-delegation

I started a proof of concept to see if it works with tire. It seems to be working.

Is there a reason why you guys didn't allow this? I could implement this in all the other places, but I wanted to have your feedback, I don't know if I'm missing something here and there is a reason to not do this.

Cheers!

@karmi
Copy link
Owner

karmi commented Nov 8, 2013

Hi, there's been a discussion about this quite some time ago e.g. here: https://gist.github.com/ddemaree/1408149

You're take is interesting, since it has a minimal footprint, and it's quite understandable. However, since Tire was retired, I don't think adding features to it makes real sense? (I'm working on a ActiveRecord/Rails/etc integration for the new gem)

@rafael
Copy link
Author

rafael commented Nov 11, 2013

Yeah, I thought that about that too. Thanks for the answer! Is it the new gem for Rails live already?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants