【Ruby】RubyでCGI
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/04(金) 12:57ID:c4hRtzGY関連リンクは>>2-3
0404nobodyさん
03/10/05 20:55ID:???0405nobodyさん
03/10/05 20:57ID:???0406nobodyさん
03/10/05 23:32ID:???名前の最初の一文字を小文字に変えるのじゃ!!
0407nobodyさん
03/10/06 08:41ID:BTATtbkaこれはどう?
class A; TEST = 1; end
class B < A; end
class C < A; TEST = 5; end
p A::TEST, B::TEST, C::TEST
0408nobodyさん
03/10/06 08:44ID:BTATtbkaclass A; TEST = 1; end
class B < A; end
p B::TEST
class B < A; TEST = 5; end
p B::TEST
0410nobodyさん
03/10/11 11:04ID:???0411nobodyさん
03/10/11 13:19ID:???0412nobodyさん
03/10/11 19:58ID:???0413nobodyさん
03/10/12 02:07ID:???それとも未定義だけど評価できるのかな?
0414nobodyさん
03/10/12 02:39ID:???yes. try below
ruby -e 'a = [p a]'
ruby -e 'if false then a = 1 end ; p a'
0415nobodyさん
03/10/21 08:13ID:SnhWYpxu0416nobodyさん
03/10/24 17:30ID:cS8OCSw0ttp://webpub.narucy.com
>ライバルは PHP!
ですってよ。
0417nobodyさん
03/11/02 11:56ID:???DBI + Amrita でデータベースの情報を表示する CGI を良く作るので
これはと思って会社で使おうとしたがプレビューができなかった。
0418nobodyさん
03/11/03 22:00ID:a8+MLyNB0419nobodyさん
03/11/03 22:36ID:c9cmQMPl0420nobodyさん
03/11/04 05:04ID:???ちょっと手間取ったが普通に使えている。
0421hn ◆iKwMOjCT4s
03/11/04 14:07ID:nVQycvvtその設定がうまくいってなくてもユーザに通知するとか一切無いので、この辺なんとかしなきゃと思ってます。
0422nobodyさん
03/11/12 17:36ID:???もしかして作者さんですか?
ぢゃぁ、質問させてください。
あるホームページの管理を任されました。
楽をしようと思ってWebPublisherをインストールしました。
そのページのソースをWPに読み込ませたのですが、
「Missing end tag for 'A' (got "TD")」
となってプレビュー表示出来ません。
問題になっているところはおそらく下記のようなところだと思います。
<TD>
<A href="http://www.xxx.ne.jp/" class="LinkTitle2">Link</A>
</TD>
そこで、A タグを[Source]−[Edit Tag]すると、・・・・・ href以外の属性は編集出来ないんですか?
WPは0.5.2、Rubyは1.8.0 Cygwin、Eclipsは2.1.2です。
Simpleなどではきちんと動作を確認しています。
なお元の作者が何のツールを使っていたのかは不明です。
ちなみに彼は開発に疲れてヨガの眠りに就きました。
0423nobodyさん
03/11/17 19:15ID:???cgi.form("method"=>"post","action"=>"xxxx.cgi","ENCTYPE"=>"multipart/form-data"){
cgi.input("type"=>"file","name"=>"send_data") +
cgi.submit("value"=>"upload") +
cgi.input("type"=>"hidden","value"=>"#{other_data}","name"=>"other_data")
なことをやると思うんですが、受け側のxxxx.cgi(もちろんrbファイル)では
これらのデータはどう扱われているのですか?
つまり
・upしたファイル
・他に必要なデータ
はどのように扱われているのか教えて下さい。
ちなみに
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/25399
見たけどサパーリです。
0424nobodyさん
03/11/17 19:35ID:???cgi.rb の使い方、でいいのかな?
通常、foo['bar'][0] で取得するところが
multipart/ form-data の時は foo['bar'][0].read になるくらい、かな
0425nobodyさん
03/11/17 19:40ID:???何年も前に書いたコードを見てるのでもしかしたら変更があったかもしれん
0427nobodyさん
03/11/18 11:28ID:???Internal Server Error じゃなく、ブラウザにエラーコード吐き出すこと
って出来ますか?
apacheのログ見に行くのが面倒臭いもので…
0428nobodyさん
03/11/18 11:54ID:???例外捕まえるのがいいかもね
rescue StandardError
rescue ScriptError
の時にContentヘッダと$!を出力、とか
0429428
03/11/18 12:05ID:???もしも、mod_ruby を使ってるなら、httpd.conf の中で
RubyRequire apache/ruby-run -> RubyRequire apache/ruby-debug
RubyHandler Apache::RubyRun.instance -> RubyHandler Apache::RubyDebug.instance
の変更でエラーが補足できるよ
0430nobodyさん
03/11/18 12:16ID:???0431nobodyさん
03/11/18 12:48ID:???これは右辺を左辺に変更でいいんですよね?
とりあえずコメント部とeruby部を削除したhttpd.confですけど
# BEGIN_MOD_RUBY
<IfModule mod_ruby.c>
RubyRequire apache/ruby-debug
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyDebug.instance
Options ExecCGI
</Location>
<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyDebug.instance
</Files>
RubyRequire auto-reload
</IfModule>
# END_MOD_RUBY
これでOKですよね?
でも表示されません…(´Д⊂グスン
0432nobodyさん
03/11/18 13:01ID:???0433nobodyさん
03/11/18 14:00ID:???おっと(;・∀・)
…でも
<Files *.cgi>
SetHandler ruby-object
RubyHandler Apache::RubyDebug.instance
</Files>
を追加しましたが駄目でした。゚(゚´Д`゚)゚。
0434nobodyさん
03/11/18 17:20ID:???VirtualHostでRubyのデバッグ専用の設定を作るのが
よさそうな気がしてきた・・・
いつもApacheのエラーファイル使ってるが
0435nobodyさん
03/11/20 07:10ID:???0436nobodyさん
03/11/20 09:57ID:???PerlとPHPどっちがいいか?ってのと似てる・・・
0437nobodyさん
03/11/20 10:35ID:???cgi.rbのHTML関連の機能を使ってるやつなんているのか?
0438nobodyさん
03/11/20 11:11ID:???0439nobodyさん
03/11/20 11:30ID:???0440nobodyさん
03/11/20 14:05ID:???使うときでもパラメタ取得等にcgi.rbも併用してる・・・
0441nobodyさん
03/11/20 14:44ID:???でもそれ以外…
0442nobodyさん
03/11/20 15:02ID:???0443初心者
03/11/20 17:27ID:???遅レスですが、mod_rubyの方の設定でブラウザにエラーコードを
吐き出すことが出来ました!
なんとhttpd.confでmod_rubyをロードしてなかったという恥ずべきミスを
していた自分…(/ω\)
で、追加質問なんですがw、
eRubyも使えるように設定しようとしてるのですが、
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
これをhttpd.confに書けば *.rhtmlはeRubyを介してくれるんですか?
rhtmlファイルを読み込むとダウンロードさせようとするもんで…
0444nobodyさん
03/11/20 18:15ID:???0445初心者
03/11/21 09:45ID:???もうすでにインストされてる場合、
mod_rubyのフォルダで
% make clean
% ./configure.rb --enable-eruby
% make
% make install
でOKですか?
0446nobodyさん
03/11/21 11:02ID:???私は、Apache2->Ruby->eRuby->mod_ruby の順番で
インストールして、滞りなく使えてるけど
0447初心者
03/11/21 13:41ID:???の順でインストール済みなんですけど…
apacheが古いとか関係ないですよね?
0448nobodyさん
03/11/21 14:31ID:???Files が使えないってことはあるのかな・・・
AddType application/x-httpd-eruby .rhtml
を追加するというのはどう?
0449初心者
03/11/21 15:08ID:???実はそれも付け加えてあるんですよねw
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
↑上記をです
ちなみに/cgi-bin/は
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
とされてます
もちろんその下にはerubyをコピーしてあります
0450nobodyさん
03/11/21 15:19ID:???ん、、、
mod_ruby の場合、cgi-binの下にerubyを置く必要は無いので、
>Action application/x-httpd-eruby /cgi-bin/eruby
この行も、cgi-bin/eruby もいりません。
ついでに定義もどっちかひとつにした方がいい
0451初心者
03/11/21 15:45ID:???なるほどメモメモ.._〆(゚▽゚*)
という訳で<Files>〜を全てコメントアウトして、AddTypeのみにしましたけど
まだ駄目です…(´Д⊂
ダウンロードしろという奴をダウンしてきて、エディタで開くとそのまんまだし…
0453初心者
03/11/21 16:38ID:???今までrestartでしてました
stop -> startしても変わりません…
ご迷惑おかけして申し訳ないです
まだ他に何か考えられるとこ無いですかね?
0454初心者
03/11/21 16:54ID:???とりあえずAddType〜をコメントアウトして、
もう一度<File *.rhtml>でやってみたら何故か出来た…Σ(´Д`lll)
昨日までと同じなのに…
他に変えたとこは
RubyRequire auto-reload
をコメントアウトした位なんだけど、関係あるのかな〜?
0455nobodyさん
03/11/21 18:18ID:???<File>を使うなんて的外れもいいとこ
httpd.confについてよく勉強すれ
0457nobodyさん
03/11/21 19:08ID:???書いていないわけだが…
0459nobodyさん
03/11/29 18:53ID:???でerubyを動かしたいんですが、
apacheを動かす際、
Starting httpd: Syntax error on line 250 of /etc/httpd/conf/httpd.conf:
Cannot load /usr/libexec/apache/mod_ruby.so into server: libruby.so.1.6:
cannot open shared object file: No such file or directory
と出て起動してくれません。
この前にruby1.6がrpmで入ってたのですが、アンインストールはしてあります。
ちなみに、libruby.so.1.8が/usr/local/libフォルダに入っていますが、mod_ruby.so
の方でなぜか1.6を探しているみたいです。
これはmod_rubyのconfigureの際のオプションで直るのでしょうか?
ご教授願います。
0460nobodyさん
03/11/29 19:34ID:???ldd してみたらどう?どれかが古いままなんだろう
0461nobodyさん
03/11/29 19:49ID:???lddなんてのがあるんだ(;゚∀゚)
lddしてみたら、libruby.so.1.6がNot Foundになってたから、
/usr/lib/見たらやっぱり無かったよ
という訳で/usr/local/lib/libruby.so.1.8を無理やり/usr/lib/libruby.so.1.6
ってしたら上手くいっちゃったけど、なんでmod_rubyは1.6を探そうとするの?
configure時の設定ですか?
とりあえず(TдT) アリガトウ
0463初心者
03/11/30 22:44ID:???あれからeRubyでCGI書いてるのですが、
フォームでファイルをアップロードするとこで困ってます。
>>424のようにやってみたのですが、
undefined method `read' for nil:NilClass
readが無いって言われます。
他にもoriginal_filenameとかも無理です。
ちなみに、これをRubyでやると上手くいきます。
なぜなんですか?
0464nobodyさん
03/11/30 22:58ID:???ついでに、オレも1.8にして気がついたが、
cgi.params['bar'][0] にしないとアクセスできんかった気がする
0466初心者
03/12/01 00:19ID:???paramsなんて無いって言われるわ
ファイル開こうとするとInsecure Operationって出るわ
Rubyなら出来ることがeRubyで出来ない…
0467nobodyさん
03/12/01 01:11ID:???適時、untaint をするとよろし
基本的に、外からもらう文字列にはuntaintが必要
0468初心者
03/12/01 10:35ID:???file関係はまさにセーフレベルでした!
eRubyのデフォルトのセーフレベルっていくつですか?…て
これ位は自分で調べられますねw
ただ、multipart/form-dataの方が全く駄目です。
なんでreadが無いって言われるんですか…?
0469nobodyさん
03/12/01 15:11ID:crZKm9cCに表示されるのですが、アドレスに引数を付けて表示させると
なぜか Internal Server Error: premature end of script headers
と出て表示されません。
apache のエラーログには
/usr/local/bin/eruby: missing required file to process
と出ていました。
もともと Windows + AnHTTPd + ruby1.6.8 できちんと動作
していた .rhtml を、 Linux + apache2.0.40 + ruby1.8.0 + eRuby 1.0.4
に持ってきたのですが引数を付けると動かなくなってしまって困ってます。
どなたかアドバイスいただけないでしょうか。
0470nobodyさん
03/12/01 16:29ID:???引数って例えばどこにどんなのをつけたのか?
0471nobodyさん
03/12/01 17:24ID:???していました。以下はテストのために書いたものです。
---test.cgi-------------------
#! /usr/local/bin/eruby
<html><body>
<%
require 'cgi'
p CGI.new.params
%>
</body></html>
------------------------------
普通に 'http://xxxxxxx/test.cgi?AAA' とすると
{"AAA"=>[nil]}
と出るのですが 'http://xxxxxxx/test.cgi?AAA=' と
'=' を付けると(というか記号をつけると)Internal Error
になります。
# require 'cgi' しなくても引数に '=' を付けるとエラーになります。
# これは普通でしょうか?
0472nobodyさん
03/12/01 18:19ID:???あと、
begin
require 'cgi'
p CGI.new.params
rescue
puts $!
end
とかできるかのう
0473nobodyさん
03/12/01 19:04ID:???eRubyがreadlineと相性悪いのは発見したが・・・(x86Solaris9)
0474469(471)
03/12/01 19:09ID:???eRuby version 1.0.4
ruby 1.8.0 (2003-08-04) [i686-linux]
Server version: Apache/2.0.40
Server built: Jul 31 2003 11:36:14
です。
ruby/eruby ともに公式サイトで安定版として公開
されている最新のものだと思います。
それから begin 〜 resuce 〜 end は実行出来ませんでした。
Internal Server Error、要するに今までと同じエラーが
出てしまいます。
今のところ先頭行に #! を付けて .cgi として CGI として
動かしていますが、httpd.conf の AddType + Action で
.rhtml としても同じ状況になってしまいます。
相変わらずアパッチのログには missing required file
to process. と出てます・・・
0475469
03/12/01 19:16ID:???それはそうと、わざわざ試していただいてありがとうございました。
# あー、Windows に戻すのはやだなぁ・・・
0476nobodyさん
03/12/02 15:01ID:???それで先頭の#!/・・・を使わないで起動してるってことは
/cgi-bin/ あたりにeruby 入れてるのね。
ちょっとその環境で試してみるわ。なんかあやしそうだ・・
0477469
03/12/02 19:33ID:???0478nobodyさん
03/12/03 01:48ID:???そういえば、、lib の 1.6だったかを挿してて無理やり1.8をリネームしたのも
>>477 だっけ?
1.6.xのとっ中までcgi.rbがパラメタの=の両端がそろって無いとエラー出す
バグがあったのを思い出したよ。あやしいバイナリ全部作り直せ
0479nobodyさん
03/12/03 13:55ID:???ちなみに僕はそのリネームした人ではないですが、
一応バイナリ make しなおしてみます。
# cvs 最新版で試したりと、もういろいろやってはいるのですが^^;
0480nobodyさん
03/12/04 19:27ID:???0481nobodyさん
03/12/05 19:22ID:???簡単なタイムアウトエラースクリプトを組んだのですが、
require "timeout"
begin
timeout(1) do
loop{}
end
rescue TimeoutError
print "timeout\n"
end
これをシェルから eruby | ruby でやるとちゃんと動作するのに、
CGIで動かそうとするとtimeoutしてくれません。
ちなみにruby1.8.0 eruby-1.0.4です。
よろしくお願いします。
0482nobodyさん
03/12/06 04:31ID:???1行目に
#!/usr/local/bin/ruby18
print の前に
print "content-type: text/plain\r\n\r\n"
を付け加えて481.cgiとして保存して試したら、timeoutって返ってきたよ。
0483nobodyさん
03/12/06 10:09ID:???これでやったけど
#!/usr/local/bin/ruby18
print "content-type: text/plain\r\n\r\n"
require "/usr/local/lib/ruby/1.8/timeout.rb"
begin
timeout(1) do
loop{}
end
rescue TimeoutError
print "timeout\n"
end
駄目ぽ…。タイムアウト反応してくれない…。
0484nobodyさん
03/12/06 15:05ID:???0485nobodyさん
03/12/06 18:31ID:???ん?どういうことですか?
printの出力先をファイルにしても、timeoutが反応してくれないので
無限ループから抜け出せないから見れないんですが…
それとも俺が青二才なのかな…?
0486nobodyさん
03/12/06 20:06ID:???0487nobodyさん
03/12/06 20:52ID:???以下勝手に引用
>一つの ruby のプリミティブで実行してしまうので、スレッド切り替えポイントがないので
>タイムアウトにならない
>Ruby のスレッド切り替えについて、大分誤解してて、SIGALRM が来たら即切り替え、
>だと思っていたら、大抵の場合そうではなく、pending しておいて、切り替えポイントで
> pending が true なら切り替える、みたいなことをしているんだと思う。
関係あるかな?
0488nobodyさん
03/12/07 06:00ID:???CGIとそうじゃないほうで p [RUBY_PLATFORM, RUBY_RELEASE_DATE, RUBY_VERSION]
したら何になるの?
0491nobodyさん
03/12/27 06:11ID:???0492nobodyさん
04/01/06 01:54ID:xw1q3uSMなんでだろう?
0493nobodyさん
04/01/12 02:39ID:???TimeoutErrorやSyntaxErrorだけ察知してくれないのは何が考えられるのでしょう?
0495nobodyさん
04/01/12 11:18ID:???むぅ、読んだけど間違ってない気が…
簡単な例を書くと、
begin
…code
rescue NameError
print "NameError!!"
rescue SyntaxError
print "SyntaxError!!"
end
codeの部分を、
a = 1
print b
とするとちゃんとNameErrorが補足されNameError!!が出力されるのに、
a = 1
print a:
とするとSyntaxErrorの例外処理が適用されず、Ruby側でエラーをキャッチして
強制終了されてしまいます。
ちなみに動かしているのはeRuby1.0.4のデバッグモードなんですが、
それと関係ありますか?
0496nobodyさん
04/01/12 16:58ID:???0498nobodyさん
04/01/18 16:50ID:???0499nobodyさん
04/01/20 20:11ID:???画像として保存し、ブラウザで表示させたいと思っています。
http://psux1.kek.jp/~thitoshi/ruby/
で配布されてたGnuplotクラスを利用して、データをファイルに
保存させ読み込む形式にしたいのですが、
gp = Gnuplot.new
gp.set("term","png color")
gp.set("output","\"graph.png\"")
gp.plot("\"foo.dat\" with lines")
gp.close
ローカルで動かすとちゃんとgraph.pngを生成してくれるのですが、
CGIを通すと動いてくれません。
原因がわかる方いらっしゃいますか?
0501nobodyさん
04/01/20 21:41ID:???あっ、それか!
とりあえずcgi-binディレクトリを777にすると色々うるさく
言われたので、その下に777のtmpディレクトリを作成し、
そこで作業をしたら出来てました!
ありがとうございました(=゚ω゚)ノ
0502nobodyさん
04/02/10 02:03ID:???いいライブラリとかありますか?
0504nobodyさん
04/02/11 21:02ID:???webrickのMLのログも知らなかった。
■ このスレッドは過去ログ倉庫に格納されています