【Ruby】RubyでCGI
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/04(金) 12:57ID:c4hRtzGY関連リンクは>>2-3
0368nobodyさん
03/09/20 13:46ID:YAOMW6mt<TMPL_LOOP NAME='list'>
HOGE:<TMPL_VAR NAME='hoge'>
PIYO:<TMPL_VAR NAME='piyo'>
</TMPL_LOOP>
---------------
#!/usr/bin/env ruby
require 'html/template'
template=HTML::Template.new('filename'=>'hoge.html')
#template.param({'hoge'=>'x'})
#list=[{'piyo'=>'a'},{'piyo'=>'b'},{'piyo'=>'c'}]
list=[{'piyo'=>'a','hoge'=>'x'},{'piyo'=>'b','hoge'=>'x'},{'piyo'=>'c','hoge'=>'x'}]
template.param({'list'=>list})
print(template.output)
↑はコメント外して6行目をコメントにするとエラーになります。
---- error ----
(eval):10:in `<<': failed to convert nil into String (TypeError)
from (eval):10:in `initialize'
from (eval):8:in `each'
from (eval):8:in `initialize'
from (eval):1:in `call'
from ./html/template.rb:67:in `output'
from ./hoge.rb:8
---------------
'hoge'は'piyo'と同じ階層で定義しないといけないのですか?
0369nobodyさん
03/09/20 18:41ID:4MmeVqhGファイルオープンして、文字列を書き込むとき、SJISで書き込むにはどうしたらいいでしょうか?
0370nobodyさん
03/09/20 18:45ID:???君はRubyのIOをPerlIOか何かのように考えているのかね。
Shift_JISを書き込みたきゃNKFなりIconvなりで変換して書き込みたまえ。
0371nobodyさん
03/09/20 18:52ID:4MmeVqhG出来ました、どうもです。
0373nobodyさん
03/09/21 20:59ID:???>'hoge'は'piyo'と同じ階層で定義しないといけないのですか?
基本的にはそうです。
内部的には
out << param['piyo']
out << param['hoge']
という処理なので
Hashのデフォルト値を指定するという手もあります。
Hash+Arrayなインターフェースを持った親をたどれるツリーのようなparamを作ってやれば上位階層の
'hoge'を取ってくるとかもできるでしょう。
0374nobodyさん
03/09/25 21:27ID:???0375nobodyさん
03/09/26 09:05ID:???0376nobodyさん
03/09/26 18:16ID:???おれもCGIスクリプト配布するのにな。
0377nobodyさん
03/09/27 16:13ID:???ttp://linux-life.net/program/ruby/doc/chapter08/
を適当に改造して使ってる。
0378nobodyさん
03/09/28 01:23ID:CG0BaKABそうでもないんだよね、これが。
単純にオブジェクト指向が壁になっているんだろうか?
WebProg版のPerlerの人、Ruby勉強してみな。便利だから。
一度使ったらやめられない止まらない。
0380nobodyさん
03/09/28 12:41ID:???まだまだ一般的にサーバーに入ってない場合が多いからねぇ。
これが改善されることがRuby普及の為の近道のような気がするけど。
いくら初心者を取り込もうと思って本とかサイトとか作ったって、
サーバーに入ってないからやらないって人は多いと思う。
みんなで大手プロバイダ、レンタルサーバーにお願いしましょう!
テンプレは次の人が考えたもので↓
0381nobodyさん
03/09/28 21:59ID:???>NAME=○× △
>POST=zzz-zzzz
>ADR=×××県 ×××市 ×××町 ××××
>TEL=0123-45-6789
>BIRTH=19xx-yy-zz
>M_ADR=mail@●◆▼.ne.jp
>CATEGORY=その他
>MESSAGE=
> いつもお世話になります。
>
> 会員のCGIサービスについて要望いたします。
>
> スクリプト言語に Ruby を追加願います。
> Ruby は、日本人が日本で開発したオブジェクト指向スクリプト言語です。
> 記号の羅列のような Perl よりも読みやすく、親しみやすいと言う特徴がありま
>す。
> 最近は、各種解説書などが発行されるなど、盛り上がりを見せています。
> しかし、CGIなどでこの Ruby を活用できる環境は非常に限られています。
> この日本発のすばらしい言語の普及に御社もご協力いただけませんでしょうか。
>
>Ruby のホームページ
>http://www.ruby-lang.org/
>
> なにとぞ、よろしくお願いいたします。
>
>
0382nobodyさん
03/09/28 21:59ID:???平素は「●◆▼」をご愛顧いただき、誠にありがとうございます。
x月y日付のメールでのお問い合わせの件につきまして、ご案内させて
いただきます。
この度は、「ホームページサービス」に関する貴重なご意見を
いただき、誠にありがとうございました。
○×様のご意見は、今後のサービス内容に反映できるよう、検討課題と
させていただきたく存じます。
お気付きの点や至らない点等ございましたら、ご意見ご指摘いただければ
幸いです。
今後とも「●◆▼」をよろしくお願いいたします。
お問い合わせ、ありがとうございました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
株式会社●◆▼ネットワーク
●◆▼ダイヤル 担当:××(super@●◆▼.ne.jp)
サポートホームページ
http://www.●◆▼.ne.jp/support/
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
0383nobodyさん
03/09/28 22:05ID:???382のサポート担当用気のない返事テンプレは使いやすい
0384返事自動処理用erbテンプレート
03/09/28 22:11ID:???平素は「●◆▼」をご愛顧いただき、誠にありがとうございます。
<%=mail.month%>月<%=mail.day%>日付のメールでのお問い合わせの件につきまして、ご案内させて
いただきます。
この度は、「ホームページサービス」に関する貴重なご意見を
いただき、誠にありがとうございました。
<%= mail.name %>のご意見は、今後のサービス内容に反映できるよう、検討課題と
させていただきたく存じます。
お気付きの点や至らない点等ございましたら、ご意見ご指摘いただければ
幸いです。
今後とも「●◆▼」をよろしくお願いいたします。
お問い合わせ、ありがとうございました。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
株式会社●◆▼ネットワーク
●◆▼ダイヤル 担当:<%= mail.tantou.name %>(<%= mail.tantou.email %>)
サポートホームページ
http://www.●◆▼.ne.jp/support/
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
0386nobodyさん
03/09/28 22:54ID:???そこで担当者は気づくの。ruby(・∀・)イイ!
そしてrubyがインストールされる。
384はこんな方向に持っていくためのテンプレート
0387nobodyさん
03/09/29 00:05ID:???使えるようにしてたけど、頻繁なバージョンアップと互換性の無さで
フォローが大変だった。今はもう安定してきてるとは思うが・・・
0388nobodyさん
03/09/29 09:32ID:???肝心の1.8.0はstableとは名ばかりのバグバグバージョン。
こりゃ、Rubyを入れるのを躊躇うのも仕方ないだろうな。
0389nobodyさん
03/09/29 14:44ID:???current = 新機能をいろいろ試してみる枝
なんじゃねーの?
つーか自分でインタプリタが設置できないような鯖で
無理にRuby使わなくてもいいじゃん。
0390nobodyさん
03/09/29 23:55ID:???0392nobodyさん
03/10/01 12:27ID:???0393nobodyさん
03/10/01 23:14ID:???1.6.7あたりが境目かなあ
ライブラリがあるバージョン以上を要求するんだが
むやみに上げるとcgi周りがこけるという状況に・・・
自分用だったらどうにでもなるんだけど
0394nobodyさん
03/10/02 14:39ID:???0395nobodyさん
03/10/02 23:10ID:???0396nobodyさん
03/10/02 23:19ID:???CGIクラスはフォームデータ受け取るくらいしか使ってない
0398nobodyさん
03/10/03 10:24ID:???クッキーの読み書きにも使ってる
0399nobodyさん
03/10/03 12:27ID:???0401nobodyさん
03/10/03 14:14ID:???ML で話題になってた「基礎から学ぶWebデータベースプログラミング」ってどう?
あれだけ誉め殺されてるところをみると、
かなりアヤシイ本なのではないかと推測しているんですが。 (←ひねくれ小僧)
0402nobodyさん
03/10/04 15:06ID:???0403nobodyさん
03/10/04 18:53ID:???明日違う本屋にいくよ。
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が無いって言われるんですか…?
■ このスレッドは過去ログ倉庫に格納されています