Подтвердить что ты не робот

Где должен находиться мой немодельный/неконтролируемый код?

Я написал приложение rails, которое следует за обычной структурой каталогов (код модели в моделях, код контроллера в контроллерах).

Но теперь я работаю над новой функцией, и для этого я написал несколько (что бы я назвал) "сервисным" кодом.
Новая функция заключается в том, чтобы импортировать некоторые данные в систему, на данный момент это два класса для импорта, но может расширяться до более.

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

Итак, я создал каталог "приложения/службы" и разместил его там. Я также создал каталог "test/services", где я поставил свои тесты.

Все хорошо и хорошо, что я думал, но когда я запускаю "rake: test" или "autotest", мои тесты новых сервисов не выполняются.
Теперь я ожидаю, что есть способ заставить рейк забрать их, но разве это предупреждающий флаг, что я сделал что-то неправильно?
Есть ли другое место, в котором должен жить код, или я так или иначе не делаю "путь Rails"?

Как правило, всякий раз, когда я сталкивался с такой проблемой, прежде чем я обнаружил, что у рельсов уже есть решение, но я не знал об этом соглашении. Это один из этих случаев?

4b9b3361

Ответ 1

Вот что такое папка "lib".

Папка lib находится в автоматически просматриваемом пути, поэтому вы можете иметь

class MyFoo
end

в lib/my_foo.rb, а затем просто позвонив

MyFoo.new

от контроллера будет загружен код без необходимости require 'my_foo'

Ответ 2

./lib - определенно место, куда можно идти.

Другое место, которое нужно положить в каталог инициализаций в config, зависит от того, что вы делаете. Вы также можете подумать о том, чтобы все это было в плагине, но если это небольшая функциональность, вероятно, это не стоит.