トップページ⇒php
982コメント335KB

【Ruby】RubyでCGI

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/04(金) 12:57ID:c4hRtzGY
Rubyについて語るスレッドです。
関連リンクは>>2-3
0414nobodyさん03/10/12 02:39ID:???
> 左辺に変数が出てきた時点で nil にアサインされるのかな?

yes. try below

ruby -e 'a = [p a]'
ruby -e 'if false then a = 1 end ; p a'
0415nobodyさん03/10/21 08:13ID:SnhWYpxu
hage
0416nobodyさん03/10/24 17:30ID:cS8OCSw0
で、Web Publisher を使った人はいるのかな。
ttp://webpub.narucy.com
>ライバルは PHP!
ですってよ。
0417nobodyさん03/11/02 11:56ID:???
>>416
DBI + Amrita でデータベースの情報を表示する CGI を良く作るので
これはと思って会社で使おうとしたがプレビューができなかった。
0418nobodyさん03/11/03 22:00ID:a8+MLyNB
おれもプレビューできなかった
0419nobodyさん03/11/03 22:36ID:c9cmQMPl
dene
0420nobodyさん03/11/04 05:04ID:???
eclipseの使い方の問題じゃないかな……
ちょっと手間取ったが普通に使えている。
0421hn ◆iKwMOjCT4s 03/11/04 14:07ID:nVQycvvt
Ruby インタプリタの位置を設定してやらないとダメです。
その設定がうまくいってなくてもユーザに通知するとか一切無いので、この辺なんとかしなきゃと思ってます。
0422nobodyさん03/11/12 17:36ID:???
>>421
もしかして作者さんですか?

ぢゃぁ、質問させてください。

あるホームページの管理を任されました。
楽をしようと思って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:???
>>423
cgi.rb の使い方、でいいのかな?
通常、foo['bar'][0] で取得するところが
multipart/ form-data の時は foo['bar'][0].read になるくらい、かな
0425nobodyさん03/11/17 19:40ID:???
あーあとtype=fileの場合、foo['bar'][0].original_filename がつくなあ
何年も前に書いたコードを見てるのでもしかしたら変更があったかもしれん
0426nobodyさん03/11/17 20:03ID:???
>>425
お返事ありがとうございます。
見つけられました!感謝します!
0427nobodyさん03/11/18 11:28ID:???
RubyのCGIでエラーが発生したときに
Internal Server Error じゃなく、ブラウザにエラーコード吐き出すこと
って出来ますか?
apacheのログ見に行くのが面倒臭いもので…
0428nobodyさん03/11/18 11:54ID:???
何かモジュールとかあるのかは知らないが
例外捕まえるのがいいかもね
rescue StandardError
rescue ScriptError
の時にContentヘッダと$!を出力、とか
042942803/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:???
mod_rubyはインストールされているので>>429の方法にしようと思ったのですが
これは右辺を左辺に変更でいいんですよね?

とりあえずコメント部と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:???
この場合拡張子は .rbx に限られるけど、その辺は問題ない?
0433nobodyさん03/11/18 14:00ID:???
>>432
おっと(;・∀・)

…でも
<Files *.cgi>
SetHandler ruby-object
RubyHandler Apache::RubyDebug.instance
</Files>
を追加しましたが駄目でした。゚(゚´Д`゚)゚。
0434nobodyさん03/11/18 17:20ID:???
そりゃcgiの定義が他の場所にもあるんじゃない?

VirtualHostでRubyのデバッグ専用の設定を作るのが
よさそうな気がしてきた・・・
いつもApacheのエラーファイル使ってるが
0435nobodyさん03/11/20 07:10ID:???
結局、cgiクラスとeRubyどっち使うのがいいんですか?
0436nobodyさん03/11/20 09:57ID:???
好きなほうでいいんじゃない
PerlとPHPどっちがいいか?ってのと似てる・・・
0437nobodyさん03/11/20 10:35ID:???
cgi.rbは、本来別にすべきHTML関連の機能が入ってるから話しがややこしくなるな。
cgi.rbのHTML関連の機能を使ってるやつなんているのか?
0438nobodyさん03/11/20 11:11ID:???
居る訳ないだろ。
0439nobodyさん03/11/20 11:30ID:???
eRubyの方が見やすそう
0440nobodyさん03/11/20 14:05ID:???
eRubyはめったに使わないが、
使うときでもパラメタ取得等にcgi.rbも併用してる・・・
0441nobodyさん03/11/20 14:44ID:???
確かにフォームのデータを受け取るにはcgi.rbが必要だね
でもそれ以外…
0442nobodyさん03/11/20 15:02ID:???
正直、フォーム、 Cookie 、Session 等以外の機能は別のファイルに分離して欲しい。
0443初心者03/11/20 17:27ID:???
>>434
遅レスですが、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:???
mod_ruby を--enable-eruby で作ってあればいけると思うが
0445初心者03/11/21 09:45ID:???
>>444
もうすでにインストされてる場合、
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-1.3.27(最初から入ってた) -> ruby1.8.0 -> eruby-1.0.4 -> mod_ruby1.0.7
の順でインストール済みなんですけど…

apacheが古いとか関係ないですよね?
0448nobodyさん03/11/21 14:31ID:???
*.rbx は動くのかな?
Files が使えないってことはあるのかな・・・

AddType application/x-httpd-eruby .rhtml
を追加するというのはどう?
0449初心者03/11/21 15:08ID:???
>>448
実はそれも付け加えてあるんですよね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:???
>>449
ん、、、
mod_ruby の場合、cgi-binの下にerubyを置く必要は無いので、
>Action application/x-httpd-eruby /cgi-bin/eruby
この行も、cgi-bin/eruby もいりません。
ついでに定義もどっちかひとつにした方がいい
0451初心者03/11/21 15:45ID:???
>>450
なるほどメモメモ.._〆(゚▽゚*)

という訳で<Files>〜を全てコメントアウトして、AddTypeのみにしましたけど
まだ駄目です…(´Д⊂
ダウンロードしろという奴をダウンしてきて、エディタで開くとそのまんまだし…
0452nobodyさん03/11/21 16:32ID:???
>>451
おかしいなあ・・・
apacheの再起動はしてる?
restart じゃなくて、stop -> start してみて
0453初心者03/11/21 16:38ID:???
>>452
今までrestartでしてました
stop -> startしても変わりません…

ご迷惑おかけして申し訳ないです
まだ他に何か考えられるとこ無いですかね?
0454初心者03/11/21 16:54ID:???
スイマセン、何故だか自己解決しましたw

とりあえずAddType〜をコメントアウトして、
もう一度<File *.rhtml>でやってみたら何故か出来た…Σ(´Д`lll)
昨日までと同じなのに…

他に変えたとこは
RubyRequire auto-reload
をコメントアウトした位なんだけど、関係あるのかな〜?
0455nobodyさん03/11/21 18:18ID:???
動けばいいってものじゃない
<File>を使うなんて的外れもいいとこ
httpd.confについてよく勉強すれ
0456初心者03/11/21 18:33ID:???
>>455
ふむふむメモメモ..._〆(゚▽゚*)
勉強いたします。
ついでになぜ<Files>がいけないのかご教授頂ければありがたいです
0457nobodyさん03/11/21 19:08ID:???
mod_ruby の元のページでの設定方法には、<Files *.rhtml> の方法しか
書いていないわけだが…
0458nobodyさん03/11/28 06:50ID:???
>>455
>動けばいいってものじゃない

いいえ、動けばいいんですよ。
目的と手段がごっちゃになってはいませんか?
0459nobodyさん03/11/29 18:53ID:???
apache-1.3.27 ruby1.8.0 eruby-1.0.4 mod_ruby1.0.7
で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:???
mod_ruby.so や libruby.so のnリンク先を調べたり、
ldd してみたらどう?どれかが古いままなんだろう
0461nobodyさん03/11/29 19:49ID:???
>>460
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) アリガトウ
0462nobodyさん03/11/29 19:50ID:???
>>461
あぁ1.8を1.6としてリンクさせました。
補足です。
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:???
nil だから。nilチェック入れてデバッグするのがいいかな
ついでに、オレも1.8にして気がついたが、
cgi.params['bar'][0] にしないとアクセスできんかった気がする
0465初心者03/11/30 23:08ID:???
>>464
そのnilチェックはどうやってやるんですか?
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:???
>>467
file関係はまさにセーフレベルでした!
eRubyのデフォルトのセーフレベルっていくつですか?…て
これ位は自分で調べられますねw

ただ、multipart/form-dataの方が全く駄目です。
なんでreadが無いって言われるんですか…?
0469nobodyさん03/12/01 15:11ID:crZKm9cC
eruby で簡単なものを書いて表示させるときちんとブラウザ
に表示されるのですが、アドレスに引数を付けて表示させると
なぜか 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:???
1.8.0になって、cgi.rb周りがけっこうかわってる
引数って例えばどこにどんなのをつけたのか?
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; /usr/sbin/apachectl -v
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. と出てます・・・
047546903/12/01 19:16ID:???
そうですか、うーんなにが悪いんでしょう・・・
それはそうと、わざわざ試していただいてありがとうございました。

# あー、Windows に戻すのはやだなぁ・・・
0476nobodyさん03/12/02 15:01ID:???
あれ、、、mod_ruby は使ってないのね?
それで先頭の#!/・・・を使わないで起動してるってことは
/cgi-bin/ あたりにeruby 入れてるのね。
ちょっとその環境で試してみるわ。なんかあやしそうだ・・
047746903/12/02 19:33ID:???
あ、そうでした。mod_ruby は使っていません。ですが先頭の #! は有るのと無いの両方試しましたがどちらもうまくいきませんでした。
0478nobodyさん03/12/03 01:48ID:???
>>477
そういえば、、lib の 1.6だったかを挿してて無理やり1.8をリネームしたのも
>>477 だっけ?
1.6.xのとっ中までcgi.rbがパラメタの=の両端がそろって無いとエラー出す
バグがあったのを思い出したよ。あやしいバイナリ全部作り直せ
0479nobodyさん03/12/03 13:55ID:???
そのバグは 1.8 では直ってるんですよね?
ちなみに僕はそのリネームした人ではないですが、
一応バイナリ make しなおしてみます。

# cvs 最新版で試したりと、もういろいろやってはいるのですが^^;
0480nobodyさん03/12/04 19:27ID:???
素直に ruby-list に投げるとか。
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:???
>>481
1行目に
#!/usr/local/bin/ruby18
print の前に
print "content-type: text/plain\r\n\r\n"
を付け加えて481.cgiとして保存して試したら、timeoutって返ってきたよ。
0483nobodyさん03/12/06 10:09ID:???
>>482
これでやったけど

#!/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:???
>>484
ん?どういうことですか?

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:???
>>485
CGIとそうじゃないほうで p [RUBY_PLATFORM, RUBY_RELEASE_DATE, RUBY_VERSION]
したら何になるの?
0489nobodyさん03/12/07 10:31ID:???
>>488
両方とも["i686-linux", "2003-08-04", "1.8.0"] でした。
0490nobodyさん03/12/07 14:50ID:???
>>483
うちの環境では timeout したよ。
Apache(とか httpd の類)の log みたほうがいいかと。
0491nobodyさん03/12/27 06:11ID:???
ttp://www.google.co.jp/search?q=%E3%82%8B%E3%81%B3%E3%81%8D%E3%81%A1+OR+rubikitch+site:2ch.net&hl=ja&lr=&ie=UTF-8&oe=UTF-8&c2coff=1&start=20&sa=N
0492nobodyさん04/01/06 01:54ID:xw1q3uSM
cgi.rbでcookieを設定すると、operaで上手く動かない時がある。
なんでだろう?
0493nobodyさん04/01/12 02:39ID:???
例外処理で、NameErrorやZeroDivisionErrorはちゃんと捕らえてくれるのに、
TimeoutErrorやSyntaxErrorだけ察知してくれないのは何が考えられるのでしょう?
0494nobodyさん04/01/12 04:37ID:???
>>493
リファレンスマニュアルの raise の項と、例外クラスのリストを穴があくまで見れ。
0495nobodyさん04/01/12 11:18ID:???
>>494
むぅ、読んだけど間違ってない気が…
簡単な例を書くと、

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:???
SyntaxError は eval 系内で起きる構文エラーをキャッチする目的で使ってくれ。
0497nobodyさん04/01/12 18:27ID:???
>>496
ア、ナ〜ル
理解いたしましたw
0498nobodyさん04/01/18 16:50ID:???
tDiaryってAAA! CAFEで使えますか?
0499nobodyさん04/01/20 20:11ID:???
CGIからデータを入力させて、それをgnuplotでグラフ化して
画像として保存し、ブラウザで表示させたいと思っています。
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を通すと動いてくれません。
原因がわかる方いらっしゃいますか?
0500nobodyさん04/01/20 21:29ID:???
>>499
ディレクトリのパーミッションとかは大丈夫?
0501nobodyさん04/01/20 21:41ID:???
>>500
あっ、それか!
とりあえずcgi-binディレクトリを777にすると色々うるさく
言われたので、その下に777のtmpディレクトリを作成し、
そこで作業をしたら出来てました!
ありがとうございました(=゚ω゚)ノ
0502nobodyさん04/02/10 02:03ID:???
WebrickのServletとして書いたものを、できるだけいじらずにCGIとして動かしたいんですが
いいライブラリとかありますか?
0503nobodyさん04/02/10 09:52ID:???
>>502
ttp://www.notwork.org/ipr/webrick/webrickja/0/93.html
0504nobodyさん04/02/11 21:02ID:???
ありがとう。助かりました。
webrickのMLのログも知らなかった。
0505nobodyさん04/02/21 06:56ID:???
>>121を見て自分の開発中のWikiEngineを窓から投げ捨てようとしているヤシよ
yaml と pstore でググってみよ
0506nobodyさん04/02/21 12:04ID:???
>>505
あ、俺の事だ。
とりあえず解決したよー。
アドバイスさんくす。
0507nobodyさん04/02/24 02:31ID:xNGflriR
もうわけわからん
$ cat ng2.cgi
<%
require 'cgi'
def text; puts "ng2.cgi"; end
class Hoge;def view
text
end;end
%><html>
<BODY>
<%
Hoge.new.view
%>
</BODY></HTML>
$ echo aaa|eruby ng2.cgi
<html>
<BODY>
ng2.cgi

</BODY></HTML>
ちゃんと動くのに
apache,mod-rubyで動かすとエラーになる
[Tue Feb 24 02:27:43 2004] [error] mod_ruby: error in ruby
/tmp/ng2.cgi.17966.0:10:in `view': undefined local variable or method `text' for #<#<Module:0x41744d5c>::Hoge:0x40a41410> (NameError)
from /tmp/ng2.cgi.17966.0:17
from /usr/lib/ruby/1.8/apache/eruby-run.rb:113:in `load'
from /usr/lib/ruby/1.8/apache/eruby-run.rb:113:in `run'
from /usr/lib/ruby/1.8/apache/eruby-run.rb:78:in `handler'
0508nobodyさん04/02/24 02:40ID:???
$ rpm -q ruby eruby mod_ruby apache
ruby-1.8.1-0vl6
eruby-1.0.5-0vl1
mod_ruby-1.0.7-0vl1
apache-1.3.29-0vl1

require 'cgi'を外すとか
RubyRequire cgiをつけるとかすると上手く動くけど
なんで〜?Ruby1.6辺りの環境では問題なかったんだけどなぁ
0509nobodyさん04/02/25 01:34ID:???
rubyをwindows上で動かしたいのですが、apacheの設定で必要な
ものってありますか?
0510nobodyさん04/02/25 01:54ID:???
>>509
Perl/CGI が動いているなら、Ruby/CGI もそのままいける。
0511nobodyさん04/02/25 02:07ID:???
>>510
サンキューです。
0512nobodyさん04/02/25 06:29ID:???
>>507
mod_ruby使ったことないんだけど
textって、mod_ruby下でもほんとにトップレベルにある?
その変な無名モジュールに包まれてるみたいだけど。
0513nobodyさん04/02/25 16:51ID:???
仕様書を読む気力が無いのですが、良かったら教えて下さい。

require 'cgi'
cgi.out({'status' => 'NOT_FOUND'})

てなことをすると、
cgi.rb:561:in `out': no block given (LocalJumpError)

と怒られます。

cgi.out({'status' => 'NOT_FOUND'}){}
は
cgi.rb:578:in `out': undefined method `length' for nil (NameError)
です。

cgi.out({'status' => 'NOT_FOUND'}){''}
ならオッケイなんですが、これで正しいの?
ボディはいつも返さないといけないのかな?
■ このスレッドは過去ログ倉庫に格納されています