DEV Community

Noah Summers
Noah Summers

Posted on • Originally published at rewritable.me on

Defining Class and Module Aliases in Ruby and Rails

In Ruby, creating a new name for an existing value is easy:

a = 1
b = a

b #=> 1

Since Ruby module names are just constants (and classes are just special modules), you can treat them the same way:

class OriginalName
end

NewName = OriginalName

NewName.new #=> #<OriginalName:0x00007ffdb0a59190>

In a Rails application, constants are expected to be defined in a file with a corresponding path and name (otherwise, the auto-loader will have trouble finding it).

For example, the following model

class Nested::OriginalName < ApplicationRecord
end

would conventionally be defined in:

app/models/nested/original_name.rb

The alias, Nested::NewName, would ideally be defined in:

app/models/nested/new_name.rb

For example:

Nested::NewName = Nested::OriginalName

It's more likely, though, that you would be looking for a shorter alias, without the namespace. As long as you follow the file path and name conventions, you can safely define any alias you want:

# app/models/new_name.rb

NewName = Nested::OriginalName

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up