From: Jeremy Bopp Date: 2010-10-06T13:02:54+09:00 Subject: Re: How to call a method within another method On 10/05/2010 09:53 PM, Ryan Davis wrote: > > On Oct 5, 2010, at 15:22 , Jeremy Bopp wrote: > >> On 10/5/2010 5:00 PM, Paul Roche wrote: >>> Hi, I have a method... >>> >>> def make_pay_loan >>> >>> end >>> >>> I want this method to 'activate' (for want of a better word) another >>> method called pay_loan. >>> >>> Any tips on how this could be done are welcome, thanks >> >> I think you want to dynamically define one method from within another. >> Try this: >> >> def make_pay_loan >> def pay_loan >> puts 'paid' >> end >> end > > But there is nothing dynamic about that solution. All you're doing is defining a def expression inside of another which will get defined the first time (and every time for that matter) make_pay_loan gets called. pay_loan is entirely static and has no ability to be dynamic in any way. All I'm doing is attempting to answer the question as asked without adding too much at once for a new user for whom this might appear quite dynamic. The terminology will sort itself out in time. :-) > You'll want to use define_method or eval in order to actually be dynamic. > > Depending on how the OP means "activate", it could be as simple as calling public on the method to make it visible, or as complex as defining a dynamic method with define_method and using the closure to capture the dynamic values passed in to make_pay_loan. You're correct that define_method and eval are able to create truly dynamic definitions and that "activate" can have other interpretations; however, I don't believe that being overly pedantic is particularly helpful in this case. If you have a better answer to the OP's question, please provide it, even if it's just asking for clarification. ;-) -Jeremy