2017-12-06 15 views
1

Rubyでアプリケーションを開発しています。これはコマンドラインで使用され、多くのオプションがあり、そのうちのいくつかはかなり複雑です。私は、Webインターフェイスを通じてアプリケーションを使用する機能を提供したいと思います。コマンドラインアプリケーションのWebインターフェイス

私はこれを行うための最良の方法、またはこれを行うためのより良い方法があるかどうかについて一般的な質問をしています。

私が現在取り組んでいるアイデアは、アプリケーションがフォークし、WEBrickを使用して1024以上のポートでhttpサーバーを作成するということです。次に、親プロセスでは、sensible-browserを使ってユーザのWebブラウザを起動し、ブラウザをlocalhost:portに送ります。

ユーザーはWebアプリケーションを使用します。特定のボタン(おそらく「保存」)をクリックすると、サーバーは最終ページを送信し、自身をシャットダウンします。最後のメッセージには、ブラウザを閉じるようにユーザーに指示するメッセージが含まれます。

親プロセスは、ブラウザとサーバープロセスが閉じて、一部のローカルファイルに保存された情報の使用を続行すると見なします。

私はこのアイデアに夢中ではありません。しかし、私は本当に簡単なインターフェイスを作成するために出発しています。つまり、ユーザにコマンドラインパラメータの束を覚える必要はありません。

私はカーソルベースのフォームを提供する宝石を見つけることができません。そのため、私はウェブブラウザのコンセプトを検討しています。

意見ですか?

+0

ほとんどのGUIツールキットにはバインディングがあります。質問はまた少しです:あなたのユーザは誰ですか?彼らはどのシステムを実行し、どのようにあなたのプログラムにアクセスしますか?どのように配布されていますか? – Felix

答えて

0

私がすべてを正しく理解していれば、コマンドラインインターフェイスとWebベース(またはデスクトップGUIベース)インターフェイスを打ち破ることを検討することをお勧めします。ですから、例えば、私はあなたが

-aは、「追加」機能のためのものであり、その後、あなたが -s-d、および -m(減算を持っているかもしれません
$ myscript -a 2 3 

の形で使用電卓CLIを、作成していた場合分裂、乗算)...平均的なJoeユーザーのためにそれを覚えなければならないことはあまりありません。あなたは、このような

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 

としてクラスを作成することができ、その後、あなたは

#!/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) 

をCLIスクリプトを作成して、今、あなたはまた、Webベース(またはデスクトップベース)を作成することができますも、ちょうど呼び出し、それのためのインターフェース電卓クラスに:

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つ(またはそれ以上)のインターフェイスファイルがあります。第2のインタフェースを作るためにどのような面で

、Rubyはあなたがあなた自身の上のフォームとの相互作用を構築する必要がありますけれども限り、私は「として((私はその名前でインストールされた宝石を持っている)cursesのサポートを持っています私が気づいたことは、呪われた形を作るのを助けるために宝石を探したことはありませんでした)、そしてデスクトップベースのものはあなたの説明からWebベースのものを書くよりはおそらくいいです(ルビーはかなりの数のGUI宝石を持っていますが、呪い以外のものは一度も使用していませんでしたが)、この時点では「あなたのプロジェクトには何が正しいのですか」だけです。

関連する問題