2013-07-25 2 views
2

Если мне нужно добавить (специфичные для проекта) классы к моему контроллеру в рельсах, каков правильный путь/место для размещения и «включить» их/там .rb-файлы? (котировки для: не ключевое слово ruby)Каков правильный способ добавления классов в контроллер в рельсах?

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

уверен, я мог бы поставить все в controler.rb, но ...


AnSer для меня:

Первое: нет никаких правил, если иметь в виду (или учиться как я) правила рельсов: NameOfCla -> name_of_cla (.rb) < - не используя класс как слово для Клиренса

имени вашего класса, как вам нравится:

class ExtendCon #<--- not using controller here for clearence 
    .... 

положите его в файл extend_con.rb, подождите объяснения пути, пожалуйста. если вы назвали ваш класс «MYGreatThing» будет «m_y_great_thing» (никогда не testet что), поэтому следует избегать Chineese charachters

если ваш контроллер использует

@letssee=ExtendCon.new 

рельсы узнает, что класс и файл (extend_con) на его своя. я до сих пор не понял, требуется ли перезагрузка сервера. (В первый раз)

выбрать путь поместить файл: (I preferre Daves путь) app/myexten или что вам нравится, что делает это приложение "специфично и еще distquishes на стандартную Rails«вещи»

если вы не LASY, как я (я положил его в приложение/ontrollers) поместить путь, который вы выбрали в config/application.rb как (комментарии там, чтобы найти его)

# Custom directories with classes and modules you want to be autoloadable. 
# config.autoload_paths += %W(#{config.root}/app/controllers) 
config.autoload_paths += %W(#{config.root}/app/myexten) 

это один workes для меня во всех режимах, включая " разработчик », и мне не нужно было добавлять« свои »вещи в приложение/lib

ответ

0

От этого зависит.

Я склонен ставить библиотеки код, используемый в явном виде (например, экземпляр, кололись, и т.д. в артефакты приложения уровня) в app/xxx где xxx обозначает «тип» вещи, как decorators, services и т.д.

Магический материал, как правило, заканчивается в lib, как патчей обезьян, артефактов архитектурного уровня и т. Д.

в любом месте может быть добавлено в пути автозагрузки коды, требуется автоматически инициализатор и т.д.

+0

Почему нет чего-то типа «rails add class [file] [in group] [и т. Д.]», Что звучит для меня строго для меня – halfbit

+0

@RolandMayer Наверное, потому что нет веских оснований быть строгим; IMO Rails не должно усомниться в том, как организован ваш код. –

+0

ваша точка, я все еще сражаюсь с, что (автоматически) переупорядочено за запрос (в режиме dev), а что нет, поэтому я думал, что RAILS «посмотрите, возьмите это тоже», будет идея – halfbit

0

Rails 4 поставляется с внутренней директорией для контроллеров, называемых проблемами. Вы можете попробовать это.

app/controlls/concerns 

Если у вас есть concerns/foo_bar.rb, вы включите его следующим образом:

class FooController < ApplicationController 
    include FooBar 
end 

Модели также имеют свои собственные проблемы каталог. Я считаю этот подход полезным, и его можно применить к Rails 3. Вам просто нужно добавить каталоги в свои пути загрузки.

+0

Я все еще «чувствую», что «класс добавления рельсов ...» был бы строгим, хотя у dave выше есть другое мнение – halfbit

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