Really? I thought that rescuing the NameError and raising an ArgumentError was a more expressive way of solving the problem. Also, I prefer less if statements over more.

Compare:

```ruby
  def self.coerce_rlimit_resource(resource)
    if resource.is_a? Symbol
      if const_name = "RLIMIT_#{resource}" && const_defined? const_name
        resource = const_get(const_name)
      else
        raise ArgumentError, "invalid resource name #{resource}"
      end
    end
    Rubinius::Type.coerce_to resource, Integer, :to_int
  end
```

vs

```ruby
  def self.coerce_rlimit_resource(resource)
    resource = const_get("RLIMIT_#{resource}") if resource.is_a? Symbol
    Rubinius::Type.coerce_to resource, Integer, :to_int
  rescue NameError
    raise ArgumentError, "invalid resource name #{resource}"
  end
```