A better solution would be to just use Observers. One for email, one for twitter. The user shouldn't care about how to talk with these services.
Code should be simple and easy to understand. Observers add significant complexity and make your code vulnerable to unnecessary bugs because the code that acts on your objects is invisible to the normal control flow of the program and those who write or maintain it.
My stance is that things like sending email should be explicit calls so they are obvious. Sending email when registering a new user, for example, should be in the if user.save branch in your controllers or, if you have a more SOAish app, in the service that creates users.
def create user = User.create(params[:user])
if user.save
Emailer.new_user_email.deliver
render 'welcome'
else
render 'oh shit'
end
endOr, refactor that out a bit (ONLY IF NECESSARY!)
def create user = UserService.create_user_from(params[:user])
if user
render 'welcome'
else
render 'oh shit'
end
end