Skip to content

gravis/restful_ezm

This branch is 2 commits ahead of, 2 commits behind sschroed/restful_ezm:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Philippe LafoucrièrePhilippe Lafoucrière
Philippe Lafoucrière
and
Philippe Lafoucrière
Jan 16, 2009
e957029 · Jan 16, 2009

History

6 Commits
Jan 16, 2009
Jun 27, 2008
Oct 16, 2007
Jun 27, 2008
Oct 16, 2007
Jun 27, 2008
Jun 27, 2008
Oct 16, 2007
Oct 16, 2007
Jun 30, 2008
Oct 16, 2007
Oct 16, 2007

Repository files navigation

RESTful_Easy_Messages Plug-in

Mostrar / Ocultar Avisos
RESTful_Easy_Messages

    * 16th October , 2007 by Sam in Ruby on Rails
    * 31 comments

So three month ago I released my first Rails plug-in, Easy_Messages (EZM), and I was pleasantly surprised by the response, excited that people were actually using my code. Then I became paranoid as people were actually using my code! Since then I worked briefly on a project which was written with REST in mind and was forced to look into it. Up to that point I had been doing my best to not meet REST in the hallway as I was a little scared by him. I don’t know why? After watching the Peepcode screencast by Geoffrey Grosenbach, everything clicked and I realized that I could make the code for EZM much better. The end result is this plug-in. I hope you find it useful.

== The code is hosted at GitHub.

Here’s how to install the plug-in. (Rails 2.1 required for git plug-ins)

./script/plugin install git://github.com/sschroed/restful_ezm.git

== Here’s how to run the generator.

For standard html views: ./script/generate messages erb
For haml[1] views: ./script/generate messages haml

[1] You will need to install the haml plug-in for the views to render properly.

I’ve tried to decouple as much of the code as I could with this release. If you used Easy_Messages you’ll remember most of the code was stuck in the plug-in directory. With REZM the generator will put a controller, helper, model, tests, and a few other support files right into your project for easy access. To see the entire list view the FILELIST in plugins/restful_easy_messages. There is still a tiny bit of code in the plug-in though.

If you are using Rick Olson’s RESTful_Authentication you can get REZM up and running with minimal setup as I pulled it from a project that uses it.

First, update the user model.
view plainprint?

   1. class User < ActiveRecord::Base  
   2.   restful_easy_messages  
   3.   # The rest of your class  
   4.   #  
   5.   #  
   6. end  

class User < ActiveRecord::Base restful_easy_messages # The rest of your class # # end

Then add the REZM routes.
view plainprint?

   1. # Add these names routes to your project's config/routes.rb  
   2.   
   3. map.resources :users do |user|  
   4.   user.resources :messages,  
   5.                  :collection => {:destroy_selected => :post,  
   6.                                  :inbox            => :get,  
   7.                                  :outbox           => :get,  
   8.                                  :trashbin         => :get},  
   9.                  :member => {:reply => :get}  
  10. end  

# Add these names routes to your project's config/routes.rb map.resources :users do |user| user.resources :messages, :collection => {:destroy_selected => :post, :inbox => :get, :outbox => :get, :trashbin => :get}, :member => {:reply => :get} end

Now run db:migrate and you should be good to go.

But what if you didn’t use restful_authentication? Having to use Acts_As_Authenticated for EZM was the biggest complaint that I heard so I made REZM with hooks for you to switch out R_A if you want. Open lib\restful_easy_messages_controller_system.rb to do so. Just replace the current_user and login_required methods with calls to similar ones in your application.
view plainprint?

   1. module RestfulEasyMessagesControllerSystem  
   2.   protected  
   3.     
   4.   # This method provides an abstraction layer to the REZM controller for the  
   5.   # "current", logged-in user in case you are not using Restful_Authentication.  
   6.   def rezm_user  
   7.     # Provide your version of current_user here if not using Restful_authentication  
   8.     current_user  
   9.   end  
  10.     
  11.   # This method provides an abstraction layer to the REZM controller for   
  12.   # requiring a user to be loggefd in if you are not using Restful_Authentication.  
  13.   def rezm_login_required  
  14.     # Provide your version of login_required here if not using Restful_authentication  
  15.     login_required  
  16.   end  
  17.     
  18.   # Inclusion hook to make #rezm_user  
  19.   # available as ActionView helper methods.  
  20.   def self.included(base)  
  21.     base.send :helper_method, :rezm_user  
  22.   end  
  23. end  

module RestfulEasyMessagesControllerSystem protected # This method provides an abstraction layer to the REZM controller for the # "current", logged-in user in case you are not using Restful_Authentication. def rezm_user # Provide your version of current_user here if not using Restful_authentication current_user end # This method provides an abstraction layer to the REZM controller for # requiring a user to be loggefd in if you are not using Restful_Authentication. def rezm_login_required # Provide your version of login_required here if not using Restful_authentication login_required end # Inclusion hook to make #rezm_user # available as ActionView helper methods. def self.included(base) base.send :helper_method, :rezm_user end end

I believe that is it. Oh wait, there is also an Atom feed for the inbox!

If you wish to try out REZM I’ve set up a sample app. You can message the user “sam” if you want to test writing a mesasge.

About

RESTful Easy Messages plug-ing for Rails

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%