11

I'm very new to ruby. I use IronRuby and my ruby code has long namespaces:

Company:: Division::Group::Product::Package.new

since I use this ns multiple times is there a way to create a shortcut? In c# I add a using clause so I'm not required to specify the full prefix.

Andrew Grimm
  • 78,473
  • 57
  • 200
  • 338
Yaron Naveh
  • 23,560
  • 32
  • 103
  • 158
  • You might want ot have a look at [make an alias for a module in Ruby?](https://stackoverflow.com/questions/11091740/is-it-possible-to-make-an-alias-for-a-module-in-ruby) – Cyril Duchon-Doris Oct 13 '18 at 11:47

2 Answers2

19

You can simply assign it to another constant, like:

Package = Company::Division::Group::Product::Package
Package.new
numbers1311407
  • 33,686
  • 9
  • 90
  • 92
8

You can also use the "include" method, which is more Ruby-esk:

include Company::Division::Group::Product
Package.new

The difference between this and the current answer is that this one pulls in all constants under the namespace, where the current answer only pulls in that name.

Jimmy Schementi
  • 1,239
  • 8
  • 17
  • This will not however avoid namespace conflicts. In other languages, often you can `import [Package] as [short_name]` I guess you could declare a class ivar to achieve the same result ? cf https://stackoverflow.com/questions/11091740/is-it-possible-to-make-an-alias-for-a-module-in-ruby – Cyril Duchon-Doris Oct 13 '18 at 11:46
  • True, this will not avoid naming conflicts, but that's due to how Ruby works. – Jimmy Schementi Oct 24 '20 at 16:38