【Ruby】RubyでCGI
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/04(金) 12:57ID:c4hRtzGY関連リンクは>>2-3
0348nobodyさん
03/09/10 21:02ID:sTBsqDi+そっちもループをifで囲めないんですか?
0350nobodyさん
03/09/11 17:30ID:???直したから試してみて(20030911 version)
<TMPL_IF NAME="list">
<TMPL_LOOP NAME="list">
HOST: <TMPL_VAR NAME="host">
BOARD: <TMPL_VAR NAME="board">
</TMPL_LOOP>
</TMPL_IF>
こんなのも、ちゃんと動くようになった。
0352nobodyさん
03/09/13 02:53ID:???見事に直ってた。さすが作者。
-------- sample.html --------------
<TMPL_IF NAME="flag">
<TMPL_LOOP NAME="list">
HOST: <TMPL_VAR NAME="host">
BOARD: <TMPL_VAR NAME="board">
</TMPL_LOOP>
</TMPL_IF>
-----------------------------------
------------ sample.rb ------------
#!/usr/bin/ruby
require 'html/template'
list = [
{ 'host' => 'book.2ch.net', 'board' => 'bizplus', },
{ 'host' => 'news5.2ch.net', 'board' => 'newsplus', },
{ 'host' => 'news4.2ch.net', 'board' => 'news', },
]
param = {}
param['flag'] = true
param['list'] = list
template = HTML::Template.new('filename' => 'sample.html')
template.param(param)
print template.output;
-----------------------------------
0353nobodyさん
03/09/13 02:55ID:???HOST: book.2ch.net
BOARD: bizplus
HOST: news5.2ch.net
BOARD: newsplus
HOST: news4.2ch.net
BOARD: news
>>348
ちゃんと作者に感謝しとけよ。
0354nobodyさん
03/09/13 12:06ID:???0356nobodyさん
03/09/15 08:44ID:???ページあたりにオブジェクトを割り当てるってのはまどころっこしいだけ。
(これはWebObject / Struts あたりの方法)
eRubyやPHPのようにページとロジックを直接結びつけるアプローチが
どれだけ正しいのかということがわかる。(MVCは向かないね)
0357nobodyさん
03/09/15 08:47ID:4+LfvYPmamrita のように出力するためだけにあるものならいいけど、
値の受け取り、処理、までやるとなると、複雑さが増すだけ。
むしろ、1処理/1オブジェクトというアプローチをとるべきだ。
ページの抽象化なんて Hash オブジェクトで十分
0358nobodyさん
03/09/15 08:49ID:???0360nobodyさん
03/09/15 10:42ID:???eRubyやPHPではロジックとビューとが分離できないじゃん。
友達いないやつなら一人でロジックとビューをやるしかないけど
そうでないなら分担して作業したほうがいいよ。
0363nobodyさん
03/09/18 01:57ID:???0364nobodyさん
03/09/18 11:16ID:???みたけど、専用のフレームワークじゃん。それはずるいだろ。
そんなの持ち出していいんなら、なんだってロジックとビューの分離は可能だよ。
逆にいえば、そういうのを持ち出さないと分離できないってことじゃないか?
#まあPHPでは include() 使えば分離できるんだけどね。
つーか、もとの発言
>>356
では、
> eRubyやPHPのようにページとロジックを直接結びつけるアプローチが
> どれだけ正しいのかということがわかる。(MVCは向かないね)
なんてことをいってたので、それは違うだろ!というツッコミで
「ロジックとビューの分離」をあげてみた。
文章が悪かったかもしれんが、分離ができる/できないという話よりも、
分離をすべきか否かという話をしたい。
おれは分離したい。そのための手段として、CGIKitはいいと思う。
0365nobodyさん
03/09/19 20:30ID:Z56dowS1<TMPL_LOOP NAME='list1'>
<TMPL_VAR NAME='hoge'>
<TMPL_VAR NAME='foo'>
</TMPL_LOOP>
<TMPL_LOOP NAME='list2'>
<TMPL_VAR NAME='hoge'>
<TMPL_VAR NAME='bar'>
</TMPL_LOOP>
ってなった場合、
list1=[{'hoge'=>a,'foo'=>b1},{'hoge'=>a,'foo'=>b2},...]
list2=[{'hoge'=>a,'bar'=>c1},{'hoge'=>a,'bar'=>c2},...]
template.param({'list1'=>list1,'list2'=>list2})
みたいに配列の全要素にhogeを定義しないといけないんですか?
0366nobodyさん
03/09/20 02:02ID:???> 分離をすべきか否かという話をしたい。
どれを選ぶかは目的、規模、開発形態によるんじゃねーの?
(0) コードにHTMLを埋め込む
(1) HTMLを抽象化する(CGI::Html*)
(2) HTMLにコードを埋め込む(eruby)
(3) 別々に書く(amrita)
(4) 複数のセッションに対応する(div)
(3)はすごく良さげに見えるが、ID属性を利用するツールを
使ってるデザイナさんとファイルをやりとりする場合は
そのツールの挙動をよく知る必要がある。
PHP慣れしたデザイナさんと組む場合は(2)だと話がはやい。
(1)は画面内を部品化する場合に割と良いことがある。
別の例だと、Javascriptでサイズ変更不能な窓にする場合、
後からサイズの仕様が変わるのに備えるならprettyprintを
使って(0)でレイアウトを組むとか。
0367nobodyさん
03/09/20 09:45ID:???param["hoge"]が未定義だとnilが返ってくるから
IFで判定できるよ。
<TMPL_IF NAME='hoge'>
<TMPL_VAR NAME='hoge'>
<TMPL_ELSE>
hogeなし
</TMPL_IF>
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
を追加するというのはどう?
■ このスレッドは過去ログ倉庫に格納されています