Yes. However, this is something currently implemented *in* Rails already (e.g., `SomeModel#find_by_foo_and_bar_and_baz`). Rails itself could benefit from the abstraction being put into ActiveSupport.
On Thursday, August 9, 2012 5:42:16 PM UTC-4, Ryan Bigg wrote: > > -1 > > I don't think this feature would be useful to the majority of Rails > developers out there, sorry. > > You could always release it as a separate gem and get people to use it > that way. > > -- > Ryan Bigg > > On Friday, 10 August 2012 at 0:59, Stephen Touset wrote: > > In several places in Rails (e.g., ActiveRecord > `find_by_#{attr2}_and_#{att2}` methods), you override `method_missing` to > provide functionality. In all of those places, you follow the sane approach > of handling `respond_to?` as well as actually defining the method body for > future callers. > > I've abstracted this logic out into a project called > def_method_missing[1]. Examples: > > class Foo > # regexp matchers yield the MatchData to the block, so you can modify the > method > # body based on the regexp > def_method_missing /bar/ do |match| > -> { match.pre_match } > end > > # without a regexp matcher, the name of the method is passed to the block, > allowing > # you to decide whether or not to implement the method > def_method_missing do |name| > -> { name } if name.length == 4 > -> { "bang!" } if name[-1] == '!' > end > end > > foo = Foo.new > > # regexp-based method_missing > foo.respond_to?(:bazbar) # => true > foo.bazbar # => "baz" > foo.methods.include? /bazbaz/ # => true > > # arbitrary Ruby method_missing > foo.respond_to?(:wat) # => false > foo.respond_to?(:what) # => true > foo.what # => :what > foo.methods.include?(:what) # => true > > foo.bang # => :bang # matches four-character method name > foo.bang! # => "bang!" # matches last-character bang > foo.wat! # => :wat! # matches four-character method name first > > Is this something you'd be willing to consider including in ActiveSupport? > Obviously, I'll have to put the logic into its own Module to avoid > polluting default `Object`s and `Module`s. Plus documentation/tests. The > current implementation was just a concept I threw together a few months > back and promptly forgot about. > > [1]: https://github.com/stouset/def_method_missing > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-core/-/ICy42NxOSOAJ. > To post to this group, send email to rubyonra...@googlegroups.com<javascript:> > . > To unsubscribe from this group, send email to > rubyonrails-co...@googlegroups.com <javascript:>. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-core?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-core/-/UQmIuqwXMlwJ. To post to this group, send email to rubyonrails-core@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-core+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.