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

Instance eval with delegation proof of concept.#904

Open
rafael wants to merge 1 commit intokarmi:masterfrom
rafael:master
Open

Instance eval with delegation proof of concept.#904
rafael wants to merge 1 commit intokarmi:masterfrom
rafael:master

Conversation

@rafael
Copy link
Copy Markdown

@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
Copy Markdown
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
Copy Markdown
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