public
Description: RESTful Easy Messages plug-in for Rails
Homepage: http://samuelschroeder.com/2007/10/16/restful_easy_messages/
Clone URL: git://github.com/sschroed/restful_ezm.git
Philippe Lafoucrière (author)
Fri Jan 16 08:15:34 -0800 2009
sschroed (committer)
Mon Jan 19 09:26:30 -0800 2009
commit  9f4d1b5480e31fe1f758db5077cc51b35dc93100
tree    07e8d2089185a679ac247f7815b4d31517a91904
parent  6516abfcdecac0e8721078a51b4e56b6b68452ff
restful_ezm / README
100644 89 lines (66 sloc) 5.25 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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.