DEV Community

mixbo
mixbo

Posted on

4 1

The difference between Ruby alias and alias_method

Alt Text

In some open source ruby projects you may see similar alias and alias_method methods. what are the specific use of these two methods? how are these two methods different? let's look at the following code:

#alias
class User
  def full_name
    puts "Mixbo"
  end
  alias name full_name
end
User.new.name #=>Mixbo

#alias_method
class User
  def full_name
    puts "Mixbo"
  end
  alias_method :name, :full_name
end
User.new.name #=> Mixbo
Enter fullscreen mode Exit fullscreen mode

The above examples all output the "Mixbo" string before renaming the full_name in the User class. from this example alone we can't see the difference between the two methods continue:

#alias_method
class User
  def full_name
    puts "Super Mixbo"
  end
  def self.rename
    alias_method :name, :full_name #==> Note that alias_method is used here
  end
end

class Mixbo < User
  def full_name
    puts "Mixbooooo"
  end
  rename
end
Mixbo.new.full_name #=> "Mixbooooo"


#alias
class User
  def full_name
    puts "Super Mixbo"
  end
  def self.rename
    alias :name :full_name #==> Note that alias is used here
  end
end

class Mixbo < User
  def full_name
    puts "Mixbooooo"
  end
  rename
end
Mixbo.new.name #=> 'Super Mixbo'

Enter fullscreen mode Exit fullscreen mode

From the above example we can see that when there is an inheritance relationship between classes. alias will not affect its subclasses. related alias_method will find the closest method of the same name in its subclass to operate (for example, full_name above)

So alias and alias_method

  1. Can give an alias to a method

  2. alias is generally valid when the source code is interpreted by the compiler

  3. alias_method is generally valid when the code is running

Generally I use alias_method a little more.

Hope it can help you :)

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay