# Becoming Have you ever used delegation libraries, but found them a bit unsatisfactory? Delegation is awesome, but many Ruby libraries love their metaprogramming, and so they expect class names to match up. This often screws up delegation. Becoming allows your objects to have 'becomings' that make them have extended functionality. They still have the same class as they did before, but now they're just... different. ## Installation Add this line to your application's Gemfile: gem 'becoming' And then execute: $ bundle Or install it yourself as: $ gem install becoming ## Usage For example, let's imagine you're writing a Rails form: ```ruby # a model that looks like this User = Struct.new(:first_name, :last_name) # in the controller @user = User.new("Steve", "Klabnik") # in the view <%= form_for @user do |f| %> ``` This does reflection on the class of the `@user`, generating HTML like this: ```html