I''m putting together a plugin and it has to monkey-patch some of ActionMailer. A good deal of AM''s magic is class methods, and I''m wanting to do something like: module ActionMailer class Base class << self def create!(method_name, *parameters) puts "yippee, skippee, I got here!" # do something useful end end end end So, I go ahead and do this, hoping to simply drop my create! in over ActionMailer''s, but in my tests, the ActionMailer code is called and not mine. Can anyone tell me what I''m missing here? -- View this message in context: http://www.nabble.com/how-to-substitute-my-class-method-for-rails%27-version-tf3489926.html#a9746360 Sent from the RubyOnRails Users mailing list archive at Nabble.com. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Xavier Noria
2007-Mar-30 08:14 UTC
Re: how to substitute my class method for rails'' version
On Mar 30, 2007, at 4:39 AM, s.ross wrote:> I''m putting together a plugin and it has to monkey-patch some of > ActionMailer. A good deal of AM''s magic is class methods, and I''m > wanting to > do something like: > > module ActionMailer > class Base > class << self > def create!(method_name, *parameters) > puts "yippee, skippee, I got here!" > # do something useful > end > end > end > end > > So, I go ahead and do this, hoping to simply drop my create! in over > ActionMailer''s, but in my tests, the ActionMailer code is called > and not > mine. > > Can anyone tell me what I''m missing here?The technique is OK, you probably knew this, so next thing to look at is which class is being loaded later, that one is the winner. -- fxn --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Yeah, I finally got it... The way AM is constructed is somewhat complicated so I had one detail wrong and it led me to the wrong conclusion: that I had syntactically screwed up. Thx, --sr On Mar 30, 2007, at 1:14 AM, Xavier Noria wrote:> > On Mar 30, 2007, at 4:39 AM, s.ross wrote: > >> I''m putting together a plugin and it has to monkey-patch some of >> ActionMailer. A good deal of AM''s magic is class methods, and I''m >> wanting to >> do something like: >> >> module ActionMailer >> class Base >> class << self >> def create!(method_name, *parameters) >> puts "yippee, skippee, I got here!" >> # do something useful >> end >> end >> end >> end >> >> So, I go ahead and do this, hoping to simply drop my create! in over >> ActionMailer''s, but in my tests, the ActionMailer code is called >> and not >> mine. >> >> Can anyone tell me what I''m missing here? > > The technique is OK, you probably knew this, so next thing to look at > is which class is being loaded later, that one is the winner. > > -- fxn > > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
For educational reasons :) would you mind posting the "clean" code? Thanks! Shawn Steve Ross wrote:> Yeah, I finally got it... The way AM is constructed is somewhat > complicated so I had one detail wrong and it led me to the wrong > conclusion: that I had syntactically screwed up. > > Thx, > > --sr-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Absolutely. The real code is released in a plugin and you can browse the repo. The code you want to see is at: http://svn.calicowebdev.com/plugins/templated_mailer/lib/templated_mailer.rb I announced the plugin on the Haml list because it applies to templating languages other than rhtml, but here''s a redux of the announcement: I just put a plugin together specifically to make ActionMailer play nice with Haml. It also will work with Markaby or any other "unsupported" markup language. Initially, this code was s''posed to be a Rails patch, but it keeps not showing up in trunk, so here it is as a plugin. You can read about it here: http://calicowebdev.com/blog/show/10 You can get it here: http://svn.calicowebdev.com/plugins/templated_mailer Reader''s Digest version of instructions: Step 1: Get it using svn or ''ruby script/plugin install http://svn.calicowebdev.com/plugins/templated_mailer'' Step 2: Add the following line to your environment.rb ActionMailer::Base.register_template_extension(''haml'') Step 3: Just stop typing "rhtml". There is no Trac or anything, but your can email me with bugs or comments (and be gentle). longinos wrote:> > > For educational reasons :) would you mind posting the "clean" code? > > Thanks! > > > Shawn > > Steve Ross wrote: >> Yeah, I finally got it... The way AM is constructed is somewhat >> complicated so I had one detail wrong and it led me to the wrong >> conclusion: that I had syntactically screwed up. >> >> Thx, >> >> --sr > >-- View this message in context: http://www.nabble.com/how-to-substitute-my-class-method-for-rails%27-version-tf3489926.html#a9759336 Sent from the RubyOnRails Users mailing list archive at Nabble.com. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---