На основе CLI "V" в Rails MVC? - PullRequest
       10

На основе CLI "V" в Rails MVC?

4 голосов
/ 24 февраля 2010

Трудно получить какие-либо полезные результаты от различных поисков по этой концепции - вероятно, потому что это. Неправильно и / или б. неясный. По сути, я хотел бы написать приложение, которое работает как обычное веб-приложение или с интерфейсом командной строки. Я делал это в древнем прошлом для sysadmin-y, используя Perl, но это не доставляло радости от использования Ruby / Rails.

Мне достаточно комфортно с самим Rails, и я также использую автономный Ruby для всех видов CLI. То, что я ищу, - это лучшие практики, если они существуют, для расширения приложения Rails, чтобы иметь функциональность CLI.

Возможно, ответ так же прост, как использование скрипта / бегуна и создание моего собственного "VC" при использовании моих моделей Rails ... Это то, что я планировал сделать, но я решил отступить и проверить работоспособность этот подход первым. Я с трудом представляю себе, как использовать любой из контроллеров Rails, учитывая, что он так тесно связан с HTTP-запросами, но меня часто удивляет то, что придумали умные люди.

Спасибо за любые полезные ответы.

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Я думаю, все зависит от того, хотите ли вы повторно использовать логику контроллера. Если вы это сделаете, то можете пойти по пути написания gem / Rake-задачи / автономного сценария Ruby, который отправляет HTTP-запросы к приложению и получает ответы в виде JSON / XML / обычного текста или чего-либо еще. Что-то вроде HTTParty идеально подходит для этого.

Вторая альтернатива, как вы описали, - управлять вашими моделями Rails непосредственно из собственного скрипта и представлять результаты.

0 голосов
/ 24 февраля 2010

Другой подход заключается в том, что веб-интерфейс отправляет CLI что-либо сделать. Все, что стоит сделать, находится в CLI, а сеть просто вызывает CLI для всех своих нужд.

Обстрел немного дороже. Если это снижает производительность, используйте popen для загрузки интерфейса командной строки только один раз за веб-сеанс. Затем вы можете подавать ему команды (записывать в его стандартный ввод через канал popen) и получать результаты (считывать его стандартный вывод через канал popen) без необходимости загрузки CLI для каждой команды. Если CLI имеет вид «Я принимаю некоторые аргументы, что-то делаю и выхожу», то добавьте в него новый режим «--stay-resident» или что-то подобное, что переключает его на поведение, необходимое для веб-интерфейса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...