maeshimaの日記

メモ書きです

ネスト元のクラス or モジュールが定義されていないとエラー

下記の例だとHogeやHoge::Fugaを定義してやる必要があるみたい。

# -*- coding: utf-8 -*-

class Hoge::Fuga::Foo
  def self.hoge
    puts "hoge"
  end
end

Hoge::Fuga::Foo.hoge #=> uninitialized constant Hoge (NameError)

これならおk

# -*- coding: utf-8 -*-
module Hoge
end

module Hoge::Fuga
end

class Hoge::Fuga::Foo
  def self.hoge
    puts "hoge"
  end
end
Hoge::Fuga::Foo.hoge #=> "hoge"

Railsのコントローラで Admin::UsersController とかをよく定義して、Adminを定義して無くてもエラーにはならないのだけれどこれはRails側で何かやってるのかなあ