Hi All, I am trying to create and use our own utility classes that can have class methods and be used in many controllers. There is an inconsistent behaviour. I am not sure if I am missing anything. Here are the code snippets. In controller def test render :text => Utility.datetest end utility classes are part of the model folder structure where I added couple of ruby files and created classes in them. class ScheduleUtility def ScheduleUtility.datetest "Time now is #{Time.now}" end def ScheduleUtility.test "Time now is #{Time.now}" end end class Utility def Utility.datetest "yesterdays date:#{Time.now-1.day}" end def Utility.test "yesterdays date:#{Time.now-1.day}" end end When I use the Utility class''s method it works perfectly fine but with the ScheduleUtility it gives a no method error undefined method `datetest'' for ScheduleUtility:Class And a further anomaly is that if I define a method by the name "test" it doesn''t work in either of the cases . these are the respective error messages private method `test'' called for ScheduleUtility:Class private method `test'' called for Utility:Class would be glad if there were any valid reasons for such behaviour thanks --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
The models in your models directory have to following a naming convention so rails know where to reload the classes in development mode. Your Utility class works fine because it is in app/models/utility.rb. When it looks for ScheduleUtility class rails looks in app/models/schedule_utility.rb and finds nothing. You can sidestep this issue by putting these classes in your lib folder instead. As for the test issue, try declaring class methods with self instead of the class name def self.datetest although what you have there *should* work. Perhaps the test method is reserved by rails framework somehow? Try any other method name and see if it works. You could also force the method public with "public :test" after the method definition. -- 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 -~----------~----~----~----~------~----~------~--~---
That''s pretty interesting. So any class that we create in the model folder should follow the naming convention in synch with the file that it is in, even though it is not an active record. Thanks for the info, I will try it once I get back to work. Have a great holiday... Uma --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---