I like this pattern because:
- You're hiding the "new" from the user, so you can swap in any implementation you like.
- It makes stubbing in tests much easier because you only have to stub Action.call, not Action.new and Action.call
- Inside the class, you get to use instance variables and methods, rather than passing the arguments around, which lets you write cleaner code that is easier to refactor. "Class methods resist refactoring". http://blog.codeclimate.com/blog/2012/11/14/why-ruby-class-methods-resist-refactoring/
In fact, look at myronmarston's comment on that page. If he doesn't know the name for it, then I feel better about not knowing the name for it.