SoftwareFoundationGroupAtKyotoU / automata

Other
3 stars 10 forks source link

Add interact view #228

Closed skymountain closed 9 years ago

skymountain commented 9 years ago

intepreter との簡易な対話webインターフェイスを実装しました. まだ admin 権限をもつ場合だけタブを表示する,test系の機能の共通化などの実装すべきことは残っていますが,とりあえず PR 出しておきます.現時点でのコードレビューももちろん歓迎します.

krtx commented 9 years ago

使い方を……

skymountain commented 9 years ago

今手直ししてる最中なのでしばしお待ち下さい

skymountain commented 9 years ago

書き直し終わりました.使い方は config/example/master.yml に書いてある通り

interact:                                        
  default:                          
    run: # commands to start an interpreter          
    sandbox: "URI of interactor.cgi."

を設定に加えてください.すると su としてログインしているときに限り /record の status header に 「対話」タブが追加され,そのタブで入力した文字列が sandbox で立ち上がったインタプリタに投げられます.

例えば OCaml だと

interact:
  default:
    run:
      - ocaml
    sandbox: "http://localhost:3000/sandbox/interactor.cgi"

とすればとりあえずインタプリタが立ち上がります.もし提出されたファイルをロードしたければ

interact:
  default:
    run:
      - ocamlbuild -I src -lib str -no-hygiene main.byte
      - cd _build
      - ocaml
    sandbox: "http://localhost:3000/sandbox/interactor.cgi"

と書き #load で .cmo ファイルをロードすれば使えるようになります.

westpaddy commented 9 years ago

そういえば、sandbox側でもbundleすることになったのなら、sandbox用のcgiで7z使っているところをrubyzipに置き換えてはどうでしょうか?

skymountain commented 9 years ago

そうですね,これとは別件なので issue を立てます.

westpaddy commented 9 years ago

とりあえず動作は確認しました、コードも一通り見て大丈夫そうでしたけど、自信ないのでほかの人待ちです。

skymountain commented 9 years ago

:bow:

skymountain commented 9 years ago

inputパラメータは必須ではないので、ここで nil が渡る可能性があると思うんですが、 nil を渡してしまっても大丈夫なんでしょうか?

大丈夫なようなです.が,nil だったら空文字にした方が意図がはっきりするのでそうした方がいいでしょうね.

他のAPIと同様に渡せるパラメータの一覧のコメントだけでもあると便利な気がします。 (とりあえず他のAPIの Usage の行相当のもので十分だとは思いますが

今書いてあるのだとどこら辺が不十分でしょ?(admin_interact.rbですよね?)

chiro commented 9 years ago

今書いてあるのだとどこら辺が不十分でしょ?(admin_interact.rbですよね?)

sandbox/interactor.rb の方です。 こっちもrackアプリケーションに見えたので。 わかりづらくてすいません :sweat_drops:

skymountain commented 9 years ago

sandbox/interactor.rb の方です。 こっちもrackアプリケーションに見えたので。

なるほど,了解です.

westpaddy commented 9 years ago

ファイル提出してない人のところでこの機能を使うと500エラーになって、デバッグメッセージが返ってくるのですが、仕様ということでいいですか?

skymountain commented 9 years ago

ファイル提出してない人のところでこの機能を使うと500エラーになって、デバッグメッセージが返ってくるのですが、仕様ということでいいですか?

エラー対応しました.

krtx commented 9 years ago

script/helper.rb の追加とそれに伴う script/test の変更は別コミットにしてもらえると見通しが良くなるかと思います。

skymountain commented 9 years ago

エスケープとコミットの分割はやりました.

chiro commented 9 years ago

:+1: :+1: :+1:

skymountain commented 9 years ago

:bow: :pray: :bow: :pray: :bow: