「LiveConsole」の編集履歴(バックアップ)一覧に戻る

LiveConsole - (2008/05/04 (日) 11:48:36) のソース

*http://debu.gs/live-console
*http://rubyforge.org/projects/live-console




== LiveConsole ==
=== Summary ===
LiveConsole は TCP 接続上で IRB を提供するライブラリです。もしあなたがこれをあなたのアプリケーションに追加したら, あなたのアプリケーションで任意のコードを実行できます。例えばこんなことが出来る:
*実行中のアプリケーションの状態を監視する。
*アプリケーションの状態を変更する。
*再起動無しに直接パッチを当てる。
*netに繋がる誰でも出来るので localhost 以外では使わないように :) 

診断ツールやデバッグツールとして利用でき、友達やLisp使いを感動させたりもできるでしょう。

=== Stern セキュリティ警告。 Grrr. ===
バグセクションを見てください。 このライブラリを不用意に使用すると多大なセキュリティホールを作るかもしれません。特に認証機能が実装されるまでは。

=== Installation ===
rubygems でインストールできます。

 gem install live_consoleor

または 素の古い setup.rb:

 ruby setup.rb install

.gems/.tar.gzs/.tar.bz2s は Rubyforge Project ページにあります。

=== LiveConsole の使い方 ===
LiveConsole をあなたのアプリケーションで使うのはとても簡単です。:

 require 'rubygems'
 require 'live_console'
 lc = LiveConsole.new 1337    # Creates a LiveConsole on port 1337
 # We're not yet listening on the port.  We need to start it up:
 lc.run                # Starts the LiveConsole thread
 # At this point, users can connect and get an IRB prompt.
 lc.stop                # Kills the LiveConsole thread
 # Now, no one can connect.

LiveConsole の簡単な使い方の例は doc/lc_example.rb を見てください。単にこうするだけです:

 $ ruby doc/lc_example.rb 4000 test
 # Then, in a different shell:
 $ netcat localhost 4000
 irb(main):001:0> puts 'Wow, magic!'

You can get creative about it, サーバでハンドルされない例外が発生し、LiveConsole#stop が呼ばれたときだけ LiveConsole は実行されます。診断して問題を解決できます。

=== バグ ===
LiveConsole は Readline サポートのようにコンソール上の IRB の多くの正確さを欠いています。

exit や ^D やシグナル (INT や STOP) は動作しません。接続していたプログラムをただ終了させるだけです。

まだ認証は近い将来に計画されていますがサポートされていません。 これはセキュリティリスクを作ります。: ソケットに接続できるだれでもプロセスを所有しているユーザとして任意のRubyコードを実行できます。事実、 localhost上で実行することでさえ信頼されていないユーザと box にのるのは(?)セキュリティ上の問題かもしれない。 もし何をしているかわからないようなら、このライブラリは使用しないでください。

README には Lisp 使いへの中傷を含んでいます。PDP-10 のマニュアルについて非難するのはやめてください。私はあなたの言語と胸のラムダのタトゥーが好きです。(?)

とにかく、 LiveConsole には今のところわかっているバグもありませんが、アルファバージョンです。 バグレポートやパッチは歓迎します。
記事メニュー
目安箱バナー