2010-02-24 2 views
4

이 개념에 대한 다양한 검색에서 유용한 결과를 얻는 데 어려움을 겪고 있습니다. 틀린 및/또는 b. 모호. 본질적으로, 나는 정상적인 웹 애플리케이션이나 커맨드 라인 인터페이스로 작동하는 애플리케이션을 작성하고 싶다. 필자는 과거 Perl을 사용하여 sysadmin-y에 대한 작업을 해왔지만 Ruby/Rails를 사용하면 기쁨을 누릴 수 없습니다.CLI 기반 "V"in Rails MVC?

필자는 Rails 자체가 마음에 들고 CLI의 모든 기능에 독립형 Ruby를 사용합니다. 내가 찾고있는 것은 CLI 기능을 갖기 위해 Rails 애플리케이션을 확장 한 모범 사례이다.

아마도 대답은 스크립트/러너를 사용하고 내 Rails 모델을 사용하는 동안 내 "VC"를 사용하는 것만 큼 간단합니다 ... 이것은 내가 계획하고있는 것이지만 뒤로 물러 설 것입니다. 먼저 접근 방법을 확인하십시오. HTTP 요청과 너무 밀접한 관계가 있다는 점을 감안할 때 Rails 컨트롤러를 활용하는 방법을 상상하기는 힘듭니다.하지만 영리한 사람들이 무엇을 생각해 내는지는 놀랍습니다.

유용한 답변을 주셔서 감사합니다.

답변

1

나는 컨트롤러 로직을 재사용하고 싶은지 여부에 달려 있다고 생각한다. 그런 다음 응용 프로그램에 HTTP 요청을하고 응답을 JSON/XML/일반 텍스트 또는 기타로 수신하는 gem/Rake 작업/독립 실행 형 루비 스크립트 작성 경로를 사용할 수 있습니다. HTTParty과 같은 것이 이상적입니다.

두 번째 대안은 다음과 같습니다. 자신의 스크립트에서 직접 Rails 모델을 구동하고 결과를 표시하십시오.

+0

네, 설명해 주신 것을 잊어 버렸습니다 (CLI 유틸리티가 ActiveResource를 사용하여 내 Rails 앱과 대화 함). 그것은 현재 제작 중입니다. 그러나 1 년 정도 지나서 그걸로 살아가는 것이 틀린 방법이라고 확신합니다. 간단한 요청은 괜찮지 만 실제로는 안되는 클라이언트 쪽에서 수행해야 할 복잡한 작업이 많이 있습니다. 응답 해 주셔서 감사합니다. – mjmac

0

또 다른 접근법은 웹 인터페이스가 CLI를 통해 무엇이든 할 수 있도록하는 것입니다. 할 가치가있는 모든 것이 CLI에 있으며 웹은 모든 필요에 따라 CLI를 호출합니다.

셸링은 약간 비쌉니다. 성능을 해치는 것으로 판명되면 popen을 사용하여 웹 세션 당 한 번만 CLI를로드하십시오. 그런 다음 명령에 피드를 제공하고 (popen 파이프를 통해 stdin에 쓰기) 각 명령에 대해 CLI를로드하지 않고 결과 (popen 파이프를 통해 stdout에서 읽음)를 가져올 수 있습니다. CLI가 "일부 인수를 취하고 종료 한 다음"정렬을 수행 한 다음 "- 대기 - 상주"등의 새 모드를 추가하여 웹 인터페이스에 필요한 동작으로 전환합니다 .

+0

아주 간단한 응용 프로그램에서 작동 할 수 있습니다. 레일즈 레이어에서 확장하고 싶은 어플리케이션이 많이 있습니다. 웹에서 CLI를 구동하면 중복 된 기능이 많이 생기고 보안 문제가 복잡해집니다. – mjmac

+0

기존 레일 앱을 수정하고 있습니까? 그것은 사물을 변화시킵니다. 나는해야 할 일과 똑같은 일을했다. 중복을 피하기 위해 모든 "do something"코드를 레일에서 CLI로 옮겼습니다. 당신이 말했듯이 그것은 당신에게 좋지 않습니다. –

관련 문제