제가 모든 것을 제대로 이해하고 있다면 명령 줄 인터페이스와 웹 기반 (또는 데스크탑 GUI 기반) 인터페이스를 분리하는 것이 좋습니다. 따라서, 예를 들어, 당신이
$ myscript -a 2 3
곳 -a
의 방식으로 사용하는 계산기 CLI를 만드는거야 경우하면 "추가"기능을위한 것입니다 그리고 당신은 -s
, -d
및 -m
(빼기가있을 수 있습니다 , 나누기, 곱하기) ... 평균적인 조 사용자에게는 그다지 기억하지 않아도됩니다. 또한 그냥 호출하는 그것을 위해 인터페이스를 당신은
class Calculator
class<<self
def perform(operation, left_side, right_side)
# figure out from operation what I need to do and do it or delegate it
end
end
end
같은 클래스를 만들 수 있습니다 다음은 CLI 스크립트를
#!/usr/bin/env ruby
require 'calculator'
# parse options, couple ways to do this, you probably already have one in mind
operation_option = ... # check for -a or -s or -d or -m
left_side_option = ...
right_side_option = ...
Calculator.perform(operation_option, left_side_option, right_side_option)
을 만들고 지금 당신은 또한 기반 (또는 데스크탑 기반) 웹을 만들 수 있습니다 계산기 클래스 :
require 'calculator'
# read from text fields/drop downs/whatever
operation_option = ...
left_side_option = ...
right_side_option = ...
Calculator.perform(operation_option, left_side_option, right_side_option)
이 방법은 중복의 작은 조금이지만, 정말 ... 당신이 쓰기의 단지 대신 인터페이스에서 텍스트 필드를 구문 분석 할 필요가 어느 쪽이든 이 파일들을 CLI가 읽는 중간 파일로 보내면 CLI를 무시하고 바로 실행하려는 코드로 바로갑니다. 따라서 특정 인터페이스를 표시하고 (해당되는 경우) 해당 인터페이스를 읽고 공통 형식으로 "작업 말"클래스에 데이터를 전달하는 역할을 담당하는 2 개 (또는 그 이상)의 인터페이스 파일이 있습니다.
두 번째 인터페이스를 만들면 어떤 점에서 Ruby는 curses
을 지원합니다 (나는 그 이름으로 보석을 설치했습니다). 폼과 상호 작용을 스스로 구축해야합니다. 나는 루비가 꽤 많은 GUI 보석을 갖고 있지만, 웹 기반의 것을 작성하는 것보다는 데스크톱 기반의 것이 더 낫다. ve는 curses 하나를 제외하고는 전혀 사용하지 않았습니다.)하지만이 시점에서 모든 것이 "귀하의 프로젝트에 옳은 것"입니다.
대부분의 GUI 툴킷에 바인딩이 있습니다. 질문은 또한 조금 있습니다 : 사용자는 누구이며, 어떤 시스템을 실행하고 프로그램에 어떻게 액세스합니까? 배포 방법은 무엇입니까? – Felix