2013-03-18 2 views
0

Я создаю API для управления версиями Rails приложения с помощью модулей следующим образом:Список подмодулями модуль, в

Module Api 
    Module V1 
    Controller goes here 
    end 
end 

Module Api 
    Module V2 
    Controller goes here 
    end 
end 

Я хотел бы знать последнюю доступную версию. Я думал, что я мог бы получить его, глядя на Api.constants, но это, кажется, не так, поскольку я получаю пустой массив, как показано ниже:

Loading development environment (Rails 3.2.12) 
irb(main):001:0> Api 
=> Api 
irb(main):002:0> Api.constants 
=> [] 

Однако, если я первый позвонить Api::V1 напрямую, кажется, работы:

Loading development environment (Rails 3.2.12) 
irb(main):001:0> Api 
=> Api 
irb(main):002:0> Api.constants 
=> [] 
irb(main):003:0> Api::V1 
=> Api::V1 
irb(main):004:0> Api.constants 
=> [:V1] 

Есть ли способ получить все подмодули, не обращаясь к ним заранее?

+1

Ваш код недействителен. – sawa

+1

@sawa: вы имеете в виду «модуль» с паскалем? –

+0

@ Сергио Туленцев Да. – sawa

ответ

5

Это автозагрузка на работе. Api::V1 не загружается, пока на него не ссылаются. Вот почему вы получаете пустой массив в первом случае.

Вы можете настроить свое приложение для активной загрузки классов. Подробнее см. Здесь: Configuring Rails.

+0

Спасибо за ваш ответ – macsig

Смежные вопросы