2012-04-15 2 views
4

У меня, похоже, возникают проблемы с соглашениями об именах папки Lib в Rails, а предоставленные мне сообщения об ошибках не помогают. [Например, я получил сообщение о том, что XXX :: YYY :: TextBox, как ожидается, будет определен как xxx/yyy/text_box.rb, хотя он определенно определен там.] Я думаю, что я ошибаюсь.Ruby Rails Соглашение об именах библиотек Lib

Предположим, я работаю над YourModule :: MyModule :: MyClass. Я ясно получить, что этот файл должен быть расположен в

Lib/your_module/my_module/my_class.rb

Но что должен сам файл здесь выглядит? Какой из них (если есть) правильный?

#your_module/my_module/my_class.rb 
module YourModule 
    module MyModule 
    class MyClass 
     ... 
    end 
    end 
end 

Или

#your_module/my_module/my_class.rb 
class MyClass 
    ... 
end 

Другими словами, мне нужно, чтобы гнездиться класс внутри структуры модуля или нет?

ответ

5

В папке lib есть несколько условностей, поскольку она не загружается автоматически. Итак, как вы организуете файлы, зависит от вас, но вам нужно правильно назвать классы. Ваш первый пример правильный.

Чтобы получить файлы включены вам нужно указать вы хотите их в файле application.rb см этот пример: Best way to load module/class from lib folder in Rails 3?

Я рекомендовал бы сделать папку только названием lib/modules, так как вы, вероятно, не будет иметь очень многие. Назовите файл my_class.rb. Тогда в application.rb вам нужно:

config.autoload_paths += %W(#{config.root}/lib/modules) 

Это должно заботиться о вашей проблеме.

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