【Ruby】RubyでCGI

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
Rubyについて語るスレッドです。
関連リンクは>>2-3
2名無しさん@お腹いっぱい。:2001/05/04(金) 12:57 ID:c4hRtzGY
【関連ホームページ】
Ruby Home Page http://www.ruby-lang.org/ja/ (公式ホームページ)
Ruby Ring http://kahori.com/ruby/ring/ (WebRing。ここをたどればいろいろあるはず)
3名無しさん@お腹いっぱい。:2001/05/04(金) 12:58 ID:c4hRtzGY
4白痴な疑問でスマソ:2001/05/04(金) 16:10 ID:fcczG5h.
Rubyが動くサーバーの条件ってなんですか?
rubyが使える無料サーバーってありますか?
5名無しさん@お腹いっぱい。:2001/05/04(金) 17:23 ID:c4hRtzGY
無料鯖でruby使えるところがあるかどうかは知らないが
有料鯖・ISPに関しては、ここを参照。

Rubyが使えるISPリスト http://www.jin.gr.jp/%7Enahi/Ruby/anywhere.html
6名無しさん@お腹いっぱい。:2001/05/04(金) 17:26 ID:???
無料かつruby使えるが「クリエイタ限定」らしい。
http://www.users.yun.co.jp/
7:2001/05/05(土) 02:36 ID:???
>>5-6
有難うございました。試しに無料鯖で色々するってワケにはいかない
んですね(perlやPHPと両方使える有料鯖を借りるしかないかー)

ところでRubyのウリってなんでしょう?
というかオブジェクト指向ってどういう意味なんでしょう・・・
8名無しさん@お腹いっぱい。:2001/05/05(土) 03:28 ID:???
Windows に冷たいので逝ってよし!
9名無しさん@お腹いっぱい。:2001/05/05(土) 10:59 ID:???
有料鯖で、Perl Ruby C言語 PHP が使えるかどうかの一覧。
http://fantasien.cup.com/link/feature_rentalserver.html

(e-SITE、サービス終了しちゃったね…残念)
10名無しさん@お腹いっぱい。:2001/05/06(日) 10:36 ID:???
プログラム技術板のRubyスレッド。

オブジェクト指向スクリプト言語Ruby part2
http://piza.2ch.net/test/read.cgi?bbs=tech&key=987231068
11名無しさん@お腹いっぱい。:2001/05/06(日) 19:08 ID:???
>>7
有料鯖でも色々(実験とか)したらダメだろ。
12名無しさん@お腹いっぱい。:2001/05/10(木) 01:37 ID:???
Ruby の CGI があまり無いのはなぜだろうか。
1. Ruby 自体普及してない。
2. Ruby 使いは CGI に興味が無い人が多い(?)。
3. いろんな意味で Perl の方が向いている。
4. 作者に悪いが cgi.rb があまり嬉しくない。

すぐに沈むのでage....
13名無しさん@お腹いっぱい。:2001/05/10(木) 02:53 ID:7PDMmFLY
4.って好みの話?
それとも根本的に何かまずい所でもある?
cgi.rbを使ったCGIを作って使っているので、
そこんところとても興味あります。
14名無しさん@お腹いっぱい。:2001/05/10(木) 09:18 ID:???
Ruby はウェブプログラミング向きではない。
15名無しさん@お腹いっぱい。:2001/05/10(木) 10:08 ID:???
>>13
cgi.rb には私もお世話になってます。とても有難いです。
ただ、Perl で CGI を書いてる人をやる気にさせる程の
ものじゃないかなってこと。他のライブラリもそうなんだけど
日本人がターゲットなのに(勘違い?)日本語の説明が無いのも
よくないと思います。

あと不満じゃないけど、タグの出力機能は必要無いでしょう。
Ruby 使いで初めて CGI を書く人、暇な人、固い人
以外は使わないような気がする。
16名無しさん@お腹いっぱい。:2001/05/10(木) 10:15 ID:???
>>14
>Ruby はウェブプログラミング向きではない。
というよりも、ウェブプログラミング入門に向いてない、の方が正しくないかな。
17名無しさん@お腹いっぱい。:2001/05/10(木) 11:16 ID:???
>>15
私はタグ出力機能、重宝してます。
文法レベルでタグの閉じ忘れがチェックされるのと、
HTMLの規格に準拠したタグが強制されるのが有難い。

あと日本語の解説は
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
から
添付ライブラリ→CGI
で見られます。
すげー大雑把な解説ではありますが。

ターゲットはむしろ日本人限定じゃないと思います。
日本人が作者なんで日本語の取り回しに長けてる面はありますが。
最近は北米でのユーザーもがんがん増えてるようです。
18名無しさん@お腹いっぱい。:2001/05/10(木) 13:16 ID:???
スクリプトの中にヒアドキュメント書きまくりは気持ち悪いし、
タグ出力機能はソースの見通しが悪くなる。
ということでおれはeRuby使ってるよ。
19名無しさん@お腹いっぱい。:2001/05/10(木) 22:23 ID:7PDMmFLY
*.cgi一つでHTMLも書けるというのと、
ヒアドキュメントが嫌いってのがあって、
cgi.rbは重宝しました。
とはいえ、最近になってERbを使い始めている(^^;)。
20名無しさん@お腹いっぱい。:2001/05/12(土) 00:01 ID:hPIXpPE6
eRubyで書いたドキュメントをCGIとして呼び出して
使っている。だからcgi.rbも使うなぁ。
21名無しさん:2001/06/21(木) 04:52 ID:fZd90uYU
cgi.rbに、改行コードがLFだけのマルチパートなデータをPOSTすると、
read_multipartの中で無限ループするんだけど……。

しかも、NT4.0だとタスクマネージャからRubyを終了出来なかったよ。
Win2000だと終了出来たけど。

Apacheの設定か何かで、無限ループを阻止出来る方法無いの?
一定時間経ったら、自動的にプロセスを殺すとか。
22名無しさん:2001/06/21(木) 04:59 ID:fZd90uYU
あと、cgi.rbの中で呼んでるtempfile.rbって、なんかUNIX依存っぽくないか?
Win32なApacheじゃ、素で動かなかったぞ。
23名無しさん:2001/06/21(木) 11:18 ID:???
cgi.rb のマルチパートはバージョン上がるたびにトラぶってる。
(UNIX版もね)
うまくいかなかったらバージョン戻してみるのもいいかも
24名無しさん:2001/06/22(金) 02:11 ID:E9i/qXeg
>cgi.rb
multipartの各パートをそれぞれ全部一時ファイルに書き出す仕様もなんだかなぁ。
中見てみたけど、eval多用してたりして、厨房な漏れには訳分からん。効率の為なのか?
もっとシンプルに書けるんじゃないの? いや、漏れは書けないけど。

Web検索してみたら、このライブラリに不満持ってる人は少なくないみたいだし、
CGI本出しちゃったし、Perl代替を狙うならCGIは欠かせない訳だし、
誰か他の人が書き直してくれないかなぁ、3つ目(?)のCGIライブラリを。
25名無しさん@お腹いっぱい。:2001/07/03(火) 23:17 ID:hGnmL6gM
cgi以外にRuby使ってる人って
どんな用途で使ってんの?
26名無しさん@お腹いっぱい。:2001/07/03(火) 23:27 ID:Z6/vpDDM
っつうかRubyでCGIを組むメリットってあんの?
27名無しさん@お腹いっぱい。:2001/07/04(水) 10:49 ID:???
>>25
CGIにRubyを使ってるほうが少数派でしょ。RAAを見ても明らか。
28名無しさん@お腹いっぱい。:2001/07/05(木) 12:53 ID:EtKdHoqM
RAAって何?
29名無しさん@お腹いっぱい。:2001/07/05(木) 23:43 ID:???
>>28
Ruby Application Archive
http://www.ruby-lang.org/ja/raa.html
30名無しさん@お腹いっぱい。:2001/07/06(金) 00:55 ID:???
それって、CPANとかPEARのRuby版って思って良い?
31名無しさん@お腹いっぱい。:2001/07/06(金) 02:35 ID:P7VWVoDE
有難う>>28
32名無しさん@お腹いっぱい。:2001/07/09(月) 00:36 ID:XKA0nNxs
タダでRubyCGIが動くレンタルサーバあるかね。
33名無しさん@お腹いっぱい。:2001/07/12(木) 23:12 ID:.ANFtm8I
multipart使うと
cgi = CGI.new したとして
cgi['hoge'] じゃなくて
cgi['hoge'][0].read しないと値を得られない。

multipart じゃない form からデータがくると
read なんつうメソッドはないってエラーが出てしまう。
なんで同じにしなかったんだろう?
34名無しさん@お腹いっぱい。:2001/07/14(土) 16:34 ID:gnTS0OVs
この情報ならここに沢山あるよ
変なURLに見えるけど内容は確か。
ttp://members.tripod.co.jp/casinoA1/
35名無しさん@お腹いっぱい。:2001/07/14(土) 18:43 ID:???
>>34
氏ね。
36名無しさん@お腹いっぱい。:2001/07/25(水) 18:21 ID:???
トップページからリンクされなくなってしまったので、とりあえず覚え書き。
http://www.ruby-lang.org/ja/compar.html
37tempfile.rb:2001/07/29(日) 23:25 ID:jUN2xdtU
>>22
>あと、cgi.rbの中で呼んでるtempfile.rbって、なんかUNIX依存っぽくないか?
>Win32なApacheじゃ、素で動かなかったぞ。
僕もそんな気がしました。結局、
tempfile.rb[line31]
> def initialize(basename, tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp')
を次のようにいじったところ動くようになりました(?)。
→ def initialize(basename, tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'c:/tmp')

かっこ悪い修正ですが、悩んでいる人がいたら助けになるかも。
38名無しさん@お腹いっぱい。:2001/07/30(月) 19:55 ID:???
そんなことしなくても Ruby がインストールしてある
ドライブの / (C:\とか) に tmp ディレクトリ作れば動いたよ。
3937:2001/07/30(月) 23:40 ID:nDJaYIZI
>>38
ほんとはそれでいいらしいんですよね。
こちらの環境ではなぜかうまく動作せず、
(Win2000+Appatch、アドミニストレータで動作)
思考錯誤の結果ああいうかたちになりました。
今度もう一度確かめてみます.
40名無しさん@お腹いっぱい。:01/09/25 01:51 ID:jG.IKxsA
その情報ならここに沢山あるよ
変なURLに見えるけど内容は確か。
http://www.ruby-lang.org/ja/compar.html
41るびちゅう:01/09/25 23:30 ID:???
Rubyを使える無料鯖はXREAがあるので、その記念age
42名無しさん@お腹いっぱい。:01/09/26 19:44 ID:???
こんなん作ってみました
http://nmgm.s2.xrea.com/2ch.htm
43名無しさん@お腹いっぱい。:01/09/26 20:19 ID:???
>>42
これRubyで作ったの?
44名無しさん@お腹いっぱい。:01/09/26 21:30 ID:Y.kwk7Ok
>>42
ちょっと便利かも
とりあえずブクマークしとくわ
45名無しさん@お腹いっぱい。:01/09/27 08:33 ID:???
PHP>>Perl>Ruby
一流CGIプログラマーの間ではこれが定説なんだってね。
俺も最初聞いた時はそんな馬鹿な!?って驚きを
隠せなかったよ。でも良く調べてみたら確かにその通りだなって納得したよ。
46名無しさん@お腹いっぱい。:01/10/07 23:58 ID:???
なぜか200近いのであげ
47名無しさん@お腹いっぱい。:01/10/08 14:28 ID:???
RubyなんかでCGI組んでる奴は糞

======終了======
48名無しさん@お腹いっぱい。:01/10/11 02:45 ID:???
一流じゃなくてもやりたきゃやれば良いじゃん
OOの勉強には良いと思うよ
ただ実用面だとPerlにはかなわん、こっちはこれでもかって位モジュールが有るからねー
49名無しさん@お腹いっぱい。:01/10/11 10:19 ID:???
>PHP>>Perl>Ruby

こんな順位つけてるヤツは所詮2流です。

適材適所が1流の仕事です。
50名無しさん@お腹いっぱい。:01/12/05 09:58 ID:xi2isyGi
age
51名無しさん@お腹いっぱい。:01/12/05 18:45 ID:acrdgRBF
Rubyに適したCGIってのもあまり思い浮かばないけどね。
52名無しさん@お腹いっぱい。:02/01/10 14:32 ID:pG5s4nbd
eRubyをローカル鯖でテストしたいんだが、
次のようなエラーメッセージが出るだけだ。

ERROR
ruby: No such file or directory - "" (Errno::ENOENT)

内容はこれ
<% print "Content-type: text/html\n\n"
print "Hello, ruby!\n"
puts "hoge?"
puts "hoge?" %>

AN httpdを使ってるんだが
どうすればいいんだ?
5352:02/01/10 15:29 ID:SCRJRkGL
質問したけど、
APACHEをインストールして
やってみたら解決したYO!!

やはり鯖はAPACHEですな。
54名無しさん@お腹いっぱい。:02/01/12 09:20 ID:3v4I3+Ai
eRuby向きのCGIフレームワークみたいなのないでしょうか。

CGI::Sessionをちゃんとupdateしてくれるとか(これはまった)、
例外拾ってくれてあの派手なエラー画面(+ソース丸見え)
が出ないようになってるとか、ページ間の状態遷移を楽に
記述できるとか。

自分で書いててよくわかんないけど、
皆さんどうしてますか。
55名無しさん@お腹いっぱい。:02/01/17 01:37 ID:eUnOdGnG
>>52
さん!一人で解決しないで!APACHEインストールしたけど動かないよ!
たぶん設定だと思うんだけど・・・Perlは設定にすごく詳しいページ
http://www2j.biglobe.ne.jp/~apollo/server/server.html
があるのにRubyにそういうページが不足してると思う・・・
何で動かないんじゃー。Meにアパッチバイナリインストールが無謀だったのか。
56名無しさん@お腹いっぱい。:02/01/17 13:12 ID:???
TEST
57名無しさん@お腹いっぱい。:02/01/18 02:13 ID:ElgNfh5R
gzipのストリーム展開ってどうやるんでしょうか?
zlibインストールしてみたけどまだ良く解らなくて・・・
くだらん質問でスイマセン。
58名無しさん@お腹いっぱい。:02/01/23 10:39 ID:???
消防の感想

Rubyに興味があるけど、実際に作りたいプログラムが思い浮かばない。
本に書いてあるスクリプトを丸写ししていても、勉強にならないし。

で、ちょっとでも自分にとって需要があるものと言うと、CGIなんだけど
如何せん、参考に出来るソースが少ない。

ソースが少ないと、CGIの種類が少ないってことだし、
絶対量が少ないと、結果として話題性に乏しくなる。

そうすると、情報量が少なくなる。=> Poorな製作者は作りづらい
作りづらいとCGIが増えないし、公開されるソースも減る。

この循環があるかと、思うのですが。
59名無しさん@お腹いっぱい。:02/01/24 22:05 ID:C7eIKAZ/
eRuby/erbを使ってる人いる?
初めて使ってみたけどなかなかよかった
60名無しさん@お腹いっぱい。:02/01/25 00:33 ID:???
>>59
JSPとかColdFusionもそうだけど、あの手のHTMLに埋め込む
タイプのやつ苦手だ。プログラムの可読性下がる。
Rubyの良さ半減て感じ。
61名無しさん@お腹いっぱい。:02/01/25 00:50 ID:???
>>60
禿げしく同意。短いコードならいいんだがな。
62名無しさん@お腹いっぱい。:02/01/25 01:01 ID:???
CGI書くときは、内部処理とHTML出力を完璧に分離させて書くけどなあ
63名無しさん@お腹いっぱい。:02/01/25 04:33 ID:pTuOifZD
RubyでCGIかいてる人いる?
64名無しさん@お腹いっぱい。:02/01/25 06:15 ID:???
マルチレスすまそsage。

>>58
そういう話になるともう数の問題になってしまうので、
誰かがばりばりCGIを書いて増やすしかない、ってことに
なってしまいそう。地道でよいので徐々に頑張っていく方向で。

>>59
ERbつかってます。良いですね。

>>60
埋め込む量とか程度の問題、と僕は考えてます。
他にはWARLUSとかは違う手法ですね。
ruby-listにでも紹介されてましたが、以下の2ch風(?)BBSで
使われています。

匿名掲示板(仮)
ttp://210.155.146.159/bbs/

>>63
ヘタレなCGIであれば書いてますが、何か?
65名無しさん@お腹いっぱい。:02/01/26 03:25 ID:???
確かにerubyだけで全部済まそうとすると読めたもんじゃないと思うけど、
データ処理のロジックの部分は普通のスクリプトで書いて表示部分だけerubyで書くと、
処理と出力の分離もできて一石二鳥だと思う。
66名無しさん@お腹いっぱい。:02/01/26 03:50 ID:YLXIwbR+
WALRUSってなんかすごそう
67名無しさん@お腹いっぱい。:02/01/26 16:00 ID:???
内緒だけどちゃんと仕事でrubyのCGI作ってるよ。

たしかに重いんだけど、mod_rubyを使えば我慢できないこともない。
なんでrubyを使ったかというと、たんに新しいものが使いたかったって
だけだけど。
68名無しさん@お腹いっぱい。:02/02/02 10:04 ID:???
>>65
それって、内部処理を埋め込みスクリプトからrequireしちゃうってこと?
69名無しさん@お腹いっぱい。:02/02/02 11:01 ID:5I8PZ1VP
>>59
使ってるよ。>>68 のいうとおり、erubyスクリプトでは require した後は
ほとんど結果を繰り返し出力するくらいの小さいことしかしてない。

ただうまくいかないのは、結局 rhtml も html なので、
例えば何枚かhtml素片があって好きな部分を表示するには
ロジックを入れて選択するしかないんだよね。
つうわけで、rhtmlがcase when... だらけになったりしてしまい、
あまり美しくならない。結局動的に html 生成するなら、eruby に1発任せるんじゃなくて、
むしろ rhtml は唯のテンプレートと開き直り、
ERb 等で生成ロジックまで自分でコントロールするのが
正しいのかも。
例外拾うのも必須だけど(でないとエラーの時にソースコード丸見え…)
rhtmlにいちいち begin rescue end とか入れたくないよね?

みんなどうしてる?
70名無しさん@お腹いっぱい。:02/02/04 16:47 ID:C5lTY9nr
Rubyで作ろう!スレッド式掲示板 だって。
http://210.155.146.159/bbs/s194/
71名無しさん@お腹いっぱい。:02/02/06 08:52 ID:???
>>70
そこ見てコソーリ勉強中
72名無しさん@お腹いっぱい。:02/02/12 10:15 ID:iISjt4Rm
>>70
更新されてたよ。でも、いつになったら出来ることやら(藁
http://210.155.146.159/news.html
73nobodyさん:02/03/21 07:38 ID:+PRed0xw
上げてみよう
74nobodyさん:02/04/03 13:31 ID:E16D60Iv
ちょっと教えて欲しいんだけど、
Apacheでerbを使う時はhttpd.confに
どう設定すればいんでしょうか?

eRubyはこれで動くんですが・・・。

AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
75nobodyさん:02/04/03 17:58 ID:ToPFq2v0
age
76あぼーん:あぼーん
あぼーん
77nobodyさん:02/04/06 01:04 ID:???
>>74
ERbLightしか使ったことないけど、単にrequireするだけ。

irb(main):001:0> require "erb/erbl"
true
irb(main):002:0> p ERbLight.new("<%= 1 + 2 %>").result(binding)
"3"
nil

ってこういう意味じゃなかったらスマソ。
それとも、erbのほかのクラスとかはまた違うのかな。
7874:02/04/14 13:55 ID:???
>>77
erbをApacheで使う時もrequireするだけでよかったんですか。
解りました、どうも。
79nobodyさん:02/04/15 10:05 ID:9IRZyByH
No such file to load -- erb/erbl (LoadError)

リモートからサーバ上のCGIを動かそうとしたら
こんなエラーが出たんだけど、なにかhttpd.confに設定を
加えなきゃならないんでしょうか?
80nobodyさん:02/04/15 22:59 ID:???
何よるびーってマヅで需要ねえな。
81nobodyさん:02/04/15 23:56 ID:???
$: を確認してみましょう
82nobodyさん:02/04/26 03:58 ID:XnUMsLyB
require "socket"
host "hoge.com"
sock = TCPSocket.open(host,80)
sock.print "GET / HTTP/1.0\r\n\r\n"
while line = sock.gets
if....

ここで"http://aaa.com/"など
HTMLソースの中にアドレスが入ってたりしたら
引っ張ってきたいです。
if文の書き方教えてください。
83nobodyさん:02/04/29 23:23 ID:???
この辺で質問するといいかも。

Rubyについて
http://pc.2ch.net/test/read.cgi/tech/1012096319/
rubyを語るスレッド
http://pc.2ch.net/test/read.cgi/unix/1018967064/
84nobodyさん:02/05/04 13:13 ID:uTJWVRnZ
CGIでは汚染レベルをいくつで作ってますか?
私は1です。
85nobodyさん:02/05/13 02:54 ID:rVFo8O8l
>>84
俺もCGIモジュールのデフォルト(だっけか)1。
86nobodyさん:02/05/21 11:54 ID:KgEr4A1p
RubyでのCGI本がまた出ますね。
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06472-7
87narucy56 ◆wMOjCT4s :02/06/01 14:21 ID:2HMrwkAK
最強の Web プラットフォーム発見

WEBrick
http://www.notwork.org/ipr/webrick/

Java でいうところの Tomcat みたいなもんで、Ruby で実装された Web Server。
100% Pure Ruby で、カスタマイズも Ruby スクリプトを書くだけで簡単にできる。
XML で設定だのはしなくてもいい。

複雑なシステムを作るときは、Apache だけじゃだめだね。
ちゃんとしたコンテナが作られていないと。柔軟性が確保できない。
88nobodyさん:02/06/02 13:25 ID:???
>>86
だれかレビューきぼんぬ
89nobodyさん:02/06/06 15:45 ID:pZjuhwXZ
↓これはいったい、どういう機能を持っていて、どうやって使うんですか?

http://www.jin.gr.jp/~nahi/RWiki/?cmd=view;name=Tofu

90nobodyさん:02/06/08 07:13 ID:MAfvlHoz
>>87
RubyでWebアプリケーションは作りたいけど、
HTML作ってくれるだけでよくて、
Web serverまではして欲しくないんですが。
こういう使い方もできるのか?
91nobodyさん:02/06/08 07:55 ID:???
>>90
eRuby だけじゃだめ?
Web アプリのフレームワークがほしいのかな?
92narucy56 ◆wMOjCT4s :02/06/10 17:53 ID:jfQB0Rff
>>89

http://www.jin.gr.jp/~nahi/RWiki/index.cgi?cmd=view;name=Div

これぞ、究極の MVC を実現するものじゃないかと思った。
とにかく使ってみそ。
93nobodyさん:02/06/16 08:59 ID:sIr0rq50
>>91
そう、フレームワークがほしいんです。
eRubyだけでちゃんとしたWebアプリケーション書くのはつらいよね。
HTMLとコード(ロジック)が混じっちゃう。
Warlusは開発体制大丈夫なのかなーと不安だし。

Div、読んでみたけど結構面白そう。やってみます。
でもWEBrick必須なんだよね。
94nobodyさん:02/06/17 04:11 ID:???
>>92
禿同。箱入り娘は驚愕。なんでこんな発想が出来るのか。
これを見たあとだと、他のアプ鯖なんてオブジェクト指向でもなんでもない
単なるサブルーチン集に見えるね。
95nobodyさん:02/07/06 01:29 ID:???
ERb使ってたらハマりまくったんだけど、
なんで以下の構文がエラーになるんだ?

<%
foo = "bar"
"#{foo}"
%>

undefined local variable or method `foo' for #<Object:0x4027bce0>
96nobodyさん:02/07/06 17:19 ID:???
>>95
% irb
irb(main):001:0> require 'erb/erb'
true
irb(main):002:0> erb = ERb.new('<% foo="bar"; #{foo} %>')
#<ERb:0x80d7c18 @src=" foo=\"bar\"; #{foo} \n", @safe_level=nil>
irb(main):003:0> erb.run
"bar"

% cat erb.html
<%
foo = "bar"
"#{foo}"
%>
% ruby /usr/local/lib/ruby/site_ruby/1.6/erb/erb.rb erb.html

%

通りますが、何か? 他のところに問題があるとか。
9795:02/07/06 22:08 ID:4tjyHIal
>>96
わざわざ試してくれてありがとう。

同じようにテストしたら問題なかったけどこれだとエラーになる。
ruby -r 'erb/erb' -e 'p ERb.new(%(<% foo="bar"; "#{foo}" %>))'

こっちだと動く
ruby -r 'erb/erb' -e 'p ERb.new(%(<% foo="bar"; "#{Time.now}" %>))'

なんじゃこりゃもう。。。

一応環境を書いときます
% ruby -r 'erb/erb' -e 'p ERb.version'
"erb.rb [1.4.3 2002/03/28]"

% ruby -v
ruby 1.6.7 (2002-03-19) [i386-linux]
9895:02/07/06 22:39 ID:???
>>97
念の為にうちの環境も晒します。

9995:02/07/06 22:40 ID:???
>>98
うっかり書き込むボタンを押してしまいました。ゴメソ。

% ruby -rerb/erb -e "p ERb.version"
"erb.rb [1.4.3 2002/03/28]"
% ruby -v
ruby 1.6.7 (2002-05-23) [i386-freebsd4]

OSはFreeBSD、rubyはportsからインストールしているので、
パッチが当たっていて日付が新しくなってます。
100nobodyさん:02/07/07 00:36 ID:xCJ1zwrA
              ζ
          ,,.-‐''""""'''ー-.、
        ,ィ"          \    やったオレ様が100ゲットだ!
         /              `、 ボケ共がオレ様にひれ伏せ!!
        ,illlllllllllll           i
      r'-=ニ;'_ー-、___,,.ィ‐‐-,,_  _| >>101遅いんだよ、チンカス
       | r,i   ~`'ー-l;l : : : `l-r'"メ、  >>102アホすぎる、言葉もない。
      ヾ、       `ー‐'": i!_,l_ノ` >>103人間辞めろ。
       |         ,:(,..、 ;:|/  >>104なにやってんだよ、この包茎ちんちん
       |        ,,,..lllllll,/   >>105あらら、ご愁傷さま。死ね
       /  `::;;.   '"`ニ二ソ  >>106うっさいハゲ。
     /7    ゙゙:`-、;:;:;;;:;:;:;;/       >>107ビルから飛び降りて死ね。
   ,,.ィ"`:、        "/;:`ー-:、.._   >>108ネットワークすんなゴミが!。
 ‐'":;:;:;:;:;:;:;:\   . : :;: .  ;/;:;:;:;:;:;:;:;:;:~`'''ー--:、,,_ >>109お前はクビを吊れ
101nobodyさん:02/07/07 10:32 ID:???
ふーん。。。
>>97
bindingの問題かな。
>>97
だまされるとこだった(w
> ruby -r 'erb/erb' -e 'p ERb.new(%(<% foo="bar"; "#{foo}" %>))'

%(<% foo="bar"; "#{foo}" %>)を評価するときに#{foo}が展開されるからそりゃ当然エラーになるわな。

ruby -rerb/erb -e 'foo="hoge";p ERb.new(%(<% foo="bar"; "#{foo}" %>))'
を試してみりゃ意味が分かるだろ。

結論としちゃ#をエスケープか、%qにしる。
ruby -rerb/erb -e 'foo="hoge";p ERb.new(%(<% foo="bar"; "\#{foo}" %>))'
ruby -rerb/erb -e 'foo="hoge";p ERb.new(%q(<% foo="bar"; "#{foo}" %>))'
10497:02/07/17 23:43 ID:???
ガ━━(゚Д゚;)━━ソ!
外側からいきなり展開されていたとはね。
いや、参りました(w
105名無しさん:02/07/31 04:40 ID:???
最近どう?
106nobodyさん:02/07/31 10:54 ID:p4UQxNW6
ソースは

#!/usr/bin/env ruby
keyword_file = ARGV.shift
suffix_file = ARGV.shift
# 正規表現生成
re = /日本語のページから(.*)を検索しました。/
re2 = /(\d+)件中(\d+) - (\d+)件目/
re3 = /検索にかかった時間(\d\.\d\d)秒/
File.foreach(keyword_file) do |kw|
 File.foreach(suffix_file) do |sf|
  w3m = IO.popen("w3m -dump 'http://www.google.com/search?ie=euc-jp&oe=euc-jp&hl=ja&meta=lr=lang_ja&num=10&q=#{kw}+#{sf}'","r")
  pat=/件中/
  w3m.each_line do |line|
   if pat =~ line
    re.match(line)
    key = $1
    re2.match(line)
    cnt,from,to = $1,$2,$3
    re3.match(line)
    second = $1
    printf("%16s %10s  => %5d件 %10s 秒 \n",kw.chop,sf.chop,cnt,second)
   end
  end
  w3m.close
 end
end
107106:02/07/31 11:52 ID:p4UQxNW6
>>106において
w3mでパイプしている奴を
Net::HTTPで高速化させたいですが、正規表現で
引っかかります。
require 'net/http'
host = 'www.google.co.jp'
path = '/search?num=10&lr=lang_ja&q=hoge'
http = Net::HTTP.new(host)
page=http.get(path)[1].delete("\n")
print page.scan(%r|ffffff><b>日本語.*秒</font>|i)[0].gsub(%r|<.*?>|,'')
scanの部分を間違っていますか?

なお、ほしい部分の周辺は
以下のようなHTMLです。

<b>日本語</b>のページから<b>hoge</b>を検索しました。  </font></td>
<td bgcolor=#3366cc align=right nowrap>
<font size=-1 color=#ffffff>約<b>37,500</b>件中<b>1</b> - <b>10</b>件目 ・検索にかかった時間<b>0.54</b>秒</font></td></tr></table>



108106:02/07/31 11:55 ID:p4UQxNW6
途切れてました。

------------------------------
<table width=100% border=0 cellpa dding=1 cellspacing=0 bgcolor=#3366cc><tr><td bgcolor=#3366cc nowrap><font size=-1 color=#ffffff>
<b>日本語</b>のページから<b>hoge</b>を検索しました。  </font></td>
<td bgcolor=#3366cc align=right nowrap>
<font size=-1 color=#ffffff>約<b>37,500</b>件中<b>1</b> - <b>10</b>件目 ・検索にかかった時間<b>0.54</b>秒</font></td></tr></table>

---------------------------
#!/usr/bin/env ruby
require 'net/http'

host = 'www.google.co.jp'
path = '/search?num=10&lr=lang_ja&q=hoge'

http = Net::HTTP.new(host)
page=http.get(path)[1].delete("\n")

print page.scan(%r|ffffff><b>日本語.*秒</font>|i)[0].gsub(%r|<.*?>|,'')
109名無しさん:02/08/01 02:18 ID:???
うちはそのコードでうまくいくよ?

----
$ ruby 106.rb

ffffff>日本語のページからhogeを検索しました。  約34,800件中1 - 10件目 ・検索にかかった時間0.07秒

----
後は切ったり張ったりすればいいんじゃないかなあ。
あ、もしかして日本語コードがおかしいってことない?$KCODE を設定すれ。
110nobodyさん:02/08/02 15:12 ID:???
>>109
正規表現リテラルを使ってるから、#!/usr/bin/env ruby -Keとするか、eオプ
ションをつけてやるかしないといけないと思われ。
111管王里人042:02/08/03 03:02 ID:???
>>106 さんは、スレッド 正規表現道場@2ch   http://pc.2ch.net/test/read.cgi/php/996105815
とのマルチポストです。
速やかに回線を切って首を吊って下さい。
112nobodyさん:02/08/04 22:52 ID:KEtgQdUN
あの、、、単発質問っすけど。。。しかも既出っぽい。

erubyで現在処理しているファイル名を出力するのって、
どうやればいいんでしょうか?
対象のerubyファイルに<%print $0%>
と記述してもダメで、往生しております。
mod_ruby-0.9.7-0vl2、eruby-0.9.7-0vl1、ruby-1.6.7-0vl5
OSはVineLinuxっていう環境です。
113nobodyさん:02/08/05 01:04 ID:gkrXoXeM
質問
erubyを使うことによって
rubyのある機能が使えない
なんていうことはありますか?
114自己レス:02/08/05 02:40 ID:???
>>112
とりあえずmod_rubyが目的を達してくれました。
<%print Apache.request.filename%>
115自己レス:02/08/05 03:02 ID:???
ついでにファイルをナニした時刻とかは
<%print File.atime(Apache.request.filename.untaint)%>
faqに書いてあるっすね。。。

>>113
メーリングリストでたまに話題になるっす
116nobodyさん:02/08/09 19:27 ID:???
るびきちのツール http://www.ruby-lang.org/~rubikitch/computer/myruby/w3mclient/ を使って、
IEからgetメソッドでurlをVMware内のアパッチに送り、Redhatのw3mにIEが表示中のページを開かせるスクリプトを書いてます。
アパッチ素人なので、cgiから別プロセスを起動させれません。で、cgiそのものにexecさせるてもこれまたエラーになります。
どこがおかしいのでしょうか?見てください。

% cat w3mclient.cgi
#!/usr/bin/ruby -w
DEFAULT_WINDOW = "w3m"        
print "Content-type: text/html\r\n\r\n"
puts "<html><head><title>test.rb</title></head><body><pre><h2>REQUEST</h2>"
require "cgi-lib"
input = CGI.new
# テスト用
#url='http://localhost/'
url = input["url"]
print "#{url}が妥当ではない。<BR>"  if url == ""
puts "OK!<BR>"
print "<html><body>inputdata = #{url}</body></html>"
string = "U#{url}^M"
#return 0
if string.empty?
 $stderr.puts "must be one argument!"
 exit 1
else
 cmds = [ "select #{DEFAULT_WINDOW}", "stuff #{string}" ]
 cmds << "other"
 exec "screen", "-X", "eval", *cmds
end
117116:02/08/09 19:32 ID:???
予め、screenでw3mを起動して実験してくり。
url='http://localhost/'
#url = input["url"]
として、コマンドラインからだとうまくいくのに.....
118nobodyさん:02/08/16 15:19 ID:???
>>116
CGIだとsafeモードになっててexecできないとかじゃ?
url = input["url"].untaint
でどうよ。
119nobodyさん:02/08/21 14:58 ID:zHeqvt2W
データの保存手段としてPstoreとcsvどっちがいいの??

Pstoreは一気にダンプできるけど、データがでかくなると遅いんでない??
他から読めないし。

csvは細かい制御ができるけどめんどいし。

オブジェクト指向の利点を生かすならならPstoreかなぁ。
120nobodyさん:02/08/21 14:59 ID:zHeqvt2W
gifcat.rbってないの??
121nobodyさん:02/08/21 17:53 ID:???
>>119
CGIでPStoreとcsvの速度的の差ってそんなに気になるかなあ?

50〜100個のオブジェクトから成る木構造をした
オブジェクトをPStoreで保存するスクリプトを書いたことがあるけど、
速度的な問題はあまりなかった。

csvは単純なデータ構造なら良いけど、
こういうものを保存しようとすると、かなり手間がかかるので、
csvが細かい制御に向くということには同意できない。


PStoreの問題は保存形式がバイナリで他から参照できないこと、
Marshalのバージョンによって互換性がなくなることの2点。
キャッシュに使う場合などにはPStoreは便利だが、
きちんと使いどころ決めないと、ひどい目に遭う。
122nobodyさん:02/08/27 12:00 ID:+xL6Nd0D
POSTメソッドでCGIを呼び出すサイトに
GETメソッドでキーワードを渡すようなCGIを仲介させたいのですが、
可能でしょうか?
味の素のサイトのようなものをブラウザのgetメソッドから簡単に
呼び出したいのれす
123nobodyさん:02/08/27 12:09 ID:???
>>122
叶です。でもマルチはやめま・・・
124nobodyさん:02/09/04 00:38 ID:???
125nobodyさん:02/09/04 02:12 ID:???
テンプレートとしてはamritaの方が良いかも。
バインディングファイルがちょっとうっとおしい気がする。

ドキュメントがないので、CGIライブラリとしてはnarf-cgiに負けそう。
http://narf-lib.sourceforge.net/doc/

CGIKitは国際化できるのがポイントかな。
126nobodyさん:02/09/06 23:04 ID:4WN6nHTU
>>125
amritaのコンポーネント使えば
バインディングファイルはフォーム関連だけですむよ

http://kari.to/amrita/cgi-bin/Examples/Examples.cgi
127nobodyさん:02/09/07 12:02 ID:/XosvvbD
てゆうか、いつのまにアムリタとcgikit合体した?
128nobodyさん:02/09/09 03:11 ID:yJUi7eZX
Div(http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=Div)
で画像や外部スタイルシートって使えてる人いますか?

DivでWebアプリーケーション開発してるんですけど、そろそろテキスト
だけじゃつらくなってきたので画像表示させたいんです。
上のページでは絶対URLで書くといいらしいと書いてあるんですが、自サバ
の画像は表示されません。(外部の鯖の画像を指定した場合は表示されます)

解決方法がありましたらご教授お願いします。
129 :02/09/09 03:16 ID:OJG0XMU8
130nobodyさん:02/09/12 10:56 ID:7yXLjx7b
eruby からw3m -dumpを呼び出して、特定の行をgrepさせたいのですが、
そんな複雑なこと、可能でしょうか。
131名無しさん:02/09/14 06:57 ID:???
>>130
そんなのより net/http 使え。
132128:02/09/17 02:42 ID:???
>>128
自己レスです。
WEBrickのMLの過去ログみて試行錯誤しながら解決しました。
133はげ夫:02/09/21 01:43 ID:C/seqkZ5
cgi.out{
 CGI.pretty(
 cgi.html{
  cgi.body{
   cgi.form{
    cgi.popup_menu("selLink",["#{value_array[0]}","#{key_array[0]}"],["#{value_array[1]}","#{key_array[1]}"],
    ["#{value_array[2]}","#{key_array[2]}"],["#{value_array[3]}","#{key_array[3]}"])
   }
  }
 }
 )
}

134はげ夫:02/09/21 01:44 ID:C/seqkZ5
CGIにHTML出力させている以下のスクリプトですが、
もっと綺麗に書きたいです。

cgi.popup_menu("selLink",["#{value_array[0]}","#{key_array[0]}"],["#{value_array[1]}","#{key_array[1]}"],
    ["#{value_array[2]}","#{key_array[2]}"],["#{value_array[3]}","#{key_array[3]}"])

のところをイテレーターで処理したいのですが、どのような
書き方がかのうでしょか.
なお、
while gets
 chomp
 value,key = split(/\s/)
 value_array.push value
 key_array.push key
end
てな感じで、arrayに格納してある値を使いたいです。

135はげ夫:02/09/21 02:24 ID:C/seqkZ5
はげ夫です。
予め、文字列を作っておいて、それを使うようにするため
以下のようにしました。
でも
value_key=`mmm`
がうまくいきません。原因わかる方いらしたら、アドバイスお願いします。
def mmm
 (1..9).each do |i|
  print "[\"value_array[#{i}], key_array[#{i}]\"]"
  print " , "
 end
end

value_key=`mmm`
cgi.out{
 CGI.pretty(
 cgi.html{
  cgi.body{
   cgi.form{
    cgi.popup_menu("selLink", "#{value_key}")
   }
  }
 }
 )
}
136nobodyさん:02/09/21 11:34 ID:???
>>135
何をしたいのか微妙に分からないが、`mmm`というのはmmmという外部コマンドを実行展開だよ。
やるなら、こんな感じでうまく行くかな?
なお、"#{hoge}"はhoge.to_sと同等のハズ。

a = []
4.times do |i|
  a.push([value_array[i].to_s, key_array[i].to_s])
end
cgi.popup_menu("selLink", *a)
137はげ夫です。:02/09/21 16:31 ID:C/seqkZ5
>>136
 神!!!!!


-----
求めていたことが出来ました。

--HageO
138nobodyさん:02/09/23 18:32 ID:es3jINy/
rubyのホームページにあるマニュアル
に使われているCGIってどこでインストールできますか?
どこにあるのでしょうか?
139nobodyさん:02/09/23 19:47 ID:???
>>138
rubyのマニュアルに使用しているCGIはRWiki。
もし、wikiとして使いたいだけならRWikiはお勧めしない。
自分でサーバーを持たない限り使用できる可能性がかなり低い。

RDでwikiが使いたいというのなら別だが、
そうでないならTikiを使うほうが良い。
もちろん別のwikiでも良いが。

RWiki http://www.ruby-lang.org/en/raa-list.rhtml?name=RWiki
Tiki http://todo.org/cgi-bin/jp/tiki.cgi?c=v&p=Tiki
140138:02/09/25 11:59 ID:XZD0oBt/
コマンドラインから
refe String#scan

とするのとNetscapeやw3mで
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=String#scan
とするのと同じマニュアルがよめますが、
refe String#scan の入力を再利用して、
wwwrefe String#scan とか打つと
w3mが起動するようにしたいのです。
ローカルに単なるHTMLとして落としても
これらのことってできるのですよね。
141nobodyさん:02/09/25 12:47 ID:???
xrea.com ruby使えるね。
他にruby使えるFreeSpace知ってるかい?
142eruby ア:02/09/26 06:22 ID:C/mv8j8O
<html><head>
<TITLE>hogehoge</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<script language=JScript defer>
function setvalue() {
str = clipboardData.getData("Text");
document.f.<%=query%> = str;
document.f.submit();
}
</script></head>

<body onload="setvalue();">
<% action_url=ARGV.shift %>
<form name=f method=post action="<%= action_url%>">
<% query=ARGV.shift %>
<% ARGV.each do | name, value| %>
<input type="HIDDEN" NAME=<%=name%> VALUE=<%=value%>>
<% end %>

<input type="text" name=<%=query %>  style="visibility:hidden">
</form></body>

143eruby ア:02/09/26 06:37 ID:C/mv8j8O
makeform.rb METHOD ACTION QUERY_NAME NAME1 VALUE1 ……
コマンドラインから
% makeform.rb get www.google.co.jp/search q lr lang_ja
のように実行するか
/var/www/cgi-bin/eruby /var/www/html/makeform.rhtml post http://www.ajinomoto.com/A-Kitchen/cnavi/condition/index.asp \
txt_freeword hid_hyouji_ku 2 hid_log_menu_title_ku R
のように実行すると、クリップボードを検索キーとしたフォームを自動submit
してくれるHTMLファイルを大量に作りたくなったのですが、
うまく動きません。142 みたいなHTMLが簡単に作れればなというイメージです。
一体、erubyかcgiかどちらがいいのでしょか。

もう少し頑張ってみますが……。



144nobodyさん:02/09/28 16:21 ID:9nQPxW7p
age
145nobodyさん:02/10/01 21:36 ID:WSHJwoNi
mod_rubyについての質問です

現在cgi-bin下に置いて正常に動作してるrubyCGIのhoge2が
mod_rubyで動かそうとするとエラーになってしまいます
apacheのerrorlogでは

/usr/lib/hoge/hoge1.rb:9: uninitialized constant TOARU_DIR (NameError)
from /home/httpd/cgi-bin/hoge2:8:in `require'
from /home/httpd/cgi-bin/hoge2:8
from /usr/lib/ruby/1.6/apache/ruby-run.rb:70:in `load'
from /usr/lib/ruby/1.6/apache/ruby-run.rb:70:in `handler'
from ruby:0

という感じです
hoge2内でhoge1.rbをrequireした時が問題みたいですが

hoge2内で最初にTOARU_DIRは定義されてます
んでhoge1.rbではそのままTOARU_DIRを使ってるわけですが
mod_rubyではこの使い方では駄目なんでしょうか?

ruby 1.6.7
mod_ruby 0.9.8
です
146nobodyさん:02/10/02 15:17 ID:???
>>145
mod_rubyは詳しく知らないけど、requireするものはライブラリとして完結していないとマズイと思う。
少なくとも呼ばれ方によって、エラーがでるような作りではマズイかと。
依存関係が相互だとややこしいから。(なるべく、一方から一方って言う作りの法がメンテがしやすいでしょ。)

mod_rubyではrequireはかなり特殊な動きをするみたいなのでその影響だと思う。
一度requireされると、Apacheを再起動するまでrequireされないとか、、、(時々されるらしいけど)
実際requireしているのはmod_ruby自体であって、requireが書かれているスクリプトではないのかな?
loadにしてみたら、うまくいくかもしれない。
それとも、グローバル変数を使うと動くかも知れない。
でも、作りを変えた方がいいでしょう。たぶん。
147144:02/10/03 21:02 ID:???
>>146
どうもです
結局hoge1.rb内でもTOARU_DIRを書いたら
一応動作してるっぽくなりました
でもキャッシュが効いてるとかの関係で
前のデータが表示されたりして正常動作は無理みたいです


rubyをまだあまり勉強してないので
ライブラリの書き方ってのは良くわからない
というかw3mlっていうスクリプトなんですが
http://www.tmtm.org/ruby/w3ml/

中身見てもサッパリで
直すにも知識がない…
つーわけで
グローバル変数などについても調べてみます
ありがとうございました
148nobodyさん:02/10/03 21:03 ID:???
すまそ
145でした
149るびきち:02/10/07 13:01 ID:eeOopUgI
>>116
やっほ〜☆るびきちだよ〜☆
http://enya-mp3.tripod.com
150nobodyさん :02/10/07 13:28 ID:???
>>149
Perlスレ荒らしてるのあんた?
151るびきち:02/10/07 13:34 ID:???
152nobodyさん :02/10/07 13:38 ID:???
>>151 るびきち様へ、
rd, rtシリーズ使わせてもらってます。ありがとござます。
TeXへの変換もTodoに入ってましたが、どうなってますか。
153るびきち:02/10/11 00:12 ID:???
もうだめぽ
154るびきち:02/10/11 15:41 ID:???
偽者ばかりw 本物のるびきちはperlスレでも荒らしてるんじゃないですかね
彼にネット荒らしの前科があるのは一部では有名ですしね

http://www.geocities.co.jp/MusicStar-Keyboard/4089/omake.htm
155るびきち:02/10/12 09:33 ID:???
>>154
あれは別の「るびきち」だYo
漏れは2chでしか荒らさない
156るびきち:02/10/13 00:55 ID:???
いつの間にここの名無しは"るびきち"になったんだ・・・
157るびきち:02/10/13 02:39 ID:???
Ruby板を作ってもらって、名無しは"るびきち"にしよう!
158るびきち:02/10/13 02:54 ID:???
よかった るびきち 2001/01/10 [20時39分28秒]
掲示板巡回スクリプトを使ってる身には時計は死活問題なのです(^^;;

またかい るびきち 2001/01/10 [01時21分42秒]
時計遅れてるぞ!ってここの管理人に言ってもしょうがないんだよね(苦笑)

ちうことは るびきち 2001/01/02 [02時18分13秒]
日付が違うだけかな。
3日過去に戻ったってことだね、candyは(笑)
タイムスリップ(≧m≦)プッ♪

時計狂ってるぞ。 るびきち 2001/01/02 [02時15分45秒]
時計が狂ってます。現在 Fri Jan 5 02:15:33 JST 2001。

あれれ るびきち 2000/11/28 [08時32分41秒]
時計が「一日」ずれてません?

時計 るびきち 2000/11/21 [22時38分36秒]
candyの時計1時間ほど遅れてます!!!!!
下のカキコ消してください。

rubikitch 2000/11/21 [22時36分32秒]
candy、ホサ・D蕁授償エヨト・謄襦‡Ε法▲蓮◆◆▲漫▲院▲・・・eM#ス
159るひきち:02/10/13 16:20 ID:???
るびきちって、まだRuby界で活動してんの?
追い出されたものだとばかり..............^^
160るびきち:02/10/13 16:49 ID:???
どうでもいいよ。そんなことよりRubyでCGIの話しをしよう。

Drb/Erbを作った咳さんの本「dRubyによる分散オブジェクトプログラミング」
買った。最後の一章はDivの説明で、CGI::sessionの使い方がのってて
面白かったよ。
161るびきち:02/10/16 04:15 ID:???
Rubyよりrubikitchの方が面白い
162nobodyさん:02/10/19 01:01 ID:ETzV66Aw
Rubyで書かれた2ch型掲示板
http://amrita.s14.xrea.com/amrita-bbs/bbsmain.cgi?&template=board&board=amrita-bbs

テーマ切りかえという機能があって同じ掲示板の見ためがスラドになったりする
http://amrita.s14.xrea.com/amrita-bbs/bbsmain.cgi?&theme=slash_en&template=board&board=amrita-bbs
163るびきち:02/10/27 03:30 ID:???
一緒に写真とっただけで脳内彼女にされた ゆっきぃ
http://www.geocities.co.jp/MusicStar-Keyboard/4089/ruby.yuki.jpg
164るびきち:02/10/27 06:22 ID:???
粘着UZEEEE!!

Ruby で weblog やるなら何がいいのかな?
165nobodyさん:02/10/27 13:22 ID:???
>>164

tDiaryかblogatari。日本人なら素直にtDiaryが良いと思う。

tDiary http://www.tdiary.net/
blogatari http://www.jamesbritt.com/articles/blogatari.html

どうでも良いがるびきちは止めてくれ。
166nobodyさん:02/10/28 01:15 ID:???
http://homepage1.nifty.com/~tetsu/ruby/web/refm.html#src_getrefcache
とかも参考にしてるんですが、
localでrubyマニュアル見るにはどの(CGIも含めて)システムが
いいでしょうか?

refe,riでことが足りてしまうかもしれませんが、
みなさんはマニュアル環境、どうやってますか?
167名無しさん@xyzzy:02/10/28 07:27 ID:???
目でまつもと本読むか、xyzzyのruby-modeからinfoひいてる。
168nobodyさん:02/10/28 09:17 ID:ORWKLNV5
               -‐- 、
            , '  /V ヽ ヽ
             ! i iノノ)ノリ)〉 ! ♪    / ̄ ̄ ̄ ̄ ̄
               || |i  ´Д`)!リ     <  るびきち〜
              || /´LX」\|       \_____
             ||<__/<∧>i_/ヽ
            |/ ス, || / \ \_
               / / / || | | V、⊂´
          〔,ァ,》/j/   || | リ
                 く__  _||_!
                 ! ̄| |
                    !  |i
                  / !  |        (((()))
              /`‐!-‐|        ( ´Д`)キモイヨー!
                /  /!  |        ( つ つ
            〈  f《 ! f|L       人 ヽ
               \_ノ |__)      し(_)
169nobodyさん:02/10/28 10:00 ID:eeSwvoos
  |⌒⌒::::::::::::::::::::::::::..ヽ、
  |           :::..ヽ    
  | |;  |  |  |   ,/|;;   |ヽ__,yr''"~";、 
  | |;  |  |  |  /  |  ;| |人illl^lll|゙l!;
  |ノ___ノ__,ノ__,ノノノ   ノ___ノ__ノl| lll゙ ,;ll゙.,l|;;´
  |-=・=-      -=・=-'.::i ゙!iフア゙リリノ
  |::...     __    .::::::::i  ゙゙^''''″
  |::::..    /    |     ::i'  るびきち大好き!
  |::::::::...  /   |     /   
  |:::::::::::.. ̄ ̄ ̄ ̄  ...:/
 / ̄ ̄ ̄ ̄       ヽ
 |              |
 \_____      |
170nobodyさん:02/10/28 10:05 ID:???
                        / ̄ ̄ ̄ ̄ ̄ ̄ ̄
     /\      /\        <   ほれ食え
     /  \    /  \        |   
    /     \_/    \      \_______
    /               \
   /                ヽ___  ___
  /  /  ヽ__/  \    /     ゙Y"     \
 |         │  /      /               \
 |       丶/     /                 \
 \         / ̄ ̄ ̄ ̄)        *      ( ̄ ̄ ̄ ̄)
   ヽ_____|    ─<         |\      >─   (
           |      )     /  (|ミ;\    (      )
           ヽ    ̄ ̄)    /(___人|,iミ'=;\  (  ̄ ̄   )
           /" ̄ ̄ ̄ ̄   /    《v厂リiy\  ̄ ̄ ̄ ̄\
           /        /        ゙|,/'' v:,,、.¨)z,_       \
171るびきち:02/11/12 00:59 ID:4RUh699P
送信先間違えてRUBY MLに投稿しちゃった
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/36312

恥さらしage

>>750
ガハハ、まだあのオッサンんな事やってんだ。

女子中学生とかのネット恋愛相談にノルのがこの人の趣味なのよ。
ネット上ですらも女の子に好きになって貰えないるびきちタンは
その女の子が好きな男のこのことで「相談に乗るよ」と持ちかけ
偽善行為に明け暮れてるのよ。
「この2人がダメになった時俺が横から頂く。さらば彼女いない暦25年!」
けど最期は、相談持ちかけてくれた女の子にまで「偽善者ウザい」「エロ爺」とか言われるというオチ
172名無しさん@Emacs:02/12/17 08:48 ID:M9UVeCJF

2ch の AA は Shift_JIS(MS932?)じゃないと時々化ける文字とか
あるんだけど、Perl で Shift_JIS 使うのはしんどい。正規表現とか。
だから Ruby やろうと思った。

というわけ。
173名無しさん@Emacs:02/12/17 10:13 ID:???
うわっ、ごめんなさい。
間違ってしまいました
174木田:02/12/18 00:11 ID:???
ここにPHPのSourceがあります。


http://www.diohosting.com/jp
175nobodyさん:02/12/18 01:51 ID:???
誤爆?
それともマルチ?
176nobodyさん:03/01/06 19:04 ID:abYGXX0G
少し調べた限りでは無理のようですが、一応聞いてみます。

サーバーが Ruby には対応していないと言っているところで、
スペースに十分な余裕がある場合、
自分で Ruby を入れて CGI 用に使うことができるでしょうか?
もしできるとしたら、その方法は?
私は Windows を使っています。
177nobodyさん:03/01/06 19:49 ID:kYnbuqVv
シェルを開放してるならなんとかなるが
多分そうでないので無理
178nobodyさん:03/01/06 20:06 ID:???
>>176
鯖側でコンパイラが開放されていれば、たぶん可能。
開放されていなくても、無理矢理バイナリパッケージを置けば出来るかも知れないが、
色んな所で無理が来ると思う。

というより、そんな糞鯖止めて、Ruby対応している鯖に乗り換えた方が早いかも。
Rubyが使えるスペース
http://www.jin.gr.jp/~nahi/Ruby/anywhere.html

でも、プロバイダのだったら乗り換えは無理か…。
179176:03/01/07 01:30 ID:???
>177, 178
やっぱ、無理っぽいですね。
レスありがとうございました。
180nobodyさん:03/01/08 16:37 ID:???
RubyってPHPやPerlより遥かに書きやすくて保守も楽なのに、
なんでみんなPerlやPHPばっかり使おうとしてんの?
もう呆れるわ。どうにかしてくれ。
181nobodyさん:03/01/08 18:57 ID:???
Array#eachってインデックスの順番通りに評価していくの?
順番が変わることはありうる?
182nobodyさん:03/01/08 18:58 ID:???
<B>ruby</B><BR>
& space
183nobodyさん:03/01/08 19:16 ID:???
>>180
まだまだマイナーって事が原因だと思う。
少しずつ広めるしかないかと。

>>181
ない。必ずインデックス順。
でも、Hash#eachは順不定。
184nobodyさん:03/01/08 19:32 ID:7OFYGy2+

よくわからんけど、
OOでCGI書いてもインスタンスが1セッションで死んじゃうと思うんだけどどうなん?
せっかく生成しても全然使わないプロパティーとかメソッドがあったりしないの?


185nobodyさん:03/01/08 20:56 ID:???
そんな当たり前のこと言って何が言いたいんだ?
186nobodyさん:03/01/08 22:05 ID:???
>>183
Rubyの高度な資格試験が作られるとか、何か大きな力が
ないと永久にマイナーのままの気がするよ。
187nobodyさん:03/01/08 23:41 ID:nce8HQbQ
>>185
お前は>>184についてどうおもってるんだ?
188nobodyさん:03/01/08 23:45 ID:???
>>187
別に好きって訳じゃないけどさ・・・
ちょっと気になる存在?
189nobodyさん:03/01/08 23:57 ID:???
>>188
向こうはお前のこと好きみたいだぜ?
190nobodyさん:03/01/09 09:11 ID:???
このスレは青春真っ只中ですね。
191nobodyさん:03/01/09 13:12 ID:???
〉〉184
>>188さん、あんたのこと気になるってさ。
告っちゃいなよ。
192nobodyさん:03/01/09 19:00 ID:lEC2F1+p
パスで悩んでいます。

Rubyが入っている鯖を使っているのですが、amritaは入ってないようです。
それで、cgiディレクトリの下にamritaディレクトリを作って、
ファイルをコピーしました。
ですが、cgiディレクトリ中の、tako.cgiで
require './amrita/template'をすると、
Script Error が出てしまいます。

template.rbを見てみると、この中でも、
require 'amrita/node.rb' などしているので、
これが原因だろうと思っています。
こういう場合、どういう設定をするとうまく行くのでしょうか?

tako.cgiに $: << File.expand_path(".")を付け加える、
amritaディレクトリのスクリプトのamrita/を取り除く、
などしてみましたが駄目でした。

cgi/tako.cgi
require './amrita/template'
cgi/amrita/template.rb
require 'amrita/node.rb'
....
193nobodyさん:03/01/09 21:00 ID:???
>>191
え? どっしよかな〜
Ruby初心者だけど手取り足取り教えてもらえるかな♥
194nobodyさん:03/01/10 01:22 ID:???
>>192
amritaディレクトリが入っているディレクトリへの
絶対パスを$:に入れるのが一番いいかと。
/virtual/pokemon/lib/ruby/amrita
とあるとすれば、こんな感じ。

$: << "/virtual/pokemon/lib/ruby"
require "amrita/template"

相対パスでもいいけど、
カレントディレクトリがどこであるかに注意しなくちゃいけない。
たぶん、これでうまく逝くと思うけど…。
195192:03/01/10 06:19 ID:???
できました!

amritaはstrscan.rbが必要で、strscan.rbはrscan.rbが必要だ、
というところではまっていました。
196nobodyさん:03/01/14 19:06 ID:???
Rubyでお勧めの掲示板スクリプdありますか?
197山崎渉:03/01/15 13:35 ID:???
(^^)
198nobodyさん:03/01/16 14:32 ID:???
>196
RuBBSはどうですか。
ttp://www.spc.gr.jp/bbs/RuBBS.html
すごく楽に入れられました。
199nobodyさん:03/01/23 19:20 ID:vbxMrxnN
rubyで文字コードの変換のしかがたわかりません。

eucでかかれている文字を、jisに変換するには
どうすればできるのでしょうか?
200nobodyさん:03/01/24 05:17 ID:???
$ruby -rnkf -n -e 'print NKF.nkf("-j", $_)' hoge.txt

http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=NKF
201nobodyさん:03/01/28 17:39 ID:zukHx973
RubyでもパターンマッチはEUCに変換したほうがいいですか?
202nobodyさん:03/01/30 05:41 ID:???
>>201
eucである必要はないけどeucかsjisかutf8に揃えないと書きにくいと思う。
203nobodyさん?:03/02/07 16:01 ID:???
rubyでもsjisだと特殊文字含んでたらだめなんじゃなかったっけ?
204nobodyさん:03/02/07 17:59 ID:???
ruby -Ks のように漢字コードをきちんと指定すれば問題ないよ。
205nobodyさん:03/02/07 19:11 ID:???
>>203
特殊文字って何よ、特殊文字って?
@みたいにマックでは読めない機種依存文字のこと?
それだとShift_JIS自体の問題になると思うんだけど…。
(ただのhtmlでも問題起きるわけだし…)
206nobodyさん:03/02/07 20:28 ID:???
メタ文字のことだろ
207nobodyさん:03/02/14 11:45 ID:S51j/Le3
CGIKitに興味があります。
amritaについてきたサンプルを実行してみたのですが、
どういう時に使うと嬉しいのかが、いまいちぴんと来ません。
こう使うと便利だっ、という例ありますか。
208nobodyさん:03/02/17 03:23 ID:???
ある程度アプリが複雑になるときかな。もしくはeRubyだと辛いとき、など。
フォームから送られたデータを勝手に処理してくれるのは楽。
まだぽこぽこバグがあるみたいだけど。

ただ、フレームワークだから慣れるのに時間がかかると思う。
コンポーネント指向のWebアプリ開発も同じく。
cgi.rbやeRubyに特に不満がなければ無理に使うこともないかと。
209207:03/02/17 05:27 ID:???
>208
レスどうも。
どうやら、今の私には必要ないようです。
210nobodyさん:03/02/22 02:08 ID:???
Ruby、試してみたいけど使える(入手できる)CGIスクリプトが少なすぎ。
Perl,PHP→Ruby移植をやってほすぃ。
211nobodyさん:03/02/23 01:26 ID:???
>>210
ショボイのしか作れなくて悪かったね!
つか、言語自体のスタイルが違うから移植するより、
新しく構築した方が早いし、メンテが楽。
212nobodyさん:03/02/23 08:02 ID:???
>>210
何を移植して欲しいのよ?
と、聞くだけ聞いてみるテスト。
213nobodyさん:03/02/28 14:15 ID:Zmsc8h96
Amrita 1.0.2だと動くスクリプトが、1.8.1だと変になる。
なんかidがそのままHTMLに出力されてしまう。
どんな原因が考えられる?
214nobodyさん:03/03/06 22:18 ID:???
PHPでつくったスクリプトをrubyで書き直しているんですが、
FLASHの画像サイズを取得できなくて困っています。

rubyで扱える方法ってあります?
215nobodyさん:03/03/07 03:08 ID:???
216nobodyさん:03/03/08 01:07 ID:???
freemovieも新しく作るだけみたいな、読み違えていなければですが。

perlかPHPを読むしかないか...
217nobodyさん:03/03/11 11:05 ID:1APakuZe
mod_rubyを使ってます。
下記のように書いても、シグナルを捕らえられないようです。
mod_rubyではSIGPIPEは発生しないのでしょうか?
それともなにか勘違いしてますか?

#! /usr/bin/ruby
require "cgi"

trap("PIPE") {STDERR.puts 'PIPE'}

print_http_header #httpのヘッダーを吐くルーチン

#10秒かけてデータを出力
for i in 0...100
 print i,"<br>\n"
 sleep(0.1)
end
218217:03/03/11 14:11 ID:???
いろいろ試してみましたが、mod_rubyではブラウザが読み込みを
中断してもシグナルは飛んでこないようです。
219nobodyさん:03/03/13 14:09 ID:ZqR/jIti
RubyでYY-BOARDライクな掲示板を作ってみました。
だれか使いませんか?
ttp://xx.homelinux.net/~ruby/flexbbs/
220山崎渉:03/03/13 16:55 ID:???
(^^)
221nobodyさん:03/03/13 22:00 ID:???
>>217

mod_ruby環境下だと$stdoutがIOじゃなくApache::Requestに
なるのでprintしてもSIGPIPEは発生しません。

$stdout.connection.aborted?でクライアントが接続しているか調べられる。

if $stdout.connection.aborted?
 STDERR.puts "aborted"
end
222nobodyさん:03/03/15 09:09 ID:77D9QknZ
保守
223nobodyさん:03/03/15 09:10 ID:???
http://travel.2ch.net/test/read.cgi/kyoto/1047317632/
ここの1の動画にゾクゾクきた。
224217:03/03/15 14:43 ID:???
>>211
> なるのでprintしてもSIGPIPEは発生しません。

そうですか。
クライアントが読み込みを中断して、処理が中断すると
まずいので、mod_rubyの仕様はむしろ都合がよいです。

> $stdout.connection.aborted?でクライアントが接続しているか調べられる。

勉強になります。
225nobodyさん:03/03/18 11:02 ID:s+XgHl7g
rubyって鯖負担が大きいから普及しないんかな?phpは鯖負担軽いから最近急速に普及しとるが。
226nobodyさん:03/03/18 14:10 ID:???
mod_ruby
227nobodyさん:03/03/19 13:18 ID:???
>>225
同じことをするなら CPU usage は Perl よりちょい多いかなくらいだよ。
むしろ PHP はかなり CPU を食う。
http://www.bagley.org/~doug/shootout/craps.shtml

ただ、OOP ゆえにライブラリ使いまくりで重くなっている可能性はあるね。
228nobodyさん:03/03/19 15:00 ID:???
PHPはコレデモカッ!てくらいライブラリのラッパがあるのがウリだと思う
全く工夫せずにそのままラップしてあるのも潔よい
229nobodyさん:03/03/20 05:03 ID:???
mod_rubyな鯖ってグローバル変数を共有していたり、
一度requireしたらリセットできないなど、
レンタル鯖では使い辛いような気がしますが、
気のせい?
230nobodyさん:03/03/20 05:22 ID:???
>229
ならmod_rubyを使わなければ良いのでは
寿命が長いから顧客向けじゃないと思う
231nobodyさん:03/03/21 10:57 ID:???
>>229
loadは?
232nobodyさん:03/03/21 17:51 ID:???
2回以上ロードされることを念頭においたライブラリは多くないだろう
233nobodyさん:03/04/11 04:13 ID:EmBndhA4
Rubyで書かれた2ch型掲示板↓
http://www.daifukuya.com/photoxp/
234nobodyさん:03/04/11 09:37 ID:???
>>225 オブジェクト歯垢は、厨プログラマには使えないから普及しない気がする。
普通のプログラマには嬉しい言語なのにな。悲しい現実だよ。
235nobodyさん:03/04/11 16:40 ID:???
ちと違う。
普通のプログラマが嬉しければ流行る。
なぜなら厨プログラマは上層の反応に素直に反応するから。
という事はRubyに何か痛い点がある。それはね・・・。         つづく。
236nobodyさん:03/04/13 21:21 ID:???
>235
痛い点って???すげぇ気になる&age
237山崎渉:03/04/17 12:03 ID:???
(^^)
238山崎渉:03/04/20 06:26 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
239nobodyさん:03/04/26 16:38 ID:???
>>235
ネタだけ振って逃げたな。
240nobodyさん:03/05/03 10:48 ID:???
241nobodyさん:03/05/04 07:47 ID:c2Xx7eHE
Amrita1.8.2、Cygwin でなく、mswin版Rubyで使えるようになりませんか?
テンプレートコンパイラ機能を使いたいです。
242nobodyさん:03/05/04 13:08 ID:???
multipartなFORMを使ってファイルをアップするCGI作っています
ファイル名を空にして送信したときに
Tempファイルが残ったままになることが、たまにあるんだがどうして?
243nobodyさん:03/05/06 15:00 ID:???
自分用語で言われても、、、ね?
244nobodyさん:03/05/06 20:26 ID:???
>>241
amrita/ext 配下が VC++ でコンパイル通らないってこと?
エラーメッセージは?
245nobodyさん:03/05/07 09:22 ID:???
>244
Warning がいくつか出たけど、とりあえずコンパイルできました。
246nobodyさん:03/05/07 10:26 ID:QZ929xpM
Hikiでフォント変えられるの?
247nobodyさん:03/05/08 21:06 ID:???
フォント?
テーマ機能つかって、css で制御するんじゃない?
248nobodyさん:03/05/09 15:05 ID:???
test<font face="Arial">test</font>
ってな感じに、部分的にフォントを変えたいのだけど、
タグを使えるような抜け道が用意されているのかなと思って。
249nobodyさん:03/05/09 19:15 ID:???
>>248
フォントを指定するプラグインを作ってください。
250山崎渉:03/05/22 02:04 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
251山崎渉:03/05/28 17:18 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
252るびきち:03/06/11 04:39 ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      rubikitch
253nobodyさん:03/06/17 10:18 ID:CDKrfOSa
Rubyでオブジェクト指向の勉強に最適なサイトはないですか?
254nobodyさん:03/06/17 11:43 ID:???
255あぼーん:あぼーん
あぼーん
256nobodyさん:03/06/19 21:56 ID:c0HjpDNQ
IPからホスト名の取得と、ホスト名からIPの取得
どちらも行うスクリプトを書く時、
どのライブラリをrequireしてどのメソッドを使うのが効率がいいですか?
257nobodyさん:03/06/20 02:08 ID:???
>>256
resolv.rb
258nobodyさん:03/06/20 20:09 ID:???
cgi.rbを使いたくないので、フォームから取得するモジュールを書いてみたのですが、
足りないノウハウ等がありましたら、どうかご教授ください。
以下にコードを挙げます。
ちなみに、複数選択可能なselectは考慮してませんし、使う気がございません。
259258:03/06/20 20:12 ID:???
module CGITool
  FNAME = {}
  CONTENT_TYPE = {}
  def CGITool.getForm()
    if ENV['CONTENT_TYPE'] =~ /^multipart/
      return getFormMultipart()
    end
    data = ""
    if(ENV['REQUEST_METHOD'] == 'POST')
      data = $stdin.read(ENV['CONTENT_LENGTH'].to_i)
    else
      data = ENV['QUERY_STRING']
    end
    form = {}
    if(data != nil)
      data.split(/&/).each{|pair|
        key, value = pair.split(/=/, 2)
        key = unescape(key)
        value = unescape(value)
        if(form.include?(key))
          form[key] += " " + value
        else
          form[key] = value
        end
      }
    end
    form
  end
260258:03/06/20 20:12 ID:???
  def CGITool.unescape(s)
    s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
      fconv([$1.delete('%')].pack('H*'))
    end
  end
  def CGITool.fconv(s)
    s
  end
  def CGITool.getFormMultipart(data = getMultipartData())
    data =~ /^\-+(\w+)\r?\n/
    word = $1
    array = data.split(/\r?\n?\-+#{word}\-*\r?\n/); array.shift
    form = {}
    array.each do |c|
      c.sub!(/^Content-Disposition: form-data; name="(.*?)"(?:; filename="(.*)")?\r?\n/, '')
      key = $1; filename = $2
      if filename
        FNAME[key] = filename.sub(/^.*[\\\/\:](?:.*)[\\\/\:]/, '')
      end
      cLength = c.length; c.sub!(/^\r?\n?/, '')
      if cLength != c.length
        form[key] = fconv(c)
      else
        c.sub!(/^Content-Type: (.*)\r?\n\r?\n/, '')
        CONTENT_TYPE[key] = $1
        form[key] = c
      end
    end
    form
  end
261258:03/06/20 20:12 ID:???
  def CGITool.getMultipartData
    $stdin.binmode
    $stdin.read(ENV['CONTENT_LENGTH'].to_i)
  end
end
262あぼーん:あぼーん
あぼーん
263本7 ◆uPD9aFm9hI :03/06/21 02:13 ID:???
究極はBASICだよ
264nobodyさん:03/06/21 14:45 ID:???
>>258
議論のノウハウが足りないようだが。
265258:03/06/21 23:32 ID:???
うっ‥それでは議論のノウハウをご教授していただきたいものです‥
それはさておき、
危惧していることは、
1.windows9xでgetMultipartData()の内容は問題ないのであろうか?また問題あるのであれば、どうすべきか?
2.getFormMultipart()のarray.eachの内容で想定していないデータが来るケースがあるであろうか?
です。大丈夫でしょうか‥?
266nobodyさん:03/06/25 00:21 ID:xZOuwnMz
すいません。perlから、Rubyに挑戦しているものです。
perlスクリプトの区別を付けるため、rubyのスクリプトは.rbとしているのですが、アパッチのほうは
AddHandler cgi-script .rb
こうやっています。なにかまずいことはありますでしょうか?
あと、rubyのモジュールとはいったいどういうものなのでしょうか?
267nobodyさん:03/06/25 08:55 ID:???
module M
  class C
    def to_s
      "[an instance of class C in module M]"
    end
  end
end

p M::C.new

include M
p C.new
268nobodyさん:03/06/28 17:06 ID:???
>>266
Apacheはそれで良いと思う。

モジュールとは端的に言うとインスタンスが作れないクラス。

Rubyは単一継承だからクラスは一つのスーパークラスしか持てないが、
モジュールであれば複数取り入れることが出来る。

class C0
  #...
end

module M0
  #...
end

module M1
  #...
end

class C1 < C0 # スーパークラスは一つのみ
  include M0
  include M1 # モジュールはいくつでも取り込める
  #...
end

これでC1はC0、M0、M1で定義されたメソッドを継承することになる。

また、モジュールの中でクラスや他のモジュールを入れ子にすることで
名前空間を作るのにも使用する。
267はその例。
269265:03/06/28 17:58 ID:t6ndrw6W
>>268
なるほど、、まぁ、はじめたばっかりの私にとってはクラスとかあんまりあからないので、大丈夫かなぁ・・・
ありがとうございました。
270nobodyさん:03/06/28 17:59 ID:t6ndrw6W
名前欄の数字みすった。スマソ
271nobodyさん:03/07/08 12:15 ID:cQ+4nOpS
多分既出だと思いますが
cgi.rbを使ってあぷろだを作っているのですが、マルチパートの扱いがよく分かりません。
FORMのENCTYPEがmultipart/formdataのとき

values = cgi['field_name'] # <== field_nameの配列
values[0].read # <== values[0]の本文
values[0].local_path # <== values[0]のローカルファイルのパス
values[0].original_filename # <== values[0]の元の名前
values[0].content_type # <== values[0]のcontent_type

でアップロードしたファイルのデータが取得できるのでしょうか?
272nobodyさん:03/07/14 19:21 ID:???
秋風が吹く頃に勉強する予定なのでageといてやる。
273山崎 渉:03/07/15 11:06 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
274nobodyさん:03/07/20 18:39 ID:MTCslCJP
mod_ruby+eruby。
servlet+JSPより好きなので、age。
275nobodyさん:03/07/21 05:15 ID:???
ruby-listでerbの改造について盛り上がってるね。これで速さがphp並になれば……。
276nobodyさん:03/07/21 14:33 ID:???
私は % のエスケープも<% # %>も使わないので、
今回の流れで色々と複雑な事情があるのだなあと知りました。
陰ながら応援sage。
277nobodyさん:03/07/21 23:32 ID:???
俺も使わないなあ。規模が違うってのもあるんだろうけど。
<% か <%= のどっちかだけ。
278nobodyさん:03/07/26 01:58 ID:aoovL48q
初歩的な質問で申し訳ないんですが、
Rubyに標準で添付されているCGI.rbというライブラリでは、
タグを生成するときの大文字は変更できないんでしょうか?
最近ではxmlの関係もあって小文字で出力したいと思うんですが・・・

例)大文字 → <HTML><H1>
  小文字 → <html><h1>
279nobodyさん:03/07/26 02:32 ID:???
あまり、調べてなくて申し訳ないんですが
RubyでPerlでいう↓のやつできませんか?

print << 'EOS';
  <html>
    <body>パパの特盛</body>
  </html>
EOS

>>278
タグの内部だけ?相当むずかしいんじゃないの?
タグ内のデータとかは大文字のままじゃないといけないんでしょ?
例:<INPUT NAME=OOMOJI> ⇒ <input name=OOMOJI>
たぶん、それはないと思う。変換機能がついたHTMLエディタとかどぞ
280nobodyさん:03/07/26 03:02 ID:???
>>278
cgi.rb のかわりにこれの出力を require してみたらどうなる?

print(File.read($:.map{|i|i+"/cgi.rb"}.find{|i|File.readable?(i)}).gsub(/element\.upcase/,"element.downcase"))

>>279
×print << 'EOS';
○print <<'EOS';
281279:03/07/26 03:16 ID:???
>>280
うわあぁああぁぁ!
いぃち文字消したらでぇきたぁー!
サンクス!
282278:03/07/27 00:09 ID:zQkWZE8h
>>279-280
ご教示ありがとうございました。

結局、cgi.rbの中身を解析し、何箇所か修正を加えることで、
目的を達成することができたみたいです。
283278:03/07/27 00:15 ID:zQkWZE8h
補足

>>280さんの方法では、私の環境ではエラーになってしまいました。
284nobodyさん:03/07/27 01:41 ID:???
cgi.rb suxx
285nobodyさん:03/07/27 02:19 ID:???
>>284
CGI.pm がこの世に存在しなければあんなダメダメなライブラリにはならかったんじゃないかと想像。
286nobodyさん:03/07/27 04:47 ID:???
narf のベータが取れるのを待つしか。
287279:03/07/27 17:47 ID:???
gsubで、引っかかった文字によって置き換える文字を変えたいのですが

print "pl rb pl rb".gsub( /(pl|rb)/, ($1=='pl') ? 'Perl': 'Ruby')
これだと ($1=='pl') がかならず false になってしまい、
Ruby Ruby Ruby Ruby になってしまいます
なにゆえでしょう?
288nobodyさん:03/07/27 18:05 ID:???
>>287
簡単に言うとドラクエの勇者に「ロト」って名前付けられないのと一緒だ。
289279:03/07/27 18:32 ID:???
>>288
勇者にロトと名づける裏技、見つかりました

print "pl rb pl rb".gsub(/pl|rb/) {|m|
  m = (m=='pl')? 'Perl' : 'Ruby'
}
これでやったらできました。 |m| あたりが良くわからんけど。
ruby-lang.orgのgsubのリファレンスマニュアルみたらすぐ見つかりました。すみません

rubyの後方参照($1とか\1とか)はあんま柔軟なことできないみたいですね
ありがとうございました
290nobodyさん:03/07/27 21:35 ID:???
>>289
> rubyの後方参照($1とか\1とか)はあんま柔軟なことできないみたいですね

下手な煽り文句ですね。
291279:03/07/28 00:29 ID:???
>>290
え?べつに煽ってはいませんよ
煽りに見えたならそれはすみません
292nobodyさん:03/07/28 00:51 ID:???
>>289
puts "pl rb pl rb".gsub(/(pl|rb)/) { ($1 == 'pl') ? 'Perl' : 'Ruby' }
293nobodyさん:03/07/28 01:38 ID:???
table = {'pl'=>'Perl', 'rb'=>'Ruby'}
pattern = Regexp.compile(table.keys.join('|'))
puts("pl rb pl rb".gsub(pattern){table[$&]})
294279:03/07/28 02:04 ID:???
>>292
そっちの方がカコイイ!!ありがとう

>>293
最適化されてしまった...
table.keys.join('|')って汎用的でおもしろいアイデアですね。ワラタ

おもしろいなRuby
295nobodyさん:03/07/28 22:58 ID:???
> 294
キーが正規表現含むとおかしくなるから
quoteしたほうがいい

pattern = Regexp.compile(table.keys.collect {|key| Regexp.quote(key) }.join('|'))
296279:03/07/29 00:45 ID:???
>>295
いやぁ、やりたかったことはRubyでPHPみたいなファイルを実行するものなんですけどね。
↓こんな感じ。検索でヒットするパターンが多いからちょっと連想配列は使えないかも。
んで昨日、ERBというライブラリがあることを知ってこれは無駄になりました(´・ω・`)ショボーン

class EzRubyServerPage < Object
  @@boundary = '__BOUNDARY_EZ_RHP__'
  def eval( arg = "" )
    Kernel::eval "$_ = <<"+@@boundary+";\n" + arg.gsub( Regexp.compile('[<%][%>]=?') ){
      ($&=='<%' ) ? "\n"+@@boundary+"\nchop;print;":
      ($&=='<%=') ? "\n"+@@boundary+"\nchop;print;print ":
      ($&=='%>' ) ? "\n$_ = <<"+@@boundary+";\n":
      $&
    } + "\n"+@@boundary+"\nchop;print;"
  end
end
$tokumori = "パパの特盛"
EzRubyServerPage.new.eval("<html><body>ようこそ <%=$tokumori%>へ</body></html>\n")
297279:03/07/29 00:53 ID:???
>検索でヒットするパターンが多いからちょっと連想配列は使えないかも。

検索速度がorでつなげるより速そうだから [<%][%>]=? なんてしてるんですが
よく考えたらパターンは <%、%>、<%=、%>=、>%、%<、>%=、%<= の8通りだけだから連想配列の方が良いか
まあいいや、ERBとかいうのを使おう...。スレ汚しすんまそん。ハァ
298nobodyさん:03/07/29 00:57 ID:???
ちなみに erb は Ruby 1.8 からは標準添付だ。
299nobodyさん:03/07/29 04:29 ID:???
>>295
それじゃ自分で正規表現を指定できないではないか
300nobodyさん:03/07/29 23:02 ID:SXyppRH6
CGI::Sessionを用いてセッション管理をしようと思うのですが、

利用しなくなったセッションファイルを自動で消去することは
できないんでしょうか?

ある本をよんだら、CGI::Session.sweep()を使うと書いてあった
のですが、エラーが出て使えません。
301nobodyさん:03/07/30 03:09 ID:???
>>300
> ある本をよんだら、CGI::Session.sweep()を使うと書いてあった

sweepの定義はその本に書いあるのだと思われ。

利用しなくなったかどうかの判断基準は利用者によって異なる。
だから、一般的な方法は存在しない。
302nobodyさん:03/07/30 04:42 ID:???
Rubikitiさん出版おめでとう。
303nobodyさん:03/08/05 00:21 ID:???
843 :デフォルトの名無しさん :03/08/01 01:55
るびきち著『Rubyシェルプログラミング−irb&irbsh徹底活用−』8月4日発売です
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1798-6

基本的にこの人は他人との意思疎通が不可能な引き篭り星人な為、
何を言っているのか、何を伝えたいのかが全く見えません。故に専門書としては全く使えません

ではこの本のウリは何か?それは「他人をムカつかせるにはどうすればいいのか?」という厨房必修のスキル養成本としての価値に
他ならないでしょう。礼儀をわきまえない砕けすぎた態度から始まり、徐々に高圧的な態度へ、最後は相手を全否定し卑下し、自分が
相手に比べ、如何に優れた人間であるかを延々と語り続けるその試合運びに、各地厨房サイトから歓声が上がっております
なんとあの、2ちゃんねるネトヲチ板の皆様からも「掲示板のレスが反感を買うための例文集のようだ」とのお墨付きを得ております


そして「絶対零度つまらなギャグ集」としての機能も持ち合わせております。
なぜ、ウケ狙いの小ネタが、そこまでつまらないのか?スベろうと努力したってそこまでつまらない発言できるものではありません
正に天が与え給った才能だNe!! 合コンで思いっきりスベッて周りからジト目で見られてみたいソコのあなた!必読です。

参考文献 Rubyを256倍使うための本 魔道編
304nobodyさん:03/08/06 19:53 ID:???
次は農道編キボンヌ
305山崎 渉:03/08/15 22:44 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
306nobodyさん:03/08/23 03:43 ID:???
eruby で エラーメッセージをブラウザに表示したいんだけど
できません。
MLをみたら $DEBUG = true
にするとありますが、そうしても変化がありません。。。

どうすればいいんですか?
307nobodyさん:03/08/23 19:08 ID:???
Internal Server Error とかで eruby から何も返ってこないなら、
eruby 自体が起動されてないんじゃないの?
サーバーの設定を確認した方がいいような。
サーバーのエラーログが見れるのならそこを見るべし。
308nobodyさん:03/08/23 21:49 ID:Ba5Hz+Nk
erubyは動いているんですが、apacheのログを開きながらデバッグするのが
面倒くさいだけなんです。

作っている時だけブラウザにエラーを表示してくれると助かるんですが。

eruby + mod_ruby で使ってます。
手元に環境がないんでversionがわかんないんですが、どちらも最新のものだと思います。
309nobodyさん:03/08/23 22:32 ID:???
生成したrubyコードが parse error になる場合はstdoutには何も返さん罠。
コマンドラインで実行してみれ。
310nobodyさん:03/08/24 00:59 ID:???
>>313

ruby の parse error は apacheのログには表示されますので、
それをブラウザに表示できる設定がないかなと思ったんです。

stderrはerubyでは拾えないということですか?
311nobodyさん:03/08/24 02:40 ID:???
parse error って拾えるのか?
312nobodyさん:03/08/24 05:41 ID:???
つーかコマンドラインで表示されるエラーを
なんでブラウザで見たいのかがさっぱり分からん
313nobodyさん:03/08/24 06:34 ID:3TVF6Tbn
>312
CGIの引数渡すのがめんどくさいんだろ
314312:03/08/24 10:00 ID:???
>317
めんどくさいていうか、わかんないんです。
コマンドラインでPOSTデータやcookieデータを渡す方法が。

315あぼーん:あぼーん
あぼーん
316nobodyさん:03/08/24 20:16 ID:???
parse error になるかどうかと入力の有無は関係ないと思うのだが
317312:03/08/25 00:38 ID:???
別に parse errorばかりのことをいっているんじゃなくて、
例外が発生しても Internal server errorになるわけで。

できないんなら、できないでいいんだけど。
煽られるのって楽しいね。
318nobodyさん:03/08/25 01:25 ID:???
おいおい、parse error以外の例外は大抵捕捉できるだろ
つーか、311=312なの??
319nobodyさん:03/08/25 09:27 ID:???
どれが>>306かいまいち分からんが、
実行時の例外は $DEBUG=true しとけばブラウザで確認できるはずだから
インタプリタがコンパイルできるかどうかだけはコマンドラインでeruby実行して
調べれっていわれてるんでしょ。
320nobodyさん:03/08/25 14:17 ID:IWdWlewI
IISでeRubyって無理なのかな・・・
321nobodyさん:03/08/25 15:13 ID:???
ISAPIにすればいけるんでない?
322nobodyさん:03/08/25 18:59 ID:???
あれ、eRubyは昔はparse error もバッチリブラウザに出てたけど・・・
ソース丸見えになるのでデフォルトでこれは勘弁と思ったものだ。
323nobodyさん:03/08/26 01:50 ID:???
>323
mod_ruby を外したらブラウザに表示できました。
mod_ruby + eruby だと表示できないようです。

--
mod_ruby 1.0.5
ruby 1.6.8 (2003-03-26)
eRuby version 1.0.3
324nobodyさん:03/08/26 11:26 ID:???
>>323
なるほど、と思ってソースのあたりをいろいろ探して見た
httpd.conf で
RubyRequire apache/eruby-run -> RubyRequire apache/eruby-debug
RubyHandler Apache::ERubyRun.instance -> RubyHandler Apache::ERubyDebug.instance

に変更したらparse error もブラウザに出た
しかし、HTTPサーバごとデバッグ環境にしなけりゃならんのだなあ・・・
325nobodyさん:03/08/26 22:36 ID:???
埋め込みコード系(ERB,eruby)よりHTML::Templateを勧める。

http://raa.ruby-lang.org/list.rhtml?name=html-template2

他の環境(オブジェクト、DB)を変更する副作用が一切ないから
思う存分プレゼンテーションロジックのデバッグが出来る

ビジネスロジックはTest::Unitできちんとテスト書きましょう
326nobodyさん:03/08/31 13:41 ID:???
テンプレートなら、amritaと言うライブラリもあるよ。
327nobodyさん:03/09/01 20:45 ID:???
>>326

amritaは名前空間が判りづらいから嫌い。
328nobodyさん:03/09/02 06:02 ID:jo93f+PB
rubyでCGIを書くにあたって、使ってるデザインパターンとかあります?
329nobodyさん:03/09/03 02:26 ID:???
nora はどう?
330nobodyさん:03/09/03 02:41 ID:6XWfASQR
HTML::Templateについて詳しいサイトないですか?
html-template.rdだけじゃ、複雑なことしたいときどーすりゃいいか分からん
331nobodyさん:03/09/03 22:54 ID:???
1.8.0にしてみた
ENV[]から代入した文字列は変更不可だった
とりあえずひっかかったのはいまのとここれだけ
332nobodyさん:03/09/04 02:16 ID:???
freeze するようになったんだっけか。
変数にアサインしてもStringオブジェクト自体はかわらんからね。
dup すれ。
333nobodyさん:03/09/04 10:48 ID:???
サンクス。dupで対応したけど
Rubyの使用が最も少ないサーバ(ほとんどphpとPerl)を選んで
入れたのに、いきなり出たんでちょっと別のサーバに持ってくのは
慎重にならざるをえないな・・
334nobodyさん:03/09/07 18:35 ID:90cSPk+W
コマンドラインからは動くCGI(HTMLを期待通り出力する)
が、サーバから動かない時って、どんな可能性があるでしょうか?
INTERNAL_SERVER_ERRORになってしまいます。
以下のことは確認しました。何か理由思いつかないでしょうか?

実行可能になっています。
そのディレクトリにwwwがファイルを作れるようになってます。
Apacheの設定でCGIを使えるようにしています。
#!/usr/local/bin/rubyを文頭に書いてます。
print "Content-type: text/html"はあります。
335nobodyさん:03/09/07 18:46 ID:???
>>334
apacheのエラーログには何か出てない?
suEXEC関連のエラーなら、そっちのログも(ディレクトリがグループ書き込みできると実行できない)
336334:03/09/07 19:18 ID:90cSPk+W
>>335
やっと、できました!!
あーよかった。もうちょっとで一日が無駄になるところでした(^^;)

Apacheのログみてたら、book1~ に対してPermission deniedとか書いてあったので、
book1~を削除したら、動いてくれました。
PStoreの保存するファイルの名前がbook1で、コマンドラインから実行していた時に
book1やbook1~が作られていました。
book1の方は消していたのですが、book1~は気にせず残したままでした。

ありがとうございました。これからは、CGIが動かない時、Apacheのログもよむことにします。

ちなみに、他にでてたエラーのキーワードは、こんな感じです。
同じようなエラーが出た時に検索にかかるように、載せておきます。
Premature end of script headers: wook.cgi, referer: http://localhost/cgi-bin/***.html
/usr/local/lib/ruby/1.8/ftools.rb:23:in `initialize': Permission denied - ./book1~ (Errno::EACCES), referer: http://localhost/cgi-bin/***.html
/usr/local/lib/ruby/1.8/ftools.rb:23:in `open', referer: http://localhost/cgi-bin/***.html
from /usr/local/lib/ru
by/1.8/ftools.rb:23:in `syscopy', referer: http://localhost/cgi-bin/***.html
from /usr/local/lib/ruby/1.8/ftools.rb:43:in `copy', referer: http://localhost/cgi-bin/***.html
などでした。

ホントありがとうございました!
337nobodyさん:03/09/08 00:50 ID:???
すんません
URLエンコードってどうすればよいんでしょ‥?
338nobodyさん:03/09/08 01:40 ID:???
>>337

require 'cgi'
CGI.escape

そういう意味じゃなくて?
まあcgi.rbの中見ればわかる
339337:03/09/08 01:57 ID:???
取り敢えず、エンコード部分は、CGI.escapeと同じにしてみたんだけど
どうやら、IEが返してくるENV['HTTP_COOKIE']の値が想定していたのと違うみたい
writeから始まって、値のみがカンマ区切りで入っているデータが返ってくるようで
キーはどこいったの??って感じです

値を変えてみてしてみたのですが、返ってくるENV['HTTP_COOKIE']の値が変わらず‥
path指定を消して、再度値を変えてみてしてみたのですが、変わらず‥

以下のメソッドの結果をそのままプリントしているのですが、なにかまずいでしょうか?
def mkCookie(recipe, expiryDate = 30, path = nil)
 t = (Time.new.to_i + (expiryDate * 86400)).to_i
 t = Time.at(t).gmtime.strftime("%a, %d-%b-%Y %H:%M:%S GMT")
 text = ''
 recipe.each do |key, value|
 text << "Set-Cookie: #{escape(key)}=#{escape(value)}; expires=#{t};" + (path ? " path=#{path};" : '') + "\n"
 end
 text
end


ひょっとして、クッキー使用前に使ってた
IE Powertoys Plus!のどこでもクッキーが???
340337:03/09/08 08:54 ID:???
おは
関係のあるCookieを全て削除したらどうやらスクリプト側で受け取るものは正常になっていました

Cookieのファイルを見た感じの違いはキー・値のペアの区切りが改行になっているか「*」になっているかの違いでした

どうしてそうなったのか、Cookieはなぜ上書きされなかったのかは不明‥
341nobodyさん:03/09/08 10:36 ID:???
>>330
具体的になにがしたいんだ?
HTML::Templateでは、テンプレート側では複雑なことはできない。
複雑なこと(例えば複雑な条件式など)は、ぜんぶメインプログラム側で行う。
342nobodyさん:03/09/09 01:02 ID:64dJm4LW
HTML::Templateってparam()にセットした配列がテンプレート内で
使われてないとエラーになんの?
343nobodyさん:03/09/09 09:58 ID:???
>>342
どんなエラー?
実際のスクリプトとテンプレート、それにエラーメッセージをみせろ。
344nobodyさん:03/09/09 10:23 ID:64dJm4LW
----hogehoge.rb----
templ = HTML::Template.new('hogehoge.html');
templ.param({'test'=>true});
array = [{'host'=>'book.2ch.net','board'=>'bizplus'},
{'host'=>'news5.2ch.net','board'=>'newsplus'},
{'host'=>'news4.2ch.net','board'=>'news'}];
templ.param({'array'=>array});
print(templ.output);
------------------

----hogehoge.html----
<!begin:test>
<!begin:array>
HOST:<!var:host>
BOARD:<!var:board>
<!end:array>
<!end:test>
---------------------

----error message----
./template.rb:78:in `node': node array not found (ArgumentError)

from ./template.rb:62:in `param'
from ./template.rb:61:in `each'
from ./template.rb:61:in `param'
from ./template.rb:59:in `each'
from ./template.rb:59:in `param'
from ./hogehoge.rb:9
--------------------
345nobodyさん:03/09/10 19:14 ID:???
>>344
これって、どのHTML::Templateを使っている?
おれが使っているのは
http://raa.ruby-lang.org/list.rhtml?name=html-template2
なんだけど、テンプレートの書き方がなんか違うね。

それはそうとエラーの原因は、
(1)テンプレートで記述している木構造と
(2)テンプレートに与えているデータの木構造
が異なることが原因だろ。
(1)では test の下に array があるが、
(2)では test と array が兄弟になってないか?
346345:03/09/10 20:46 ID:???
>>344
おれの勘違いだったかも。

ループのまわりをif文で囲むと、どうもうまくいかないみたい。
表示する/しないをif文で制御するのではなく、
ループするデータがある/ないで表示を制御するとうまくいく。

------- sample.html ------
<TMPL_LOOP NAME="list">
HOST: <TMPL_VAR NAME="host">
BOARD: <TMPL_VAR NAME="board">
</TMPL_LOOP>
--------------------------

347345:03/09/10 20:47 ID:???
つづき。

-------- sample.rb -------
#!/usr/bin/ruby

require 'html/template'

test = true # or false

list = [
{ 'host' => 'book.2ch.net', 'board' => 'bizplus', },
{ 'host' => 'news5.2ch.net', 'board' => 'newsplus', },
{ 'host' => 'news4.2ch.net', 'board' => 'news', },
]
param = {}
if test then
param['list'] = list
else
param['list'] = []
end

template = HTML::Template.new('filename' => 'sample.html')
template.param(param)

print template.output
--------------------------
348nobodyさん:03/09/10 21:02 ID:sTBsqDi+
html-template2の方に乗り換えようと思ったんですが
そっちもループをifで囲めないんですか?
349nobodyさん:03/09/11 05:07 ID:???
>>348
おれがためした限りではできなかった。
作者に聞いてみれば?日本人だから、日本語のメールでOKだよ。
350nobodyさん:03/09/11 17:30 ID:???
>>348
直したから試してみて(20030911 version)

<TMPL_IF NAME="list">
<TMPL_LOOP NAME="list">
HOST: <TMPL_VAR NAME="host">
BOARD: <TMPL_VAR NAME="board">
</TMPL_LOOP>
</TMPL_IF>

こんなのも、ちゃんと動くようになった。
351nobodyさん:03/09/13 02:40 ID:???
>>350
作者登場!
352nobodyさん:03/09/13 02:53 ID:???
>>350
見事に直ってた。さすが作者。


-------- 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;
-----------------------------------
353nobodyさん:03/09/13 02:55 ID:???
実行結果:



HOST: book.2ch.net
BOARD: bizplus

HOST: news5.2ch.net
BOARD: newsplus

HOST: news4.2ch.net
BOARD: news


>>348
ちゃんと作者に感謝しとけよ。
354nobodyさん:03/09/13 12:06 ID:???
自演ですかぁ〜?
355nobodyさん:03/09/14 00:05 ID:???
>>354
もちろんです。あたりまえじゃないですか。
素早い対応を印象付けるために、色々仕込んでるんですよ。
これでも。
356nobodyさん:03/09/15 08:44 ID:???
cgikitってやつで作ってるんだけど、つらいね。
ページあたりにオブジェクトを割り当てるってのはまどころっこしいだけ。
(これはWebObject / Struts あたりの方法)

eRubyやPHPのようにページとロジックを直接結びつけるアプローチが
どれだけ正しいのかということがわかる。(MVCは向かないね)
357nobodyさん:03/09/15 08:47 ID:4+LfvYPm
1ページ/1オブジェクト っていうアプローチは、
amrita のように出力するためだけにあるものならいいけど、
値の受け取り、処理、までやるとなると、複雑さが増すだけ。

むしろ、1処理/1オブジェクトというアプローチをとるべきだ。
ページの抽象化なんて Hash オブジェクトで十分
358nobodyさん:03/09/15 08:49 ID:???
1 処理/ 1 オブジェクトっていうのは、純粋なServlet のアプローチか。
359nobodyさん:03/09/15 10:37 ID:???
>>355
ワラタ
360nobodyさん:03/09/15 10:42 ID:???
>>356
eRubyやPHPではロジックとビューとが分離できないじゃん。
友達いないやつなら一人でロジックとビューをやるしかないけど
そうでないなら分担して作業したほうがいいよ。
361nobodyさん:03/09/17 21:23 ID:???
>>360
eRubyやPHPでロジックとビュー分離できますよ。
多くの場合、あえて分離しないだけで。
362nobodyさん:03/09/17 22:45 ID:???
>>361
それ、参考になるようなドキュメントってありますか?
363nobodyさん:03/09/18 01:57 ID:???
364nobodyさん:03/09/18 11:16 ID:???
>>363
みたけど、専用のフレームワークじゃん。それはずるいだろ。
そんなの持ち出していいんなら、なんだってロジックとビューの分離は可能だよ。
逆にいえば、そういうのを持ち出さないと分離できないってことじゃないか?
#まあPHPでは include() 使えば分離できるんだけどね。

つーか、もとの発言
>>356
では、
> eRubyやPHPのようにページとロジックを直接結びつけるアプローチが
> どれだけ正しいのかということがわかる。(MVCは向かないね)
なんてことをいってたので、それは違うだろ!というツッコミで
「ロジックとビューの分離」をあげてみた。
文章が悪かったかもしれんが、分離ができる/できないという話よりも、
分離をすべきか否かという話をしたい。

おれは分離したい。そのための手段として、CGIKitはいいと思う。
365nobodyさん:03/09/19 20:30 ID: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を定義しないといけないんですか?
366nobodyさん:03/09/20 02:02 ID:???
>>364
> 分離をすべきか否かという話をしたい。

どれを選ぶかは目的、規模、開発形態によるんじゃねーの?
(0) コードにHTMLを埋め込む
(1) HTMLを抽象化する(CGI::Html*)
(2) HTMLにコードを埋め込む(eruby)
(3) 別々に書く(amrita)
(4) 複数のセッションに対応する(div)

(3)はすごく良さげに見えるが、ID属性を利用するツールを
使ってるデザイナさんとファイルをやりとりする場合は
そのツールの挙動をよく知る必要がある。
PHP慣れしたデザイナさんと組む場合は(2)だと話がはやい。
(1)は画面内を部品化する場合に割と良いことがある。

別の例だと、Javascriptでサイズ変更不能な窓にする場合、
後からサイズの仕様が変わるのに備えるならprettyprintを
使って(0)でレイアウトを組むとか。
367nobodyさん:03/09/20 09:45 ID:???
>>365

param["hoge"]が未定義だとnilが返ってくるから
IFで判定できるよ。

<TMPL_IF NAME='hoge'>
 <TMPL_VAR NAME='hoge'>
<TMPL_ELSE>
 hogeなし
</TMPL_IF>
368nobodyさん:03/09/20 13:46 ID:YAOMW6mt
---hoge.html---
<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'と同じ階層で定義しないといけないのですか?

369nobodyさん:03/09/20 18:41 ID:4MmeVqhG
Linux上でRuby走らせてるんですが、
ファイルオープンして、文字列を書き込むとき、SJISで書き込むにはどうしたらいいでしょうか?
370nobodyさん:03/09/20 18:45 ID:???
>>369
君はRubyのIOをPerlIOか何かのように考えているのかね。
Shift_JISを書き込みたきゃNKFなりIconvなりで変換して書き込みたまえ。
371nobodyさん:03/09/20 18:52 ID:4MmeVqhG
>>370
出来ました、どうもです。
372nobodyさん:03/09/20 19:40 ID:???
>>370
PerlIOって何ですか?
373nobodyさん:03/09/21 20:59 ID:???
>>368

>'hoge'は'piyo'と同じ階層で定義しないといけないのですか?

基本的にはそうです。

内部的には
out << param['piyo']
out << param['hoge']
という処理なので

Hashのデフォルト値を指定するという手もあります。

Hash+Arrayなインターフェースを持った親をたどれるツリーのようなparamを作ってやれば上位階層の
'hoge'を取ってくるとかもできるでしょう。
374nobodyさん:03/09/25 21:27 ID:???
あげ.
375nobodyさん:03/09/26 09:05 ID:???
rubi
376nobodyさん:03/09/26 18:16 ID:???
Rubyがしょぼいレンタルサバでも普及すれば、
おれもCGIスクリプト配布するのにな。
377nobodyさん:03/09/27 16:13 ID:???
俺は
ttp://linux-life.net/program/ruby/doc/chapter08/
を適当に改造して使ってる。
378nobodyさん:03/09/28 01:23 ID:CG0BaKAB
Perlにとって変わると、いろいろな雑誌で数年前から言われ続けているけど、
そうでもないんだよね、これが。
単純にオブジェクト指向が壁になっているんだろうか?
WebProg版のPerlerの人、Ruby勉強してみな。便利だから。
一度使ったらやめられない止まらない。
379nobodyさん:03/09/28 02:07 ID:???
>>378
Ruby勉強中。
でもCGIは作んないかも。
380nobodyさん:03/09/28 12:41 ID:???
>>378
まだまだ一般的にサーバーに入ってない場合が多いからねぇ。
これが改善されることがRuby普及の為の近道のような気がするけど。
いくら初心者を取り込もうと思って本とかサイトとか作ったって、
サーバーに入ってないからやらないって人は多いと思う。

みんなで大手プロバイダ、レンタルサーバーにお願いしましょう!
テンプレは次の人が考えたもので↓
381nobodyさん:03/09/28 21:59 ID:???
>ID=xxxxxxxxxxx
>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/
>
> なにとぞ、よろしくお願いいたします。
>
>
382nobodyさん:03/09/28 21:59 ID:???
○× △ 様

平素は「●◆▼」をご愛顧いただき、誠にありがとうございます。

x月y日付のメールでのお問い合わせの件につきまして、ご案内させて
いただきます。

この度は、「ホームページサービス」に関する貴重なご意見を
いただき、誠にありがとうございました。

○×様のご意見は、今後のサービス内容に反映できるよう、検討課題と
させていただきたく存じます。

お気付きの点や至らない点等ございましたら、ご意見ご指摘いただければ
幸いです。

今後とも「●◆▼」をよろしくお願いいたします。
お問い合わせ、ありがとうございました。


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
株式会社●◆▼ネットワーク
●◆▼ダイヤル 担当:××(super@●◆▼.ne.jp)
サポートホームページ
http://www.●◆▼.ne.jp/support/
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
383nobodyさん:03/09/28 22:05 ID:???
381のユーザ用お願いテンプレは'>'が入っていて使いにくい
382のサポート担当用気のない返事テンプレは使いやすい
<%= mail.name %> 様

平素は「●◆▼」をご愛顧いただき、誠にありがとうございます。

<%=mail.month%>月<%=mail.day%>日付のメールでのお問い合わせの件につきまして、ご案内させて
いただきます。

この度は、「ホームページサービス」に関する貴重なご意見を
いただき、誠にありがとうございました。

<%= mail.name %>のご意見は、今後のサービス内容に反映できるよう、検討課題と
させていただきたく存じます。

お気付きの点や至らない点等ございましたら、ご意見ご指摘いただければ
幸いです。

今後とも「●◆▼」をよろしくお願いいたします。
お問い合わせ、ありがとうございました。


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
株式会社●◆▼ネットワーク
●◆▼ダイヤル 担当:<%= mail.tantou.name %>(<%= mail.tantou.email %>)
サポートホームページ
http://www.●◆▼.ne.jp/support/
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
385nobodyさん:03/09/28 22:27 ID:???
>>382,>>384
要約すると、サバ会員は黙って金田家払ってろってことか。
386nobodyさん:03/09/28 22:54 ID:???
384のerbテンプレートを使うために、サポート担当者はrubyとerbを使う。
そこで担当者は気づくの。ruby(・∀・)イイ!
そしてrubyがインストールされる。

384はこんな方向に持っていくためのテンプレート
387nobodyさん:03/09/29 00:05 ID:???
1.4.x のころからRuby使ってて、提供しているCGIサーバでも
使えるようにしてたけど、頻繁なバージョンアップと互換性の無さで
フォローが大変だった。今はもう安定してきてるとは思うが・・・
388nobodyさん:03/09/29 09:32 ID:???
現在広く使われていると思われる1.6.8と最新版1.8.0は互換性の無い仕様変更が加えられたし、
肝心の1.8.0はstableとは名ばかりのバグバグバージョン。
こりゃ、Rubyを入れるのを躊躇うのも仕方ないだろうな。
389nobodyさん:03/09/29 14:44 ID:???
stable = バグをとって安定にしていく枝
current = 新機能をいろいろ試してみる枝
なんじゃねーの?

つーか自分でインタプリタが設置できないような鯖で
無理にRuby使わなくてもいいじゃん。
390nobodyさん:03/09/29 23:55 ID:???
そうだな、あんまり無理すんな
391nobodyさん:03/09/30 07:46 ID:???
>>388
>互換性の無い仕様変更が加えられたし
だからメジャーバージョンアップしたんじゃん。
392nobodyさん:03/10/01 12:27 ID:???
Perl4とPerl5の違いが〜って言うのと大して変わらんぞ
393nobodyさん:03/10/01 23:14 ID:???
前はマイナーでもやばかった
1.6.7あたりが境目かなあ
ライブラリがあるバージョン以上を要求するんだが
むやみに上げるとcgi周りがこけるという状況に・・・
自分用だったらどうにでもなるんだけど
394nobodyさん:03/10/02 14:39 ID:???
なにかいい参考書ありませんか?
395nobodyさん:03/10/02 23:10 ID:???
そう、具体的なRubyでCGIを実践的な本を紹介してほすい。
396nobodyさん:03/10/02 23:19 ID:???
PerlでCGI覚えたから特にRubyでってのは分からん
CGIクラスはフォームデータ受け取るくらいしか使ってない
397nobodyさん:03/10/03 02:41 ID:???
>>396
CGIクラスはフォームデータ受け取る以外はイラネ
398nobodyさん:03/10/03 10:24 ID:???
そう?オレはフォームデータ受け取りのほかに
クッキーの読み書きにも使ってる
399nobodyさん:03/10/03 12:27 ID:???
うちの犬の名はクッキー
400nobodyさん:03/10/03 12:47 ID:???
>>398
あぁ、確かにそれは要るな。あと cgi/session はちょっと使える。でもあとはイラネ。
401nobodyさん:03/10/03 14:14 ID:???
>>394-395
ML で話題になってた「基礎から学ぶWebデータベースプログラミング」ってどう?
あれだけ誉め殺されてるところをみると、
かなりアヤシイ本なのではないかと推測しているんですが。 (←ひねくれ小僧)
402nobodyさん:03/10/04 15:06 ID:???
そのML読んでないけど、面白そうだから買って来るよ。
403nobodyさん:03/10/04 18:53 ID:???
売ってなかった...ざんねん。
明日違う本屋にいくよ。
404nobodyさん:03/10/05 20:55 ID:???
定数を warning を出さずに上書きする方法ってありますか?
405nobodyさん:03/10/05 20:57 ID:???
それ、定数って言わないんじゃ
406nobodyさん:03/10/05 23:32 ID:???
いや、危険な賭けじゃがひとつだけ手がある。
名前の最初の一文字を小文字に変えるのじゃ!!

407nobodyさん:03/10/06 08:41 ID:BTATtbka
>>404
これはどう?
class A; TEST = 1; end
class B < A; end
class C < A; TEST = 5; end
p A::TEST, B::TEST, C::TEST
408nobodyさん:03/10/06 08:44 ID:BTATtbka
あと、こんな感じ
class A; TEST = 1; end
class B < A; end
p B::TEST
class B < A; TEST = 5; end
p B::TEST
409nobodyさん:03/10/06 23:08 ID:???
>>404
class A ; X=1 ; remove_const(:X) ; X=2 ; end
410nobodyさん:03/10/11 11:04 ID:???
"||="←これ、どこに説明があるの?
411nobodyさん:03/10/11 13:19 ID:???
perlからの流れっぽいしなあ、それ
412nobodyさん:03/10/11 19:58 ID:???
413nobodyさん:03/10/12 02:07 ID:???
左辺に変数が出てきた時点で nil にアサインされるのかな?
それとも未定義だけど評価できるのかな?
414nobodyさん:03/10/12 02:39 ID:???
> 左辺に変数が出てきた時点で nil にアサインされるのかな?

yes. try below

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

なお元の作者が何のツールを使っていたのかは不明です。
ちなみに彼は開発に疲れてヨガの眠りに就きました。
423nobodyさん:03/11/17 19:15 ID:???
フォームでファイルをアップロードする時に

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
見たけどサパーリです。
424nobodyさん:03/11/17 19:35 ID:???
>>423
cgi.rb の使い方、でいいのかな?
通常、foo['bar'][0] で取得するところが
multipart/ form-data の時は foo['bar'][0].read になるくらい、かな
425nobodyさん:03/11/17 19:40 ID:???
あーあとtype=fileの場合、foo['bar'][0].original_filename がつくなあ
何年も前に書いたコードを見てるのでもしかしたら変更があったかもしれん
426nobodyさん:03/11/17 20:03 ID:???
>>425
お返事ありがとうございます。
見つけられました!感謝します!
427nobodyさん:03/11/18 11:28 ID:???
RubyのCGIでエラーが発生したときに
Internal Server Error じゃなく、ブラウザにエラーコード吐き出すこと
って出来ますか?
apacheのログ見に行くのが面倒臭いもので…
428nobodyさん:03/11/18 11:54 ID:???
何かモジュールとかあるのかは知らないが
例外捕まえるのがいいかもね
rescue StandardError
rescue ScriptError
の時にContentヘッダと$!を出力、とか
429428:03/11/18 12:05 ID:???
あ、あと
もしも、mod_ruby を使ってるなら、httpd.conf の中で
RubyRequire apache/ruby-run -> RubyRequire apache/ruby-debug
RubyHandler Apache::RubyRun.instance -> RubyHandler Apache::RubyDebug.instance

の変更でエラーが補足できるよ
430nobodyさん:03/11/18 12:16 ID:???
捕捉でした・・・
431nobodyさん:03/11/18 12:48 ID:???
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ですよね?
でも表示されません…(´Д⊂グスン
432nobodyさん:03/11/18 13:01 ID:???
この場合拡張子は .rbx に限られるけど、その辺は問題ない?
433nobodyさん:03/11/18 14:00 ID:???
>>432
おっと(;・∀・)

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

VirtualHostでRubyのデバッグ専用の設定を作るのが
よさそうな気がしてきた・・・
いつもApacheのエラーファイル使ってるが
435nobodyさん:03/11/20 07:10 ID:???
結局、cgiクラスとeRubyどっち使うのがいいんですか?
436nobodyさん:03/11/20 09:57 ID:???
好きなほうでいいんじゃない
PerlとPHPどっちがいいか?ってのと似てる・・・
437nobodyさん:03/11/20 10:35 ID:???
cgi.rbは、本来別にすべきHTML関連の機能が入ってるから話しがややこしくなるな。
cgi.rbのHTML関連の機能を使ってるやつなんているのか?
438nobodyさん:03/11/20 11:11 ID:???
居る訳ないだろ。
439nobodyさん:03/11/20 11:30 ID:???
eRubyの方が見やすそう
440nobodyさん:03/11/20 14:05 ID:???
eRubyはめったに使わないが、
使うときでもパラメタ取得等にcgi.rbも併用してる・・・
441nobodyさん:03/11/20 14:44 ID:???
確かにフォームのデータを受け取るにはcgi.rbが必要だね
でもそれ以外…
442nobodyさん:03/11/20 15:02 ID:???
正直、フォーム、 Cookie 、Session 等以外の機能は別のファイルに分離して欲しい。
443初心者:03/11/20 17:27 ID:???
>>434
遅レスですが、mod_rubyの方の設定でブラウザにエラーコードを
吐き出すことが出来ました!
なんとhttpd.confでmod_rubyをロードしてなかったという恥ずべきミスを
していた自分…(/ω\)

で、追加質問なんですがw、
eRubyも使えるように設定しようとしてるのですが、
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
これをhttpd.confに書けば *.rhtmlはeRubyを介してくれるんですか?
rhtmlファイルを読み込むとダウンロードさせようとするもんで…
444nobodyさん:03/11/20 18:15 ID:???
mod_ruby を--enable-eruby で作ってあればいけると思うが
445初心者:03/11/21 09:45 ID:???
>>444
もうすでにインストされてる場合、
mod_rubyのフォルダで

% make clean
% ./configure.rb --enable-eruby
% make
% make install

でOKですか?
446nobodyさん:03/11/21 11:02 ID:???
どこまで実際にやっててどこからやってないのかわからんと・・・

私は、Apache2->Ruby->eRuby->mod_ruby の順番で
インストールして、滞りなく使えてるけど
447初心者:03/11/21 13:41 ID:???
apache-1.3.27(最初から入ってた) -> ruby1.8.0 -> eruby-1.0.4 -> mod_ruby1.0.7
の順でインストール済みなんですけど…

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

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

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

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

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

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

いいえ、動けばいいんですよ。
目的と手段がごっちゃになってはいませんか?
459nobodyさん:03/11/29 18:53 ID:???
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の際のオプションで直るのでしょうか?
ご教授願います。
460nobodyさん:03/11/29 19:34 ID:???
mod_ruby.so や libruby.so のnリンク先を調べたり、
ldd してみたらどう?どれかが古いままなんだろう
461nobodyさん:03/11/29 19:49 ID:???
>>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) アリガトウ
462nobodyさん:03/11/29 19:50 ID:???
>>461
あぁ1.8を1.6としてリンクさせました。
補足です。
463初心者:03/11/30 22:44 ID:???
またお世話になります。

あれからeRubyでCGI書いてるのですが、
フォームでファイルをアップロードするとこで困ってます。

>>424のようにやってみたのですが、
undefined method `read' for nil:NilClass
readが無いって言われます。
他にもoriginal_filenameとかも無理です。

ちなみに、これをRubyでやると上手くいきます。

なぜなんですか?
464nobodyさん:03/11/30 22:58 ID:???
nil だから。nilチェック入れてデバッグするのがいいかな
ついでに、オレも1.8にして気がついたが、
cgi.params['bar'][0] にしないとアクセスできんかった気がする
465初心者:03/11/30 23:08 ID:???
>>464
そのnilチェックはどうやってやるんですか?
466初心者:03/12/01 00:19 ID:???
あぁぁ
paramsなんて無いって言われるわ
ファイル開こうとするとInsecure Operationって出るわ
Rubyなら出来ることがeRubyで出来ない…
467nobodyさん:03/12/01 01:11 ID:???
ああ、セキュリティレベルか。
適時、untaint をするとよろし

基本的に、外からもらう文字列にはuntaintが必要
468初心者:03/12/01 10:35 ID:???
>>467
file関係はまさにセーフレベルでした!
eRubyのデフォルトのセーフレベルっていくつですか?…て
これ位は自分で調べられますねw

ただ、multipart/form-dataの方が全く駄目です。
なんでreadが無いって言われるんですか…?
469nobodyさん:03/12/01 15:11 ID: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
に持ってきたのですが引数を付けると動かなくなってしまって困ってます。
どなたかアドバイスいただけないでしょうか。
470nobodyさん:03/12/01 16:29 ID:???
1.8.0になって、cgi.rb周りがけっこうかわってる
引数って例えばどこにどんなのをつけたのか?
471nobodyさん:03/12/01 17:24 ID:???
そのようですね、で一応ホントにシンプルなものを書いてテスト
していました。以下はテストのために書いたものです。

---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' しなくても引数に '=' を付けるとエラーになります。
# これは普通でしょうか?
472nobodyさん:03/12/01 18:19 ID:???
んー、、、ちょっと同じ環境作るのでバージョン教えてくれないか

あと、
begin
require 'cgi'
p CGI.new.params
rescue
puts $!
end
とかできるかのう
473nobodyさん:03/12/01 19:04 ID:???
入れて見た、、けど現象出ないねえ
eRubyがreadlineと相性悪いのは発見したが・・・(x86Solaris9)
474469(471):03/12/01 19:09 ID:???
$ 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. と出てます・・・
475469:03/12/01 19:16 ID:???
そうですか、うーんなにが悪いんでしょう・・・
それはそうと、わざわざ試していただいてありがとうございました。

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

# cvs 最新版で試したりと、もういろいろやってはいるのですが^^;
480nobodyさん:03/12/04 19:27 ID:???
素直に ruby-list に投げるとか。
481nobodyさん:03/12/05 19:22 ID:???
どうも、質問させてもらいます。
簡単なタイムアウトエラースクリプトを組んだのですが、

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です。
よろしくお願いします。
482nobodyさん:03/12/06 04:31 ID:???
>>481
1行目に
#!/usr/local/bin/ruby18
print の前に
print "content-type: text/plain\r\n\r\n"
を付け加えて481.cgiとして保存して試したら、timeoutって返ってきたよ。
483nobodyさん:03/12/06 10:09 ID:???
>>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

駄目ぽ…。タイムアウト反応してくれない…。
484nobodyさん:03/12/06 15:05 ID:???
ファイルに書いてみればどう勘違いしてるかわかるよ
485nobodyさん:03/12/06 18:31 ID:???
>>484
ん?どういうことですか?

printの出力先をファイルにしても、timeoutが反応してくれないので
無限ループから抜け出せないから見れないんですが…

それとも俺が青二才なのかな…?
486nobodyさん:03/12/06 20:06 ID:???
モジュール使ってたりして
487nobodyさん:03/12/06 20:52 ID:???
調べてるとこんなの出てきた
以下勝手に引用

>一つの ruby のプリミティブで実行してしまうので、スレッド切り替えポイントがないので
>タイムアウトにならない
>Ruby のスレッド切り替えについて、大分誤解してて、SIGALRM が来たら即切り替え、
>だと思っていたら、大抵の場合そうではなく、pending しておいて、切り替えポイントで
> pending が true なら切り替える、みたいなことをしているんだと思う。

関係あるかな?
488nobodyさん:03/12/07 06:00 ID:???
>>485
CGIとそうじゃないほうで p [RUBY_PLATFORM, RUBY_RELEASE_DATE, RUBY_VERSION]
したら何になるの?
489nobodyさん:03/12/07 10:31 ID:???
>>488
両方とも["i686-linux", "2003-08-04", "1.8.0"] でした。
490nobodyさん:03/12/07 14:50 ID:???
>>483
うちの環境では timeout したよ。
Apache(とか httpd の類)の log みたほうがいいかと。
491nobodyさん:03/12/27 06:11 ID:???
492nobodyさん:04/01/06 01:54 ID:xw1q3uSM
cgi.rbでcookieを設定すると、operaで上手く動かない時がある。
なんでだろう?
493nobodyさん:04/01/12 02:39 ID:???
例外処理で、NameErrorやZeroDivisionErrorはちゃんと捕らえてくれるのに、
TimeoutErrorやSyntaxErrorだけ察知してくれないのは何が考えられるのでしょう?
494nobodyさん:04/01/12 04:37 ID:???
>>493
リファレンスマニュアルの raise の項と、例外クラスのリストを穴があくまで見れ。
495nobodyさん:04/01/12 11:18 ID:???
>>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のデバッグモードなんですが、
それと関係ありますか?
496nobodyさん:04/01/12 16:58 ID:???
SyntaxError は eval 系内で起きる構文エラーをキャッチする目的で使ってくれ。
497nobodyさん:04/01/12 18:27 ID:???
>>496
ア、ナ〜ル
理解いたしましたw
498nobodyさん:04/01/18 16:50 ID:???
tDiaryってAAA! CAFEで使えますか?
499nobodyさん:04/01/20 20:11 ID:???
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を通すと動いてくれません。
原因がわかる方いらっしゃいますか?
500nobodyさん:04/01/20 21:29 ID:???
>>499
ディレクトリのパーミッションとかは大丈夫?
501nobodyさん:04/01/20 21:41 ID:???
>>500
あっ、それか!
とりあえずcgi-binディレクトリを777にすると色々うるさく
言われたので、その下に777のtmpディレクトリを作成し、
そこで作業をしたら出来てました!
ありがとうございました(=゚ω゚)ノ
502nobodyさん:04/02/10 02:03 ID:???
WebrickのServletとして書いたものを、できるだけいじらずにCGIとして動かしたいんですが
いいライブラリとかありますか?
503nobodyさん:04/02/10 09:52 ID:???
504nobodyさん:04/02/11 21:02 ID:???
ありがとう。助かりました。
webrickのMLのログも知らなかった。
505nobodyさん:04/02/21 06:56 ID:???
>>121を見て自分の開発中のWikiEngineを窓から投げ捨てようとしているヤシよ
yaml と pstore でググってみよ
506nobodyさん:04/02/21 12:04 ID:???
>>505
あ、俺の事だ。
とりあえず解決したよー。
アドバイスさんくす。
507nobodyさん:04/02/24 02:31 ID: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'
508nobodyさん:04/02/24 02:40 ID:???
$ 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辺りの環境では問題なかったんだけどなぁ
509nobodyさん:04/02/25 01:34 ID:???
rubyをwindows上で動かしたいのですが、apacheの設定で必要な
ものってありますか?
510nobodyさん:04/02/25 01:54 ID:???
>>509
Perl/CGI が動いているなら、Ruby/CGI もそのままいける。
511nobodyさん:04/02/25 02:07 ID:???
>>510
サンキューです。
512nobodyさん:04/02/25 06:29 ID:???
>>507
mod_ruby使ったことないんだけど
textって、mod_ruby下でもほんとにトップレベルにある?
その変な無名モジュールに包まれてるみたいだけど。
513nobodyさん:04/02/25 16:51 ID:???
仕様書を読む気力が無いのですが、良かったら教えて下さい。

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'}){''}
ならオッケイなんですが、これで正しいの?
ボディはいつも返さないといけないのかな?
514nobodyさん:04/02/25 17:13 ID:???
>>513
print CGI.new().header({"status"=>"NOT_FOUND"})
515nobodyさん:04/02/25 22:13 ID:???
>>514
あ、なるほど。CGI#out にするのが悪かったのね。サンクス。
516507:04/02/26 01:23 ID:???
>>512
レスどうも
無名モジュールとかの用語がわからんのでググってみましたが
まだよくわかってないです
http://www.google.co.jp/search?q=ruby+%96%B3%96%BC%83%82%83W%83%85%81%5B%83%8B+%83g%83b%83v%83%8C%83x%83%8B&num=50&hl=ja&ie=Shift_JIS
>トップレベルで定義されたクラスやメソッドなどはObjectの下に定義される代りに、
>その無名モジュールの下に定義されます。
とあるけど???です
1.6の頃とどう変わったんだろう?
ruby-1.6.7-0vl5
eruby-0.9.8-0vl2
mod_ruby-0.9.7-0vl1
apache-1.3.27-0vl3
だと問題ないんだけどなぁ
517nobodyさん:04/02/26 02:49 ID:???
力業。
Kernel.module_eval {
def text
p "text"
end
module_function :text
}

「トップレベル(に見える場所)で def する癖はやめましょう」が
一番の正解だと思います。main での def は特殊な予感。
518nobodyさん:04/02/26 10:06 ID:???
module_function はいらなかった。
Kernel.module_eval {
 def text
  p "text"
 end
}
519507:04/02/27 17:30 ID:???
>>518
確かにエラー出なくなりました。ありがとうございます。
普通にerubyでも動くんで
小さいスクリプトはこれでいこうと思います。
520nobodyさん:04/02/28 08:06 ID:???
>>516
ぐぐった中で見つけてますね。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/29112
http://slashdot.jp/journal.pl?op=display&uid=7790&id=151929

mod_rubyの仕様のようですが、>>517に同意です。
せっかく名前空間を汚染しないための措置なのに、
むりやり>>518みたいなことを全部のスクリプトでやるのは
気持ち悪いし、後で見たときわけわからなくならない?
521nobodyさん:04/02/28 08:19 ID:???
>>505
Ruby 1.8.0 に添付されてた yaml なんだけど、
自己参照の多い、ちょっと複雑なArrayとかがまともに保存できなかったので
使うのをyamlことにしたんだけど、新しいのが出てるのかな?
522nobodyさん:04/02/28 09:13 ID:???
忘れてた。Kernel に定義するのは危険すぎです。
mod_ruby だと高速化のためにプロセスを使い回すわけだから、
タイミングによっては def text してないスクリプトで text が
呼べてしまう現象が起きてしまうかも。
こういうのは不可解なバグにつながる危険があるから、
本当におすすめできません。

>>521
まともって??

とりあえず 1.8.1 使いましょう。
523nobodyさん:04/02/28 22:03 ID:???
>>521
bug report 投げれ。
524nobodyさん:04/02/28 23:47 ID:???
windowsでrubyをc直下にインストールしたけど、
CGIスクリプトの一行目は
#!usr/local/bin/rubyでいいのでしょうか?
525nobodyさん:04/02/29 00:11 ID:???
>>524
なにをどうインストールしたのでしょう?

もし ruby-1.8.1-i386-mswin32.zip を C:\ に展開したのでしたら、
c:\bin\ruby なので #!/bin/ruby になります。
526nobodyさん:04/02/29 01:08 ID:???
>>525
ありがd
527507:04/03/02 00:09 ID:???
>>520,522
あーKernel.module_eval は駄目なんですか
うーん、最初のRubyRequire cgiに戻しました
mainでdefしない、は正直厳しいんです。
1.6->1.8変更の
>Module#include [change]
>トップレベルの include は、第二引数に true を指定した load でロードされるスクリプトのもとでは
>モジュールの機能を self に extend するように変更されました。
ってのが原因?
load(file,true)自体の説明は1.6,1.8とも変わってないんで
528nobodyさん:04/03/02 00:43 ID:???
>>527
mod_ruby 側でない?

書き換え量が気にならないなら、こうするのがベターです。
module Func
 def text
  p "text"
 end
 extend self # おまじない
end
Func.text
529nobodyさん:04/03/02 06:41 ID:???
>>528
module_function するのとどう違うんだっけ?
530nobodyさん:04/03/02 10:31 ID:???
>>529
module_function は private と同じで、指定したものだけか、
もしくはそれ以後に def されたものだけ公開します。

それに対して extend self は全て公開します。
関数群の名前空間に使うのならこちらのほうがお手軽です。
531nobodyさん:04/03/04 02:10 ID:???
最近 tDiary を使い始めたのですが、
recent_list.rb で表示されるタイトルが
a.rb を使って <%= a %> の形式で書いていると
そのままで変換されません。
どこをどう変えれば良いのでしょうか?
Ruby が全然読めない私にも救いの手を・・・
532nobodyさん:04/03/04 04:36 ID:???
@conf['apply_plugin'] = true
533531:04/03/04 17:33 ID:???
>>532

それで上手く行きました。
ありがとうございました。
534507:04/03/05 01:14 ID:???
>>528
どもです。色々あるもんだなぁ
後学の為の課題とします。
535nobodyさん:04/03/06 17:37 ID:C+c5xFRd
MacOSX(Panther)でmod_rubyを使用してます。

Apache: 1.3.29
mod-ruby: 1.0.7
ruby : 1.6.7(fink)

スクリプト中でアーキテクチャ依存のモジュールをrequireすると
エラーになります。

例えば

#!/sw/bin/ruby

require 'nkf' # for test

require 'cgi'
cgi = CGI::new

cgi.out() {
"<html><body>test</body></html>"
}

をhoge.rbxとして保存してアクセスすると
536nobodyさん:04/03/06 17:39 ID:C+c5xFRd

/Users/hoge/Sites/honesty/hoge.rbx:3:in `require': (null) - /sw/lib/ruby/1.6/pow
erpc-darwin6.6/nkf.bundle (LoadError)
from /Users/hoge/Sites/honesty/hoge.rbx:3
from /sw/lib/ruby/1.6/apache/ruby-run.rb:70:in `load'
from /sw/lib/ruby/1.6/apache/ruby-run.rb:70:in `handler'
from ruby:0

と怒られます。
なお、同じスクリプトをhoge.cgiとして保存してCGI経由でアクセスすると
エラーは起こりません。

537nobodyさん:04/03/06 23:59 ID:???
よくわからないけど、パーミッションはだいじょうぶ?
mod_ruby の場合は apache ので動くからね。
538535=536:04/03/07 08:34 ID:xKL6fKn7
>>537
同じ字面のスクリプトがCGIで動くので大丈夫だと思います。
hoge.rbxは755, nkf.bundleは555(ownerはroot)です。

あと、*.rbのモジュールは問題なくrequireできますし、
同じスクリプトをLinuxに持っていっても問題なく動きます。
539nobodyさん:04/03/08 07:46 ID:???
>>530
産休
540nobodyさん:04/03/12 10:37 ID:XHgrIkQV
CGIKitに似たフレームワーク登場。というかWebObjectsのパクリ。EOFもまねている。
http://www.starware.one.pl/software/sws/index.html
http://www.starware.one.pl/software/sws/doc/docbook/index.html

だれか使ってみて。


541nobodyさん:04/03/12 16:04 ID:???
>>541
おおーー。面白そう。早速試してみよう。
542nobodyさん:04/03/12 17:59 ID:???
>>540

EOFにあたるDBライブラリもリンクしときます。
http://www.starware.one.pl/software/sds/

まだ試してはいないんだが、DBライブラリのほうはコンパクトにまとめてあるみたいだね。
SWSと組み合わせて使うのが前提なのかもしれないな。
543541:04/03/12 19:58 ID:???
examples試してみたけど、感触いいねー。
544nobodyさん:04/03/12 20:34 ID:lAf/ivCV
>>540

くだらないと思った。

Javaじゃないんだからそんなフレームワークとかなんとかってやめようよ。

普通に組むのが一番いいんだよ。
545nobodyさん:04/03/12 22:17 ID:???
普通って何?
546nobodyさん:04/03/12 23:16 ID:???
CGIライブラリ使って、じかに params いじってほげほげするんじゃないの?

それですむ場合も多いとは思うけど、やっぱり仕事とかで大量のページ遷移を
作らなきゃいかんときは、フレームワークあったほうが便利だわな。

究極的には自分用(もしくは会社用)フレームワークを自作すればいいんだが。
547nobodyさん:04/03/13 07:00 ID:???
楽ができれば何でもいいさ。
548nobodyさん:04/03/13 14:52 ID:???
>>546

CGIKIT見りゃ分かるけど、ウェブ用のフレームワークって手間かかるだけで無意味

作るものに合わせて土台を作っていくのが普通だよ あらかじめ作るフレームワークは無駄なだけ
549nobodyさん:04/03/13 18:44 ID:???
>>548 の家には使えなくなった車輪がいっぱい転がってます。
550nobodyさん:04/03/14 14:14 ID:VM4bxA2x
>>549

過去ログに車輪の再発明とかでてるけど、
Strutsやらなにやらは古タイヤの再利用くらいだとおもう。

ほしい物に似てるけどちょっと違うんだなあ。
だから車体を古タイヤに合わせて設計してみました、みたいな。

似たようなもの毎回作っちゃってもいいんじゃないの?
設計の再利用ってもう流行ってないのかな。
実装なんて再利用しようとても毎回しっくりこないんじゃない?

これ、JBossというかEJBのときにも思った。
既存の道具生かすためになんか本体側で無駄な苦労してるなあと。
551nobodyさん:04/03/14 17:50 ID:???
>>550
そのあたりはそれこそ、その時々の事情や状況によるものなので、
フレームワークが役立つときもあれば、役立たないときもあるのは当たり前なので、
使う人が勝手にすればいいじゃん。

なので、>>544 よ、君の意見は確かに君にとってはもっともかもしれないが、
「くだらない」かどうかは人によって違うので、他の人に対して「やめよう」と言う必要は
無いんじゃないかな? もちろん、何言おうが君の勝手だけれど。







で、この話は終わりだと思うのだが。
552nobodyさん:04/03/14 22:44 ID:???
↓じゃ、次の話題どうぞ。
553nobodyさん:04/03/15 06:15 ID:???
>>540
EOFの真似というのでかなり興味をそそられるのだが、
この手のもので、どれが一番広まりそうかな。

大きいアプリ作っている人は、皆たいてい「自分用フレームワーク」を持ってると
思うし、この手の共通フレームワークに移行できたら楽かなと思うんだろうけど、
いざ移行するとなると、こいつとなら心中しても悔いなしという決心が要るよなあ。
554nobodyさん:04/03/15 08:53 ID:???
cerise が実装を結構すすめてる。
J2EE をお手本にしたアプリケーションサーバ( + フレームワーク)。
555nobodyさん:04/03/15 09:34 ID:???
>>553
EOF って、Enterprise Object Frameworks っていうやつなのかな?

ググってみたけど、あんまり分かりやすく説明しているところが無かったな。
誰か簡単に説明してくれ。もしくは、良いページを紹介してくれ。
556nobodyさん:04/03/19 14:28 ID:???
なんかアプリケーションサーバとかフレームワークといわれてもな、
結局作者しか使えないフレームワークになりそう。(数年後にははっきりすると思うけど)

rwikiの実装見ると、drubyでさらっと作ってる印象。
実はこれが正しいエンタープライズなシステムの作り方だと思うよ。
557nobodyさん:04/03/19 17:43 ID:???
>>556
そうだと思うけど、デーモン設置禁止のウェブアプリ作らされるところが多いからね。
558nobodyさん:04/03/20 12:47 ID:???
大きいもの作る場合は、なんかフレームワークないとつらいでしょう。
いちいち手で書くのが好きならいいんだけど、車輪の再発明だもんなあ。
559nobodyさん:04/03/21 01:38 ID:???
ウザいといえば
るびきちさんの言動
560nobodyさん:04/03/21 13:50 ID:???
>>556
おまえが理解できない&使いこなせないだけだろ。
561nobodyさん:04/03/21 14:01 ID:???
11:レッテル貼りをする
562nobodyさん:04/03/22 13:17 ID:???
Ruby/Divはどうですか。
漏れはウェブシステムのインターフェースとしては一番意味があるフレームワークだと思うんだけど。
(他のフレームワークは申し訳ないけど、手間かかるだけであまり意味がない)
563nobodyさん:04/03/22 14:35 ID:???
Div & Tofu 使ってみたいんだけど、
ドキュメント (チュートリアル的なもの) が見当たんないので手が出せないでいます。
564nobodyさん:04/03/22 15:20 ID:???
>>562
意味がある、ないを具体的にお願いします。
煽りじゃないよ。何を求めるかによってフレームワークにも合う合わないがあるからさ。
565nobodyさん:04/03/23 08:55 ID:???
>>563
同じく。何ができるのか、あの紹介ページだけではよくわからん。
箱入り娘を出すのは難しいということだけはわかった。w
566nobodyさん:04/03/23 15:16 ID:h4hJAwq6
rubyでcgiを勉強しようと思ってます。rubyは大学で一応勉強しました。
rubyでcgiを勉強するのにおすすめの本ってありますか?
今のところ候補としては

・Ruby de CGI オーム社 堀川 久
・RubyによるCGIプログラミング SCC books 三並 慶佐

です。
567nobodyさん:04/03/23 16:53 ID:???
>>566
どっちも薦めん。tDiary とか読め。
それか、オライリーのCGI本、もしくは Rubyアプリケーション何とか、とか。


それよりも、大学ではどんな風にRubyを教えてるのか、それを教えてくれ。
568nobodyさん:04/03/23 19:31 ID:???
Divが一番詳しく載ってるのは自分が調べた範囲ではDRuby本かな。でも説明されているコードのバージョンが古いのであとはソース嫁とかそんな世界。
569nobodyさん:04/03/24 04:59 ID:???
>>563

Tofuは使ったことがありますが、RWikiでの説明などで大体わかりました。
Divについては実際に使われているもののソースを読むのはいかがでしょうか。
たとえばdivipとか。

divip - Div IP Messenger
http://divip.sourceforge.jp/

で、divipのMLを読んだらUNIX USERのバックナンバーに
Divの解説記事があるとのこと。

[divip-list:7] UNIX USER2003-09
http://lists.sourceforge.jp/mailman/archives/divip-list/2003-August/000006.html
570nobodyさん:04/03/24 20:00 ID:???
>>568 >>569
dRuby 本は積ん読になってました。読まんと。
divip と UNIX USER もチェックしてみます。

あと、ついでといってはなんですが、
Webrick のドキュメント (チュートリアル的なもの) で良さそうなのありますか?
webrick.org にいくつか使用例がありますが、
フォーム (HTTP POST) を使う例が無いのでそこらへんからつまずいてます。
571nobodyさん:04/03/24 22:39 ID:???
>>570
他のドキュメントは知らんが、
どういう風に躓いたか教えてくれたら、ちょっと考えてみるよ。

期待はしないでほしいけど。
572nobodyさん:04/03/29 09:30 ID:3mAZfbN2
Rubyっていいのかな〜?
ちょっと勉強してみようと思うんだけど、お薦めの本とかあります?
拙者はC言語が分かる程度です。
573nobodyさん:04/03/29 14:03 ID:JHAif1f9
>>572
たのしいRuby
574nobodyさん:04/03/30 02:15 ID:???
>>570
Rubyのソースにある sample/webrick/demo-app.rb とか。
GETとPOSTのサンプルだと思います。
575nobodyさん:04/03/30 02:40 ID:???
>>574
おおお!ありがとうございます。私の目は節穴でした。

言い訳ですが、FreeBSD の ports で入れると、
こういう Ruby 標準添付になった物のサンプルやドキュメントが
ごっそり無くなってる (インストールされない) んですよね。
まだ標準添付にならずに独立してた頃の方が、
そのへんがインストールされる分、良かった。
576nobodyさん:04/03/30 03:09 ID:???
>>575
sample/webrick以下のファイルは、1.8.1リリース後に[ruby-list:39029]が
きっかけとなって追加されたみたいです。

http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs-2004-01-07#a21.3a22.3a19
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39029

今後portsのrubyが更新されればこの辺のファイルもインストールされる、
と思います。多分。
577572:04/03/30 08:18 ID:???
>>573
サンクス。
本屋、行ってみます。
578nobodyさん:04/04/11 02:08 ID:???
perlのCGI並に動けば正義みたいだなあ。
perl CGI同様格好のセキュリティホール(攻撃対象)になりそうな予感。
579nobodyさん:04/04/11 02:33 ID:???
>>578
“perlのCGI並に「動けば正義」みたいだなあ。”
という意味かな?

言語は何を使っても、きちんとプログラムを作らなければ
穴が出来るのは同じだと思うのですが。
580nobodyさん:04/04/11 03:58 ID:???
わざわざperlじゃなくてruby使うくらいなのに、そのきちんと穴のことも考えようとはならずにperlと同じになってしまっているのは志が低いよ。
なんとなく人と違うことをしたがるけどほぼ同じ事やってるプチあまのじゃくな人が好む言語ですか?
それならperlでいいじゃないかと正直思う。
581nobodyさん:04/04/11 04:22 ID:???
いや、どっちでもいいじゃん。
582nobodyさん:04/04/11 04:56 ID:???
>>580
穴が出来るかどうかと、出来やすいかどうかとは違う話です。
rubyの方が出来にくいと私自身は感じますが、rubyに親しんで無い人が作れば簡単に穴は出来ます。
それはどの言語でも一緒でしょ。

っていうか、そう思うなら自分で「CGIで穴が出来にくい」言語を作れよ。
どれだけ実用性とバランスが取れた言語が出来るか、見ものだな。
583nobodyさん:04/04/11 19:08 ID:???
漏れはperl並ならすなおにperl使うよ。面倒だし。
メリットないならrubyでCGIやる必要ないし。
584nobodyさん:04/04/11 20:36 ID:???
慣れてる言語使えばいいだけの話でしょ。
585nobodyさん:04/04/11 21:58 ID:???
お前ら釣られ過ぎ。
586nobodyさん:04/04/11 23:04 ID:???
世の中には釣られるのが好きな人もいます。
587nobodyさん:04/04/12 01:50 ID:???
漏れは釣りのほうが面白いかな。
ポイントにエサ垂らしてみて食いついてきたらキターって感じ。
デバックしてるときのブレークポイントでうまく捕まえられたときの嬉しさに通じるところがある。
最近は魚も賢くなってあきらかにエサ垂らしても食いついてこないので戦略的に釣りをするところが楽しい。
588nobodyさん:04/04/12 05:59 ID:???
いや、Rubyを使う漏れから言わせると、
Perl使い続ける人は偉いと思うですよ。

Perl使う人は、仕事人という感じがしてる。
歴史が長いから、ユーザが多いからという理由だけてであれを使いつづけられるのは凄い。
コードに好き嫌いは無いというか、いい仕事をする、いいコードを書くというエゴから解放されていると思う。

Ruby使う人は激しく怠け者。
589nobodyさん:04/04/13 22:38 ID:???
ほんと、Perl使い続ける人は偉いよ。
農作業なんかも得意だと思うね。
590nobodyさん:04/04/20 15:47 ID:Ea+/kdHD
「基礎から学ぶWebデーターベースプログラミング」
で書かれている内容はWindows+Cygwinの環境で試すことができますか?
591nobodyさん:04/04/20 23:30 ID:???
できるんじゃない。
Cygwin 上の DB がパフォーマンス悪いくらいのもので。
592nobodyさん:04/04/21 01:08 ID:???
今なら無料のSFUでがんばるべきのような。一応UNIXだよ。
593nobodyさん:04/04/21 09:39 ID:???
SFUを知らなかったのですが、以下のサイトを読む限り
cygwinの方が私には良さそうです。
ttp://pcweb.mycom.co.jp/special/2004/sfu/
594nobodyさん:04/05/06 00:28 ID:wtWitys7
print "dump:#{title}\n#{s.unpack(\"H*\")[0]}\n"

この構文で warning: escaped terminator '"' inside string interpolation
と、エラーがでるんですが、原因はなんですか?
595nobodyさん:04/05/07 22:30 ID:OJ0mxpcs
>>553
わしは、 TapKit に期待してます。

http://www.spice-of-life.net/tapkit/index_ja.html
596nobodyさん:04/05/08 01:50 ID:???
>>594
お使いのRubyが1.8.0以降でしたら、以下のページの記述が当てはまるかも。

ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=changes.1.8.0.ja

以下引用。適当に改行してます。

文字列の式展開 (expression interpolation in strings)
Now arbitrary statements are allowed inside #{} interpolation without escapes.
In other hand, they can no longer access to variables defined in eval.
#{} の中で、任意の文がエスケープなしで記述できるようになりました。
一方、evalの中で定義された変数にはアクセスできないようになりました。
597nobodyさん:04/05/08 13:41 ID:???
>>580
PerlとJavaを比べたらPerlのほうがいいと思うよ。しかし、PerlとRubyでは、漏れの場合はRubyのほうがいい。
598nobodyさん:04/05/13 14:13 ID:???
http://www.rubygarden.org/ruby?HtmlTemplates

ここに色々なtemplateが紹介されてますけど、
皆さんはどれを使ってますか?
使った感想やお勧めがあったら教えてください。
出来れば理由も。

私はtempuraを使って見ようかなと思ってます。
理由は
http://www.imasy.or.jp/~hisa/tempura/tempura.ja.html
を読んで納得が出来たので。
599nobodyさん:04/05/14 16:45 ID:???
Rubyの長所って何だよ
600nobodyさん:04/05/14 17:07 ID:???
それを教えてあげたいのはやまやまだが、ここには狭すぎて書けない。
601nobodyさん:04/05/14 21:06 ID:???
>>598
Amrita
・多少重くても気にしない
・HTML/XML 以外には使わない
・テンプレートにコードは一切入れたくない
602nobodyさん:04/05/20 12:28 ID:NShBOzWM
PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!


603nobodyさん:04/05/20 16:28 ID:cgjPprlD
>>602藻前それ他のスレにも這ってるだろ
マルチぼけがぁああああああああああああ!!
604nobodyさん:04/05/23 23:41 ID:???
Hikiのプラグインはどのように実行されるのでしょう?

def con(str1, str2)
str1+str2
end

普通のRubyだと、
puts con(con("h","o"),"ge") #=>"hoge"
とメソッド内の引数にメソッドを書いてもOKですが、

hikiで{{con(con("h","o"),"ge")}}を書くと、
Hiki::PluginException(wrong number of arguments(3 for 2)): con
が出ます。
605nobodyさん:04/05/24 01:05 ID:???
>>604
Hikiのプラグインの引数は単に「,」で適当にちぎって
渡すだけで式として評価されるわけではない。ただし
数っぽく見えるものは数に変換したり、"..."や'...'
は外側の「"」「'」をはぎとったりはしてくれたかな。
606nobodyさん:04/05/24 01:28 ID:???
>>605
では、
con(con("h","o"),"ge")}
のようなことをやりたいときはどうすればいいですかね?
607nobodyさん:04/05/24 08:42 ID:???
文字列をevalするプラグインでも作るとか?
うかつに用意するとセキュリティホールになりそうだが。
608nobodyさん:04/05/24 08:55 ID:???
確かにXSS対策が必要ですね。
609nobodyさん:04/05/24 15:45 ID:Nhm51Qmv
Windows環境でGDを使いたいのですが、どうしたらいいんでしょうか?
Ruby本体はruby-1.8.1-i386-mswin32.zipを利用しています。
610nobodyさん:04/05/30 15:58 ID:???
これか。

【オフィシャル】Rubyはこのまま消えていく言語にノミネートされました 【サイト消滅】
http://pc5.2ch.net/test/read.cgi/prog/1085829204/
611nobodyさん:04/06/28 21:24 ID:???
hikiアップデートしないとかなりまずい?
612nobodyさん:04/06/28 21:39 ID:???
jailでも使ってんでない限り、かなりまずー。
613nobodyさん:04/07/05 05:17 ID:???
amritaのサイトどこいった〜
614nobodyさん:04/07/05 07:05 ID:8NRD/g5j
>>613
ほんとだよ。だれか知らないか。
615nobodyさん:04/07/25 10:20 ID:lhtgOqn2
>>614
http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/104977

> he is working on restoring the web pages.

ってあるからそのうち復活するんじゃないすかね、きっと。
616nobodyさん:04/09/06 20:32 ID:yBVAikae
amrita復活age
617nobodyさん:04/10/08 03:24:16 ID:???
すっげw 1ヶ月とかレスついてないしw
Ruby人口って激減してるの?
618nobodyさん:04/10/08 11:01:15 ID:???
単にRubyでCGIって人がいないんだろう
CGIならPerl、というのが結局定着してるし。
619nobodyさん:04/10/12 14:03:12 ID:???
単にこのスレの存在を知らないのだと思う。
620nobodyさん:04/10/12 20:39:31 ID:???
というか話すネタがない。
621nobodyさん:04/10/18 04:58:49 ID:???
CGIKitにてファイルアップロード後に別ページを表示させるにはどうしたらいいのでしょうか。
単なるフォームの場合はわかるんですけども。
622MoonWolf ◆BwMoonWLvE :04/10/18 21:46:47 ID:???
>>621
ソースをアップしてくれたらアドバイス出来るかもしれない。
普通はLocationヘッダを吐くか、<meta http-equiv="Refresh" content="10;URL=http://example.com/">
みたいなHTML吐いてリダイレクトさせる。
623nobodyさん:04/10/18 22:01:58 ID:MFPrIGvP
>>622
CGIKitの場合は
response.set_redirect(飛び先のURL)
ですよ。

ちなみにファイルアップロードの時って違いあるんだっけ?
624nobodyさん:04/10/19 01:06:57 ID:???
MoonWolfさん、623さん、ありがとうございました。
お答えいただいた内容をもとに解決することができました。

625nobodyさん:04/11/11 16:59:35 ID:???
CGIKitとSWSを比べてるんだが、
CGIKitはWebObjects風に<CGIKIT>タグをtemplateに埋め込むが、
SWSは通常のHTMLタグにsws属性で指示を埋め込めるらしい(Tapestry風か)。

通常タグの方が、templateのデザインにHTMLエディタが使えていいんだが、
CGIKitとしては「プリプロセッサでやってくれ」という立場のようだ。
http://www.freeml.com/message/[email protected]/0000480

というわけで、SWSの方が筋が良さそうなんだが、誰か使ってる奴いる?
626nobodyさん:04/11/11 23:34:30 ID:???
>625
やっぱりTemplateEngineは自作でしょ
627nobodyさん:04/11/12 11:58:22 ID:???
いろんな用途に使える車輪はないのか
628nobodyさん:04/11/12 23:41:20 ID:???
NoraのWeb::Templateがるびまに簡単なチュートリアル載ってて
割と簡単だったので今書いてるプログラムに使う予定。

ruby-listのがちょっとアレだけど、まあ。
629nobodyさん:04/11/13 01:24:13 ID:a20D0PWx
昔どこかのサイトでテンプレートエンジンの速度の比較データを見たことがあるんだけど検索してもみつからない。
どこのサイトか誰か知りませんか?
630nobodyさん:04/11/14 23:15:48 ID:???
>>617
最初っから rubyでcgi書いてるやつそんなにいないから。
631nobodyさん:04/11/22 04:45:41 ID:???
今日,mod_ruby1.2.4を導入してみたのですが.
print "content-type: text/html\r\n\r\n"
# htmlをプリント
のようなcgiがまともに動きます.

ttp://arika.org/doc/debuan.mod_ruby.html.ja
ここを見る限り,
print "HTTP/1.1 200 OK\r\n"
などを書いてからじゃないと駄目くさいですが,
これはmod_rubyが使われていないって事でしょうか…?
632nobodyさん:04/11/22 06:06:28 ID:???
自己解決しました.
サンプルのhttpd.confのままだと/rubyにrubyスクリプト置かなきゃ駄目なんですね…
恥ずかしい…
633nobodyさん:04/12/09 01:38:09 ID:???
SWS 使ってみたいが、日本語の情報なさすぎ。
634nobodyさん:04/12/11 01:20:49 ID:???
影舞入れてみた。
ちょっと感動した。
っても、BTS使おうよ!!とこれから会社の連中に頼み込まねばならんのだがorz

# どうせならDB、Firebirdにも対応させたいなぁ
635nobodyさん:04/12/11 09:19:02 ID:???
影舞でToDoの管理を始めてみた。
なかなか便利だ。
っても、おれのToDoがバグ呼ばわりされてしまうのがorz

# 最初の報告者の表示を消したいなぁ
636nobodyさん:04/12/15 22:22:22 ID:GHNVBmM1
PerlとRuby両方で掲示板作りに挑戦してみたけど、趣味でやるならRubyの方が楽な気がします。
30歳を超えたサラリーマンの日曜プログラマは作りかけのスクリプトを一ヶ月ぶりに開くなんてザラ。
この歳になると記憶力も相当に落ちているので、コードが読みやすいことは切にありがたいのです。
637nobodyさん:04/12/31 22:25:51 ID:???
それではみなさんよいお年を。
来年はCGIクラスが使いやすくならないかな。
638637:04/12/31 22:35:02 ID:???
>>637
などと思っていたら……

RAA - cgi_adjuster
http://raa.ruby-lang.org/project/cgi_adjuster/

というのがありました。

http://www.nslabs.jp/rubycgi-18compat.rhtmlを読むと「とぼけた失敗」
「Ruby 1.8.1でもRuby 1.8.0と非互換な変更が入っている(ふざけているの?)」
などと、そうとうお怒りのご様子。
639nobodyさん:04/12/31 23:46:34 ID:???
はたしてrubyはアプリケーションの基盤として使用に耐えうる言語なのかどうか。
これは開発者のメンタリティの問題だが。
640nobodyさん:05/01/01 00:46:57 ID:???
cgi.rb の仕様が間違っていたのは火を見るより明らかなのに、
いつまでも cgi.rb なんか使い続けてる方が間違いでしょう。
641nobodyさん:05/01/01 14:50:38 ID:???
Rubyの標準添付以外に、まともなCGIライブラリ実装ってあるん?
標準添付のがまともだと言う気はさらさらないが。
642nobodyさん:05/01/01 18:47:11 ID:???
今熱いのはRuby on Railsだな。
643nobodyさん:05/01/01 21:09:57 ID:???
Nora かな。

とか言うと荒れそうなのでやめとく。
644nobodyさん:05/01/02 06:43:52 ID:???
WEBrick::CGIはどうよ? 既に標準添付されているし、
WEBrickのServletとしてもすぐに使えるように作れるし。
645nobodyさん:05/01/02 15:28:22 ID:???
>644
え、標準添付? ……うぉっ、ほんまや。
たまにはmake installしたあとlib以下ものぞいてみるもんですなorz
つらつら眺めてみるです。さんくー
646nobodyさん:05/01/03 09:59:01 ID:???
ここにも貧弱なRubyドキュメントの弊害が
647nobodyさん:05/01/03 15:10:16 ID:???
リファレンスには徐々にドキュメントが増えているので、
1.8.3が出る事には改善されていると思いますよ。
……などと他人事のように書いているのが間違いなのか。
648nobodyさん:05/01/04 08:17:56 ID:Y50UuVB0
cgi.rbよく使ってるけど、どのへんの仕様が間違ってるの?
他に乗り換えなきゃいけないくらい深刻?
649nobodyさん:05/01/05 00:21:46 ID:???
phpに対するrubyの優位点ってありますか?
あるとしたらどんな点ですか?
650nobodyさん:05/01/05 01:27:35 ID:???
>648
638で出てる辺りは結構イヤソな気も。
651648:05/01/05 07:58:47 ID:ZQKhbklS
なるほど互換性の問題ね。
たしかにそれはある。


>>649
CGIがRubyの書式で気持ちよく書けることでしょ。
またいったん覚えたらRubyの方がいろいろと他の用途にもつぶしがきく。

でもウェブ技術に限定すれば、ユーザーも多く高速なうえサーバー負担も軽いときているPHPには到底及ばん罠。
652nobodyさん:05/01/05 15:29:45 ID:???
PHPって高速なん?
653nobodyさん:05/01/05 22:26:57 ID:???
>652
PHP使うときは99%mod_phpで動かすからなぁ。
mod_perlやmod_ruby使えば……むー、どうなんだろう? いいベンチの取り方ないかなぁ。
(っても、まずmod_php、mod_ruby(とついでにmod_perl)使えるようにして
各言語でカリカリにチューニングしたコード書かなきゃならんよなぁ。マンドクセ)
654nobodyさん:05/01/06 00:27:16 ID:???
ただmod_rubyは専用鯖か自宅鯖限定になっちゃうからな・・

ウェブ用途で使いたい奴の大半は共用鯖で使うこと考えてるわけだしなぁ
655nobodyさん:05/01/06 00:42:36 ID:???
なんでphpってmobで動いてるのが多いの?
656nobodyさん:05/01/06 19:27:54 ID:???
てゆうか、サーバーのモジュールでないピーエイチピーインタプリタなんてあるの?

ウェブに特化して設計してあるから、仮にあっても汎用的なスクリプト言語としてはまだまだ非力だと思うがなぁ。
657nobodyさん:05/01/06 20:24:46 ID:???
>>656
あるよ。
ちょこっとテストしたいときとかに、コマンドラインで、
% php hoge.php
みたいに試せるので便利。
ただ、それ単体で実用しようという気にはなれないけど。
658nobodyさん:05/01/07 22:10:24 ID:???
>>656
CLI(Command Line Interpreter(?))ってのがあって、ソースからコンパイルするとそれが/usr/local/binとかにインストールされる。
それとは別にCGI実行用のコマンドも作れるのだが、コマンドラインからスクリプトを実行しただけで必ずHTTPヘッダが出力されるからいやーん。

Webプログラミングから入った人が簡単なコマンドラインスクリプトを書くには、やっぱりCLI版のPHPがいい。おれはよく使う。
659656:05/01/08 12:13:44 ID:???
へえー。
結構何でもできるとなるとユーザー多いから結構なコミュニティに発展しそうだね。
ピーエイチピーはスルーしない方がいいね。
660nobodyさん:05/01/08 12:43:12 ID:???
素直にperlで書け
661nobodyさん:05/01/08 12:56:05 ID:???
だってperl_mob入ってるサーバ少ないんだもん。
662nobodyさん:05/01/08 13:58:42 ID:???
perl_mob とかいわれると LYNCH MOB とかを連想してしまう。

ところで mob とか perl_mob とかって一体何?
663nobodyさん:05/01/08 14:12:10 ID:???
mob_perlだった、スマソ。
apachのモジュールとして動いてるって事。>mob
664nobodyさん:05/01/08 14:14:51 ID:???
英語って似たような字が多くて難しいよな。
665nobodyさん:05/01/08 14:16:31 ID:???
ごめんね、本当にごめんなさいorz 顔から火が出るほど恥ずかしいです。
moduleでしたな。。
666nobodyさん:05/01/08 16:15:18 ID:???
WEBrickでのセッション管理にはTofuを使うのが常道?
もうちょっとマシなのは ないんすかね。
あ、WEBrick::CGI使うのを想定してます。
667nobodyさん:05/01/09 09:10:41 ID:???
>>666
Tofuが常道とは思いませんが、他にセッション管理のみを扱うライブラリは
見当たらなかったような。もしくはフレームワーク(CGIKitとかrailsなど)を使うとか。

ところでTofuだと何か問題がありました?
668nobodyさん:05/01/09 20:50:59 ID:???
Tofuを使うと、
Tofu::sessionクラスを継承したセッションオブジェクトの中に
全てをくるまないといけないので、自前のクラス設計とコンフリクトしそうで嫌なんです。
あとからセッション管理を追加するときに大幅にクラス設計見直す必要がありそうだし。
cgi/sessionみたいに軽くつかえる奴が欲しい。
669nobodyさん:05/01/10 09:17:19 ID:???
>>668
http://moonrock.jp/~don/ruby/webrick/session.rb
やっつけですが、CGI::Sessionを移植しました。
WEBrick::Session#updateを明示的に呼び出さないと
セッション情報が更新されないという中途半端な状態ですみません。
http://moonrock.jp/~don/ruby/#WEBrick3a3aSession
に動作サンプルもあります。
670669:05/01/10 10:08:44 ID:???
>>669
バグを修正して、
WEBrick::Session#updateは呼び出さなくても動作するようになりました。
671666 = 668:05/01/11 03:03:29 ID:???
>669
おおー。こういうのが欲しかったんです。
ありがとございますん。

さらに欲をいうと、こいつを、WEBrick::CGIだけじゃなくてServletでも使いたいな、と
思うわけですが、それは無謀?

ファイナライザがそのまま使われているようなので、
そのままじゃ使えないとは思いますが。
672669:05/01/11 06:42:23 ID:???
>>671
ファイナライザの代わりに、WEBrick::Session#close(またはupdate)を
明示的に呼び出すことでデータを更新できます。
http://moonrock.jp/~don/ruby/#WEBrick3a3aSession
にサンプルを増やしました。
673nobodyさん:05/01/11 17:22:13 ID:lK4o2i8P
掲示板作ってます。
セッションって確立しないとどうなるの?
674nobodyさん:05/01/11 23:05:52 ID:???
確立しないとCGIの作りにもよりますがユーザー権限を乗っ取られる場合もあります
675nobodyさん:05/01/11 23:21:34 ID:???
???
676666:05/01/12 01:56:04 ID:???
>>672
ああ、そうか。面倒なこと考えなくても、自分で一発close呼んじゃえばいいんですね。
了解です。感謝。
677nobodyさん:05/01/12 13:02:40 ID:???
>>674
それは「確立したセッションが奪われたら」の話では?
678nobodyさん:05/01/12 15:16:06 ID:???
> セッションって確立しないとどうなるの?
あるHTTPリクエストと、別のHTTPリクエストが、同一のユーザによる一連の操作であるかどうかがわからない。
ただそれだけ。
679nobodyさん:05/01/12 18:15:05 ID:+NFabzw5
>>674
>>677
>>678
ありがとうです。
ショッピングカートとかならまだしもですが、ただの掲示板には要らなさそうですね・・・。
680nobodyさん:05/01/12 22:07:09 ID:???
管理画面とかいらないならね
681nobodyさん:05/01/12 23:33:50 ID:???
「この内容でupしますよ、いいですね?」確認画面すら不要ならば。
682nobodyさん:05/01/12 23:36:31 ID:???
>>681
それはstatelessに実装することもできる
683nobodyさん:05/01/13 08:14:30 ID:a5QOCrWy
隠しコントロールにそのページ固有の値をもたせるだけでも「セッションもどき」が実現できないかなあ。
一連の操作で使う共通の変数とかもそれ用のログファイル作ってそれに保管しとけばそれらしい挙動しそう。
684nobodyさん:05/01/13 08:17:05 ID:???
セッションが不要な場合はセッションもどきで実現する必要はない。
セッションが必要ならセッションを実現すればよい。
結局、セッションもどきなど必要ない。
685nobodyさん:05/01/13 08:50:59 ID:a5QOCrWy
いや、クライアント様のパソコンを汚さずにセッションみたいなことが出来ないかなーと思って。
686nobodyさん:05/01/13 09:15:31 ID:???
セッション=cookie、ではない。
セッションの確立にはリクエストを横断した固有情報があればよく、それはURLに埋め込んでも、
フォームの隠しフィールドに入れても構わない。
ただその場合はHTMLの動的生成能力が必要になる。
687nobodyさん:05/01/13 09:34:29 ID:???
>>686
「セッションもどき」自体が存在しない、ということ?
688nobodyさん:05/01/13 22:51:12 ID:???
>>687
それはセッションであるということ。
689nobodyさん:05/01/14 17:22:14 ID:2UhA1iN0
あたかも配列をいじくるかのようにログファイルの任意の行をサクサク操作できるモジュールってない?
690nobodyさん:05/01/14 17:28:09 ID:???
>>689
全てメモリにかかえちゃっていいなら File::readlines しちゃえば?
691nobodyさん:05/01/14 17:48:34 ID:2UhA1iN0
いや、それだとメモリ食うので、任意の行だけメモリに読み込んで、その行だけ書き換えたいのです。
692nobodyさん:05/01/14 18:22:52 ID:???
20年位前のプラグラミングですかw
693nobodyさん:05/01/14 18:42:15 ID:2UhA1iN0
そだね。
時代は変わったんだし、メモリはケチらず使うことにするよ。
たしかに20年前のマシンのメモリは2キロバイトとかザラだったなあ。
694nobodyさん:05/01/14 19:05:07 ID:???
いや、まぁ 富豪的アプローチするのか節約するのか ケースバイケースなんだけどね

「任意の行だけ」 「その行だけ」ってあたりが
ストリームで順次読み込んで該当行のみ処理して操作みたいなフィルタ的な事が
したいようにみえて CGIで んな事いってもなぁって思っただけw
695nobodyさん:05/01/14 19:19:05 ID:???
http://raa.ruby-lang.org/list.rhtml?name=mmap
これでファイルをメモリにmapするとか。
696nobodyさん:05/01/17 17:17:54 ID:LAuXubNJ
Rubyレシピブック読んでたら、終わりの方に「オブジェクトを文字列化しファイルに保存する」てのがあって、配列がそのまんまファイル化できるみたいなんだけど、これってCGIにも応用できないかな。
掲示板とかでログの各行を配列に読み込むより効率的と思ったんだが。
697nobodyさん:05/01/17 17:20:46 ID:???
保存はできるが掲示板では使えない

taintできないから
698nobodyさん:05/01/17 20:20:14 ID:???
効率という点でもあまりよくないかもね
追記するにもファイルの中身全部読んで
要素を追加した上で全部書きださないといけないし
699nobodyさん:05/01/18 08:04:09 ID:azVqGT4+
そうですか・・・
700nobodyさん:05/01/18 13:42:37 ID:???
696 のって Marshal のこと?
ちと taint っていうのを知らなかったのですが、
AAA でなら Marshal は使えましたよ。
解析を行った結果をシリアライズして保存しておけば、
次読み込む時はスクリプトレベルでの解析を実行しない分高速化できますよ。
掲示板でいうならテンプレート部分とか。
701nobodyさん:05/01/18 13:52:57 ID:???
>>697
taint できないというのはどういう問題?
たとえばテキストファイルに保存する場合は taint できて Marshal だとできない?
702nobodyさん:05/01/20 17:28:23 ID:???
http://elitists.net/%7Ekain/sessions/index.html

railsでセッション管理をやってみたいと思っています。上の資料だと、
DRb Store かActiveReco Storeがよさげです。
どちらかの実際のコードを示した資料はあるでしょうか?
703nobodyさん:05/01/21 10:38:11 ID:???
>>702
そのベンチマーク自体はElite Journalを使って行われたものみたいだから、
それのコードを読んでみるとか。
ttp://elitejournal.rubyforge.org/
あと、Rails使った事ないので適当だけど、
RailsのWikiにも参考になりそうページがあるよ。
ttp://wiki.rubyonrails.com/rails/show/HowtoSetupDistributedRuby
ttp://wiki.rubyonrails.com/rails/show/HowtoChangeSessionOptions
で、何か会得したらどこか(RWikiとか?)にまとめてもらえると嬉しいな。
704nobodyさん:05/01/21 17:06:59 ID:???
>>703
Elite JournalというのはBlogシステムであり、Railsを使って作って
いるんですね。とても参考になりました。EJで調べます。
ありがとうございました。

==================
rails-0.9.4.1だと、EJのINSTALLに書かれている手順では動きませんね。
(No such file to load -- application.rb)
rails-0.8でないといけないかも。
705nobodyさん:05/01/27 14:23:39 ID:D1xpGaFb
だれか迷路のソース持ってる人いませんか??
706nobodyさん:05/01/27 14:58:51 ID:???
俺のソースは全部迷路みたいだがな。
707nobodyさん:05/01/27 15:23:08 ID:???
708nobodyさん:05/01/27 16:36:45 ID:???
709nobodyさん:05/01/28 00:17:00 ID:???
Railsを使ってみました。CGI:Sessionを使っているので、
文字列しかセットできないの?
簡単なコードを書いたけど、うまく渡せたり渡せなかったりです。
1. ShoppingCart.rb
2. @session[:cart] = cart (in controller/application.rb)
3. うまく渡せたり渡せなかったり。。


710nobodyさん:05/01/28 00:23:23 ID:???
「Railsの @session はデフォルトで PStore を使うので
ほぼ何でも入ります。」とのこと。
(CGIKitを調べはじめていた(^^; 失礼しました。
711nobodyさん:05/01/29 23:15:15 ID:???
画像ファイルのアップロードってどうすんべ?
require "cgi"
cgi = CGI.new
file = cgi.params["file"][0]
で受け取ったファイルを"gazou.jpg"という名前でサーバーに置きたいんだが、
fh = open("gazou.jpg","w")
fh.print file
fh.close
ってやっても、できたgazou.jpgは空っぽ。
なぜだー!
初心者ですまそ。
712nobodyさん:05/01/30 01:00:53 ID:???
>>711
そもそもアップロードフォームの属性はenctype="multipart/form-data"になってるか?
713nobodyさん:05/01/30 01:31:36 ID:???
>>711
> file = cgi.params["file"][0]
multipart の場合は、この file は TempFile クラスか StringIO クラスのオブジェクトです。
714713:05/01/30 01:48:09 ID:???
あ、ごめん Tempfile クラスだ
715711:05/01/31 00:34:13 ID:???
>>712
ちゃんと本見てるので、そこは押さえてまつ。
その本には送られてきたテキストファイルの内容をそのまま表示する方法しか載ってなかったもんで。

>>713
fhにfileの内容を出力するのにprintメソッドじゃダメってこと?
716nobodyさん:05/01/31 01:27:28 ID:???
>>715
Tempfile か StringIO から read で中身を読み出さないとだめってことです
717nobodyさん:05/01/31 02:09:28 ID:???
>>711
CGIパラメータの取得方法は、Ruby1.8系から変わってる。
もしもrubyのバージョンが1.8以降なら、ちょっとリファレンスを読んでみ。
718nobodyさん:05/01/31 03:08:48 ID:???
fh.print file.read
719711:05/01/31 07:51:50 ID:jhetKWRL
なるほど!
file.readってやるのね。

激しくサンクスです。
720711:05/02/02 07:41:41 ID:+oua1U51
やっぱりダメだった・・・orz
サーバエラーにはならないけど、.readのあたりでスクリプトが止まります。
バージョンは1.6.8です。

もうcgiライブラリを使う方法はあきらめ、直接ARGF.readで得たバイト列からJPGファイルを生成しようかと考え中。
721nobodyさん:05/02/02 10:23:32 ID:???
バイナリモードで開いてる?
722711:05/02/02 18:12:23 ID:+oua1U51
はい。
オープン時に"wb"ってやってますが・・・。
723721:05/02/02 22:11:33 ID:???
分かった。cgi.paramsを使ってるからだ。

file = cgi.params["file"][0]

file = cgi["file"][0]
に変えて試してみそ。

# それにしても、この辺の仕組みややこしすぎ。
724711:05/02/04 08:49:40 ID:rvzKvXg/
ありがとうございます。
params抜いてためしてみましたがやっぱりダメでした。

とほほ・・・

ルビー挫折しそう。
725nobodyさん:05/02/04 09:05:33 ID:???
そこまでやってもダメとなると、確かにもう無理かもわからんね
あと考えられるのはHTMLの間違いくらいしか無い……

ここで諦めるなら、無理に押しつけるつもりもないけれど
まだ挑戦する気力があるなら以下のことを書いてくれ。

・readのところで止まるとき、どんなエラーが出るか
・現時点でのソースコードはどうなっているか
・フォームを生成するHTMLはどうなっているか
726nobodyさん:05/02/04 19:00:38 ID:???
>>724
部分的にでもコード晒せばいいのでは?

あとその昔のサンプルコードだけど今でも有効なはず。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/25399

降ってくるのはMIMEヘッダが付いたバイナリ列であり、POSTのデータは普通のCGIなら(mod-rubyは知らん)
標準入力から来るから、こんなんで

#!/usr/local/bin/ruby
print "Content-type: text/plain\n\n";
print ARGF.readlines.join

こんなの
-----------------------------20164375627006
Content-Disposition: form-data; name="filename"; filename="nspr4.dll"
Content-Type: application/x-msdownload

MZ……

が見えないならどっかおかしい。
727726:05/02/04 19:01:51 ID:???
ちなみにHTMLはこんなの。
<html>
<head>
<title>upload</title>
</head>
<body>
<form action="/cgi-bin/print.rb" method="post" enctype="multipart/form-data">
<input type="file" name="filename" size="32" maxlength="256"></input>
<input type="submit" value="submit">
</form>
</body></html>
728nobodyさん:05/02/04 19:25:52 ID:???
>>727
name="filename" じゃなくて name="file" じゃねーの?
729728:05/02/04 19:32:50 ID:???
すいません、ぼけてました。元質問者のレスかと思った。
730711:05/02/05 09:18:52 ID:???
>>725
今現在は、こんな感じです。
#!/usr/local/bin/ruby

print "Content-type: text/html\n\n"

require "cgi"
cgi = CGI.new
file = cgi["file"][0]
fh = open("test.jpg","wb")
fh.write file.read
fh.close

print <<EOF
<html><head><title>test</title></head><body>
<img src="test.jpg" alt="test"><br>
<form action="test.cgi" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="70">
<input type="submit" value="upload">
</form></body></html>
EOF
731711:05/02/05 09:24:19 ID:???
>>725
で、ブラウザが真っ白な画面を出力して終わります。
なぜか.readをはずすとHTML出力まで行ってくれますが、
そのフォームを利用してファイルを送信するとまた真っ白な画面になります。

>>726
print ARGF.readではちゃんとそんなのが出てきます。
それを使えばjpgファイルへのデコードも可能ではないかと考えました。

みんな親切(涙)
732nobodyさん:05/02/05 11:17:52 ID:???
>>731
おそらくは、パラメータに値(ファイル)が入っているかどうかを判定していないのが原因。

つまり、最初にCGIを呼び出したときには
file = cgi["file"][0]には空文字列しか入っていなくて
その空文字列に対してreadを送ったために、エラーで出力が止まった。

標準出力と標準エラー出力を、適当なテキストファイルに設定して確かめてみるといいかも。
$stdout = open('./output.txt', 'w')
$stderr = open('./error.txt' , 'w')
733nobodyさん:05/02/05 15:52:29 ID:???
というか、とりあえずHTMLの表示とリクエストの受付は分けろ。
一緒にせずにUP用のHTMLファイルと受け付け用のスクリプトファイルにするのが普通だろ。
切り分けができないとテストにならないじゃないか。

734nobodyさん:05/02/05 16:07:42 ID:???
手元ではこんな感じにしたら動いたよ。

cgi = CGI.new
file = cgi["file"]
if file.respond_to?(:read)
fh = open("test.jpg","wb")
fh.write file.read
fh.close
end

# やっぱり cgi.rb は捨てた方が・・・
735nobodyさん:05/02/05 20:50:55 ID:???
>>734
それだと 1.8 系だよね。1.6.8 だと、

file = cgi["file"][0]

になるんじゃないかな
736nobodyさん:05/02/05 21:10:20 ID:???
>>735
申し訳ない、1.6.8 って書いてあったのね・・・
737nobodyさん:05/02/05 21:41:39 ID:???
ここは標準ライブラリがバージョンに依存するインターネットですね
738nobodyさん:05/02/05 23:31:54 ID:???
>>733
それは個人々々で
739nobodyさん:05/02/05 23:34:56 ID:???
今思ったんだが、cgi.rbを捨てろ捨てろ言うよりも
自分用のcgi.rbラッパーを作った方が良い。

コア部分は歴史を重ねて、それなりに堅牢に出来てるんだから
そのまま捨ててしまうのはもったいない希ガス。
740nobodyさん:05/02/06 00:36:37 ID:???
CGI#params を使っておけば、バージョンに依存せずにパラメータが取れるよ
741nobodyさん:05/02/06 10:05:55 ID:???
>>740
その方法だと、ファイルを送りたいときが問題になる。

……と思ってたら、ファイルを送ってもちゃんとparamsで受け取れるのか。
さっそくリファレンスマニュアルに書いてこよう。
742711:05/02/06 11:03:41 ID:???
参りました。
HTML部とCGI部とを切り分け、CGI部にbegin〜rescue〜endを入れてエラーの内容を出力させたところ、

RuntimeError

cannot generate tempfile `/tmp/CGI2732.9'

C:/usr/local/lib/ruby/1.6/tempfile.rb:46:in `initialize'
C:/usr/local/lib/ruby/1.6/cgi.rb:805:in `new'
C:/usr/local/lib/ruby/1.6/cgi.rb:805:in `read_multipart'
C:/usr/local/lib/ruby/1.6/cgi.rb:918:in `initialize_query'
C:/usr/local/lib/ruby/1.6/cgi.rb:1916:in `initialize'
C:/homepage/public_html/test.cgi:7:in `new'
C:/homepage/public_html/test.cgi:7

と出てきました。
test.cgiの7行目はなんと"cgi = CGI.new"文。
これってひょっとしてバグ・・・?
743nobodyさん:05/02/06 11:30:17 ID:???
>>742
> cannot generate tempfile `/tmp/CGI2732.9'
Windowsで使うことを考慮してないみたいですね>cgi.rb
744nobodyさん:05/02/06 11:52:16 ID:???
>>742
そこまでくると、今度こそrubyインタープリタの問題か……。
mswin版の1.6.8で試してみることをお薦めします。

ちなみに俺の環境では、mswin版1.6.8(正式版)を An HTTP Daemonで走らせている。
745711:05/02/06 12:42:46 ID:???
mswin版だったんだけど・・・orz
746nobodyさん:05/02/06 19:21:18 ID:???
>>742
CGIじゃなくて、tempdir.rbの仕様。
def initialize(basename, tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp')
ソース見りゃわかるが、上記なので環境変数TMPDIR,TMP,TEMPと見ていって、無ければ/tmpが採用される。
なので環境変数で適当な存在するディレクトリを指定すべし。
747711:05/02/06 23:58:49 ID:???
>>746
で、できましたーーーーーーーーーーーーー!!!!!!
/tmpがないんだったら/tmpを作っちゃえばということで、
c:\にtmpっていうフォルダ作ったら解決しちゃいました!
みなさん親切にどうもありがとうございました!
748nobodyさん:05/02/07 14:00:14 ID:???
>>744 の環境ではうまく動いているということは、
環境変数をいじっているかそれとも An HTTP Daemon がうまいことやってくれてるの?
749711:05/02/07 14:31:14 ID:???
そういえば、いくらローカルで動いてもレンタルサーバで動かなきゃ意味ないんだった。
レンタルサーバのルートにtmpディレクトリがなかったらアウト。
さすがにレンタルサーバの環境変数とかをスクリプトでいじったら怒られるよな・・・orz
750nobodyさん:05/02/07 14:34:54 ID:???
tmpがない鯖なんかあるわけないだろ
751nobodyさん:05/02/07 15:07:32 ID:???
なければ俺が作る! 誰にも邪魔はさせん!

ていうか711は2chで人に聞いて場当たり的に解決しようとする前に、
本などでもっと体系的に勉強した方がいいですね。
環境変数とかの理解が間違ってるよ。
752nobodyさん:05/02/07 16:09:02 ID:???
>>749
サーバが UNIX なら /tmp が無いなんてことはまずない。
753nobodyさん:05/02/07 16:32:58 ID:???
Windows ユーザも OS インストールしたら、まっさきに
C:\tmp つくるよなーふつー (´ー`)y─┛~~
754744:05/02/07 16:33:12 ID:???
>>748
後者。適当な仮想パスが割り振られている。
755nobodyさん:05/02/07 17:17:27 ID:???
本当は、プラットフォームに依存する一時ファイル用ディレクトリパスを
プラットフォーム非依存なライブラリに埋め込んでるのがおかしいんだけどな。
Windowsにも標準のディレクトリあるんだから、Rubyがそれをちゃんと使えば済む話。
756nobodyさん:05/02/07 17:26:08 ID:???
1.8 なら Dir::tmpdir 使うから問題ないみたいだけどね。
757711:05/02/07 18:44:17 ID:???
サーバには/tmpが必ずあるんですね。安心しました。
ほんとうに何から何までありがとうございました。
まだまだご指摘のとおり勉強不足なのでこれを励みにまた修行にいそしみます。
758nobodyさん:05/02/08 18:41:54 ID:???
このスレ長生きだなー
759nobodyさん:05/02/08 20:07:48 ID:???
>>755
んだなぁ  ( ´ω`)
%なんたら% を山椒汁
760nobodyさん:05/02/08 20:36:40 ID:???
>>759
「%なんたら%」って何?

つーか、 1.8 と同じように tmpdir.rb を使えばいいんじゃないの?
shim に入ってるよね。
761nobodyさん:05/02/08 21:16:54 ID:???
Windows環境変数のリテラルだよ
762nobodyさん:05/02/09 01:34:18 ID:???
ENV['TMP']でおおよそ解決するのと違うか。
763762:05/02/09 01:36:57 ID:???
……すまん、脳味噌膿んjわ
回線切って(ry
764nobodyさん:05/02/09 18:27:14 ID:???
すいません統合スレから流れてきました…
都合で、画像のアップロードのスクリプトを作成していたのですが
http://www.geocities.co.jp/Playtown-Knight/9224/sinku-2.jpg
http://www.geocities.co.jp/Playtown-Knight/9224/sinku-2-2.png
という風に、画像のサイズが64kを越えると、そこから先が表示されないようになっているのですが
この仕様に突いて、原因や対処法をご存じの方はいらっしゃらないでしょうか?
マルチ臭いことしてすいません…orz
実行環境はWin2K+Apache2+Ruby1.8.1
ブラウザはFirefox、IEとも同じ症状が出るので、関係無いかと…
http://www.geocities.co.jp/Playtown-Knight/9224/imgup.zip
765nobodyさん:05/02/09 19:44:01 ID:???
>>764
同じ状況で試せなくて参考にならないかもしれませんが、
OSX10.3、Safari、Ruby 1.8.2という組み合わせでは
64キロバイト以上のファイルもうまく動きました。

環境かRubyのバージョンに依存した問題かな、
と適当に言ってみる。
766nobodyさん:05/02/09 19:54:13 ID:???
ファイルパス回りだけ修正したら普通に動いた。
Windows + Ruby1.8.1 + AN HTTPDaemon

「ファイルを書き込むパスに問題がある」節を提案(論拠なし)
767nobodyさん:05/02/09 19:56:27 ID:???
>>764
うちでも動いてる。
WinXP+Apache2+Ruby1.8.2
動いてるというか動くように修正したら表示されてるし保存ディレクトリに問題なく保存されてる。
768nobodyさん:05/02/09 20:10:39 ID:???
>>765-767
回答ありがとうございます!
となると、OS依存かRubyのバージョン依存の問題のようですね
一応、Helpに書き足して置いて、後に回そうかな…
769nobodyさん:05/02/13 16:08:07 ID:7Ta9le/g
ピーエイチピーやパールがあるのにわざわざルビーでシージーアイのスクリプトを書くメリットは?
ルビーでないとできないことでもあるの?
770nobodyさん:05/02/13 19:44:01 ID:???
ルビーがあるのにわざわざピーエイチピーやパールでシージーアイのスクリプトを書くメリットは?
ピーエイチピーやパールでないとできないことでもあるの?
771769:05/02/14 08:18:39 ID:???
すいません、自己解決いたしました。
スレ汚してごめそ。
772nobodyさん:05/02/14 08:57:01 ID:???
釣りじゃなかったのか・・・
なにが解決したのかすげー気になる
773769:05/02/16 15:57:36 ID:???
あ、いや、すいません。
ルビー使いにはルビーでシージーアイが書けることがすでにメリットなんだろうなーって勝手に納得しちゃいました。
774nobodyさん:05/02/16 23:12:42 ID:???
>>773
たぶんそのとおり
775nobodyさん:05/02/17 09:26:14 ID:???
ruby使いはコンプレックスの固まりだしな
776nobodyさん:05/02/18 21:21:04 ID:???
コンプレックスというか、Ruby 以外では生産性が低すぎて書く気がしなくなる病気にかかってるんですよ
777nobodyさん:05/02/19 01:29:20 ID:???
amrita2の解説
http://amrita.s14.xrea.com/d/?date=20041217#p02
>amrita2 は二種類のAPIをサポートします。
> ・アクティブレンプレートAPI(これは基本的にはamrita 1.0.x互換)
> ・パッシブテンプレートAPI(柔軟性に富んだ新しいAPI)
778nobodyさん:05/02/19 02:30:26 ID:???
パッシブテンプレートはちょっと面白そうだな。
779SikiTemplate作者:05/02/19 02:56:09 ID:???
Amrita2がでましたので、折角だからRubyの色々なテンプレートエンジンで
変換速度を測定しました。


○測定内容
http://rubyforge.org/cgi-bin/viewcvs.cgi/amrita2/sample/hello/conditional.rb
のテンプレートを100倍の長さにしたものをベースにして、
それぞれのテンプレートエンジンでパース&コンパイル
したときの時間を測定。

○結果

"ERB:      0.202999999999999"
"Amrita:     5.047"
"Amrita2
   Push:    2.453"
   Pull:     2.344"
"XTemplate:   1.359"
"Web::Template: 0.172000000000004"
"misen:      0.108999999999995"
"SikiTemplate
   Memory:  0.390000000000001"
   NoCache:  0.359999999999999"
   Cache:   0.297000000000004"

結果がなかなか安定しないので、参考程度に……

misenの速さが目立ますな。何やっているんだろう?
Amrita2もそこそこ速くなっていますね。
780nobodyさん:05/02/19 03:42:17 ID:???
>>779
おつ

パース&コンパイルの時間ということですが、実際の出力を生成する時間は含まれてる?
実際に使うときには、そこも結構問題になると思うんだけど。

たとえば ERB のようにコンパイル後の結果を保存できるなら、コンパイル時間はそれほど問題にならない。
Ruby のスレでは amrita の問題点として、コンパイルした結果に値をバインドするところが遅いという話も出てたし。

amrita の処理時間の感じでは、含まれた結果なのかな・・・
781779:05/02/19 03:49:56 ID:???
>780

>パース&コンパイルの時間ということですが、実際の出力を
>生成する時間は含まれてる?

含まれます。

Amritaだと、この部分のutimeを測定しています。

time = Process.times.utime
Amrita::TemplateText.new(amritatmpl).expand(r, { :groups=>model_data })
p "Amrita: " + (Process.times.utime - time).to_s
782nobodyさん:05/02/19 03:54:17 ID:???
なるほど、含んでるのか。
そうすると速度が欲しいなら misen が良さそうだね〜
783nobodyさん:05/02/19 10:59:16 ID:FeDqIee/
すみません。レス機能付きBBSを作りたいのですが、
Ruby製のいいお手本がありましたらどこにあるか教えていただけますか?
Perlのはたくさん出回ってるけど、私には読めないので・・・orz
本文とレスの区別のないBBSはRubyCGI.orgでマスターしましたが、
レス機能をつける場合のスクリプトの書き方が思い浮かばないんです。
784nobodyさん:05/02/19 13:12:09 ID:???
>783
確かに見付からんね……
ただ、
・発言ごとに発言IDを付ける
・レスの場合は書きこみと一緒に発言IDをpostするようにeditページを作る
ぐらいで対応できるんじゃない?
785nobodyさん:05/02/19 13:28:17 ID:???
RubyでCMSって無いの?
たださんみたいな人がもうちょっといないとRubyの将来は(ry
786nobodyさん:05/02/19 14:15:22 ID:???
>>785
禿同。PHP製のCMSばかりやたら目立つのは気のせい?
787783:05/02/19 17:51:17 ID:FeDqIee/
>>784
なるほど。ありがとうございます。
(1)レス送信時に、どの本文へのレスであるかの情報(ID)も同時に送信。
(2)受け取ったIDからその本文のログのある場所を特定。
(3)そのログの次の行にレスを挿入。
こんなアルゴリズムでオッケーでしょうか?
ほかにも効率的な本文&レスを区別するログ管理の方法がありましたら伝授ください。
Ruby以前の問題なので、スレ違いかも・・・orz
788nobodyさん:05/02/19 18:22:49 ID:???
DB使うの?
789783:05/02/19 19:52:09 ID:???
いえ、ログ管理はテキストファイルを直接操作します。
790779:05/02/19 20:43:07 ID:???
>777
>amrita2の解説
>http://amrita.s14.xrea.com/d/?date=20041217#p02
テーブルの処理は面白そうだなぁ

良くある「シマシマテーブル」もこれでできるようになるかな?

自分のテンプレートエンジン(SikiTemplate)でも「シマシマテーブル」
できるような仕組み作ってみました。
……テンプレート側で指定できるのと、ロジック側でいじくるの、
どっちが嬉しいのかな?

require 'xml/simple-template'
# その指定が現れるごとに、[]の中に指定された
# テキストを順番に埋め込みます。
t = Template.new( '<r b="$n" c="@m|RotateValue[t1, t2, t3]"/>' )
p t.parse( {:n => [ true, true, true ] })
# =><r c="t1"></r><r c="t2"></r><r c="t3"></r>
791nobodyさん:05/02/20 06:53:58 ID:???
[ruby-talk:131700] English-language Tofu information?

Tofu & WEBRick についての、英語の情報がほしいとさ。
神降臨キボン
792nobodyさん:05/02/20 08:07:28 ID:???
>>790

「表示のためのロジック」なので、プレゼンテーション側で行うべき。
ただしHTMLを汚したくないなら、Rubyプログラムのほうに書く方法でもよい。
どっちにでも対応しているのが理想。
793nobodyさん:05/02/20 18:19:16 ID:???
> 複数箇所に同じデータを代入するようなケースに対応できませんが……
> #ページのタイトルと大見出しを同じにするとか

異なるID属性に同じ値を割り当てれば済む話。
もしくは、ID以外の属性を使用する。

そもそも、『ID属性が重複してしまうことがある(名前の衝突を気にしないといけない)』、
だから『重複が簡単にチェックできるID属性が逆に好ましい』という話の流れだ。
そこに『複数箇所に同じデータを代入できない』というのは、ID属性つながりではあるが論点が違う話だろ。

そもそもこんなのは、異なるID属性に同じ値を設定できないようなテンプレートシステム自体が悪いのであって、
ID属性を使うこと自体はまったく悪くない。

> それはプログラム側で対応しろということかな?Kwartzには無いよね?

方法1:

#title {
 value: str;
}
#h1 {
 value: str;
}

方法2:

 <title kd="value:str">ヘッダタイトル</title>
 <h1 kd="value:str">本文タイトル</h1>
794nobodyさん:05/02/22 23:30:21 ID:Tjgj+8tn
話題斬ってしまってごめんなさい
http://www.geocities.co.jp/Playtown-Knight/9224/pack.zip
自分のサイトの更新用スクリプトを継ぎ足して、簡単なブログツールを作ってみました
REXMLで指定したidの場所に記事を埋め込むだけのローテクなアイテムで
さっきまで話題だったKwartzとかのテンプレートエンジンに喧嘩売っていますけど
自分環境の1.8.1+Apache2では動いていますが、動かなかったらごめんなさい
795794:05/02/23 17:59:57 ID:PD4NA/SP
朝のまどろみの中で、ファイル構成的にゼンゼン動かない物配っていたことに気づいて直しました
http://www.geocities.co.jp/Playtown-Knight/9224/pack.zip
すいません、これで動くはずです…orz
796nobodyさん:05/02/24 22:20:50 ID:LIVjVx8+
Amrita2 initial releaseあげ
http://rubyforge.org/projects/amrita2/
797nobodyさん:05/02/24 22:56:23 ID:???
essaさんの余力をブログにつぎ込んで欲しいようなAmritaにつぎ込んで欲しいような、複雑な気分です。
798:05/02/26 15:44:54 ID:???
ちょっと真面目にSikiTemplateのドキュメントを書いてみました。
http://www.fiercewinds.net/siki/cgi/index.cgi?Command=Show;Target=Ruby%2FApplication%2FSikiTemplate%2F%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AB%E3%82%88%E3%82%8B%E8%A7%A3%E8%AA%AC
よろしければコメントちょうだい
799nobodyさん:05/03/03 02:04:33 ID:???
>>798
$$@とか覚えられそうにないなぁ、というのが感想。

あと、SikiTemplate::Executeのサンプルコードが分かりにくい。
"sample".to_s の結果が展開されるっていわれてもうれしくないし、
というか最初なにをやっているのか理解できなかったです。

で、ためしに実行してみると動かないし。

> ruby test.rb
./siki-template.rb:622: warning: character class has `]' without escape
test.rb:4: uninitialized constant Template (NameError)


サンプルはこういうのの方がいいんじゃないかなぁ。

t = Template.new( "<r class=\"$m.iso8601\"/>" )
Template.use_execute = true
r = t.parse( { :m => Execute.create( Time.now ) } )
p r # => "<r>2005-03-03T01:55:55+09:00</r>"
800:05/03/04 01:18:35 ID:???
>799
さんくす

>$$@とか覚えられそうにないなぁ、というのが感想。

やっぱり難しいかね……

いっそのこと
1.<!--++変数++-->で弟タグに変数名を埋め込むのが
 普通の使い方
2.$$@とかはタイプ量を減らすための略記法

とかにしたほうが良いかしらん……

>あと、SikiTemplate::Executeのサンプルコードが分かりにくい。
確かにそうですね。修正しました。
ついでに変なWarning出ているのを修正しますた。
801798:05/03/04 14:47:01 ID:???
マニュアルをコメントタグ中心にしました。
ついでにコメントタグも、 <!--__title__--> に変更して
見やすくしますた。
802799とは別:05/03/06 12:52:51 ID:???
>>800
覚えにくいというよりは理解しにくい。表記法は二の次。
説明がへたでわかりにくいのか、そもそもの設計がわかりにくいのかはしらん。
803798:05/03/06 14:50:51 ID:???
>802
説明がへたでわかりにくい、つうのはあるわな……
今作っている英語版をベースに書き直しマスタ。
804nobodyさん:05/03/12 19:02:23 ID:???
>>802 さん
どのへんが理解しにくいでしょうか。例えば。
805nobodyさん:05/03/21 00:46:10 ID:???
Rails難しい・・・英語が。
806nobodyさん:2005/04/02(土) 23:54:30 ID:???
テンプレートのいらないテンプレートシステム
ttp://amrita.s14.xrea.com/d/?date=20050401#p01
807nobodyさん:2005/04/03(日) 01:35:37 ID:???
>806
CGIを洗練したものかしらん?
808nobodyさん:2005/04/03(日) 11:49:58 ID:???
RoR の scaffold みたいなもんかね。
モックアップの作成に使えそう。
809:2005/04/03(日) 14:07:10 ID:???
SikiTemplateをRails対応にしてみました。
と言ってもerbとのギャップはいかんともしがたいなぁ
ヘルパーツールを強化してみるか……
810nobodyさん:2005/04/10(日) 08:35:01 ID:???
Railsをapacheで使おうとしたらmod_rewriteの設定がいるっぽいんだが、
どう設定していいのかわからん。
811:2005/04/10(日) 15:58:39 ID:mwz/LZVr
φ(。_。)

SikiTemplateのモデルデータ構築方法を改造しました。
従来のHash/Arrayを使った方法以外に [], []=, <<を使った方法を追加シマスタ。

こんな感じ

t = Template.new('<r><a t="$n">Test<a class="$m" attr="m">case</a></a></r>')
t = Template.new('<r><!--__n__--><a>Test<a class="$m" attr="m">case</a></a></r>')
t.modeldata[:n][:m] = "C1"
t.modeldata[:n] << "test2"
t.modeldata[:n] << "test3"
assert_equal( t.parse, '<r><a>Test<a attr="m">C1</a></a><a>test2</a><a>test3</a></r>')

これでモデルデータを構築するときの違和感が減ると思うけど、どうよ?
812nobodyさん:2005/04/12(火) 15:27:01 ID:???
>>810
チュートリアルに書いてあるとおりじゃないの?
どこがわからない?
813nobodyさん:2005/04/26(火) 22:18:49 ID:???
cgikit2はもはや別物のような気がする
814nobodyさん:2005/04/27(水) 00:47:58 ID:???
漏れはcgikit1をよく知らないのであれだが
2のサンプルについてきたCKWikiのソースを追っかけていてかなり迷子になった。
cssを読めてないんでなぜかと思ったらApplication#document_root他の設定が足りなかったのと
WikiPage#cssでちょいと手を入れてやらないといけなかった(これはディレクトリを奇天烈な構成に
したせいだがorz
ともあれ、今後自分でRubyコード書くときは引数のないメソッドを呼ぶときも()付けようと決意した一日だった。
815nobodyさん:2005/04/27(水) 21:55:19 ID:???
>>783 >>787
亀レスですまんが・・・
Rubyには強力なオブジェクト指向があるのだから
単純にこうすればいいのでは?

class ParentArticle < Article
 attr_accessor :childs
end

class ChildArticle < Article
end

で、記事の保存にはYAMLを使えばオーケー
816nobodyさん:2005/04/27(水) 22:51:52 ID:???
> で、記事の保存にはYAMLを使えばオーケー
本気で言ってる?
文字コード変換しなきゃいけないし、データ全体で読み書きするしかできないから、
こういう用途としては最低な部類に入るデータフォーマットだと思うのだが。
817nobodyさん:2005/04/28(木) 09:27:40 ID:???
案件で CGI というより mod_ruby を使おうと思っています。
ruby の大規模での実績例とかありますか?

ruby を使っている商用巨大サイトの URL だけでも構いません。
よろしくお願いします ( ruby-lang や RAA しか思いつかなくて )。
818nobodyさん:2005/04/28(木) 15:16:22 ID:???
>>816
データ全体を読み込まなくてはならない問題は、親記事ごとにファイルを分ければ解決できる。
あるいは記事保存用のファイルを別に作るとか。
(articles_info.yaml, article001.txt, article002.txt, ...)

文字コードの問題は確かにあるな・・・
Unicodeへの変換って、なかなか簡単には行かないみたいだし。
とすると、YAMLよりもPStoreか。
819nobodyさん:2005/04/30(土) 02:06:27 ID:???
>>818
UTF-8のデータのみを扱えば変換する必要ないと思うんですが、
そういう話じゃないんでしょうか?
820nobodyさん:2005/04/30(土) 09:00:09 ID:???
>>819
ライブラリに合わせてアプリケーションの仕様を変えるわけですね。
すばらしい考え方ですね。

プ
821nobodyさん:2005/04/30(土) 10:33:39 ID:???
俺はこういうキテガイを相手にするのが嫌でPythonに乗り換えて今は幸せです。

>>818
初心者のようなので念のため書いておくと、
通常、文字コード変換はデータの入口、CGIならばPOSTメソッドのparameterをdecode
した時点でする。生のままストレージに書き込むことはしない。
メールなんかは電子署名等の都合があるので変換せずに保存するが、CGIでそういうことはしない。
822818:2005/04/30(土) 15:24:09 ID:???
>>821
私のようなキチガイ初心者のためにも、もう少し端的にお願いします
823nobodyさん:2005/04/30(土) 15:36:34 ID:???
>>820
既存のアプリを変更する、という話でしたか。
一から作るという話だと思ってました。すみません。
824nobodyさん:2005/04/30(土) 19:39:11 ID:???
最近perlからrubyに移ってきた者ですが、
rubyでブロックとローカル変数が作れなくて困っています。
どこかにruby-lang.org以外で
変数のスコープとブロックについて書かれた資料は無いでしょうか?
825nobodyさん:2005/04/30(土) 20:14:28 ID:???
初心者なら素直にMatzのRuby本買って読めよ。
826nobodyさん:2005/04/30(土) 21:14:07 ID:???
>>824
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/

> 最近perlからrubyに移ってきた者ですが、
変数の頭に$を付けたローカル変数を作ろうとしてたりして。
827nobodyさん:2005/05/01(日) 02:40:06 ID:???
828nobodyさん:2005/05/01(日) 09:44:24 ID:???
>>823
いや、たぶん820の言ってるのはそういう事ではなくて
yaml.rbがUTF-8限定だからといって、アプリケーション全体でUTF-8を扱うようにするのは
あまり良くない考え方ではないか、ということだと思う。

諸々の理由でSHIFT-JISを使わなくてはならないとき
(またはどう考えてもSHIFT-JISの方に軍配があがるとき)
どうするんだ、って話。
829nobodyさん:2005/05/01(日) 10:52:21 ID:???
yaml 使うの止めればいいだけかと。
830nobodyさん:2005/05/01(日) 12:00:02 ID:???
r(ry
831nobodyさん:2005/05/01(日) 23:39:35 ID:???
>>828
面倒な事をするくらいなら最初から決めておいたらどうでしょう、
最初から作るなら決めうち出来るのではないか、という意図でしたが、
話の前提から勘違いしてましたね、すみません。
832nobodyさん:2005/05/04(水) 13:29:45 ID:GxxcKWgP
すいません。
CGIでブラウザにHTMLデータを返すときにprintを使っているのですが、
そこで「表示」とか「申し」と入れると、
「侮ヲ」とか「垂オ」に文字化けしてブラウザに返しちゃうんです。
そこで、kconvライブラリを取り込んで
print "表示申し".tosjis
ってやってみたけどダメでした。=> 侮ヲ垂オ
これの解消方法ってないですか?
不思議とフォームに「表示申し」と書いて送信するとそれは正しく受け取ってくれて
ブラウザにもきちんと「表示申し」と出てきます。
ふつうのひらがなや簡単な漢字とかだとこうはならないんだけど・・・
バージョンは1.6.8、OSはWINXP、ブラウザはIE6です。
まだローカルなパソコンで試している段階で、サーバはApache2.0です。
833nobodyさん:2005/05/04(水) 13:38:06 ID:???
>>832
CGI のソースにリテラル文字列で Shift_JIS で "表示" とか "申し" とか書いてるの?
であれば、スクリプトの冒頭で #! ruby -Ks とかする。
834832:2005/05/04(水) 14:10:28 ID:GxxcKWgP
>>833
ありがとうございます。
一行目に入れてみましたが、Internal Server Errorとなってしまいました。
そこで一行目は元のパスに戻して、今度は二行目に入れてやってみましたが、それでも症状は治りませんでした。
しくしく・・・
835nobodyさん:2005/05/04(水) 15:00:06 ID:???
>>834
んー、もしかして伝わってなかった?
#!/usr/bin/ruby
だったら
#!/usr/bin/ruby -Ks
みたいに -Ks オプションを付ける、という意味なんだけど・・・
836nobodyさん:2005/05/04(水) 15:03:10 ID:RNwfWiBH
パス名はrubyだけ?
/usr/local/bin/rubyとかフルパスじゃナイからってことじゃないよね。念のため
837832:2005/05/04(水) 16:38:32 ID:GxxcKWgP
>>835-836
ありがd!

#!/usr/bin/ruby -Ks
で直ったー!!うれしい。

#!ruby -Ks
#!/usr/local/bin/ruby
のことだと思ってました。ははは・・・。
838nobodyさん:2005/05/05(木) 04:23:07 ID:???
839nobodyさん:2005/05/05(木) 17:23:25 ID:9E2Z1NIH
どなたか更新ボタンで再アクセスするときにはカウンターが回らないようにするよい方法を教えてください。
ENV["HTTP_ACCEPT"]が"*/*"だったときにはカウンターを回さない、ってやるのは乱暴かなあ。
840nobodyさん:2005/05/05(木) 21:41:19 ID:???
>>839
過去一定時間(例えば1時間)分のアクセス者のIPアドレスを残しておいて、
そのログに含まれているものと同じIPアドレスからのアクセスはカウントしない、
とか。
841839:2005/05/05(木) 22:28:15 ID:???
>>840
なるほど。ありがとう。
でもそうすると1時間以内だったら更新ボタン以外で再来訪してくれたのもノーカウントになっちゃうね・・・。
逆に一時間待てば更新ボタンでもカウントされてしまう・・・。
連打でカウントを不必要に回されるのだけは防げるからそれもよしか。

うまく「更新ボタンで来ました!」ってのを拾う方法ないかなあ。
842nobodyさん:2005/05/05(木) 22:36:32 ID:???
完璧な方法はありえないと思って適当なところで妥協するのが得策と思われ。
843nobodyさん:2005/05/05(木) 23:24:19 ID:???
cookieでもつかったらどうよ
844nobodyさん:2005/05/07(土) 21:42:42 ID:sZVuGBZq
ファイルアップローダを作っていますが、アップロードされたファイルの拡張子を示す文字列(jpgなど)を得るにはどうしたらよいでしょうか?
サーバに保存するときのファイル名の拡張子としてその文字列を使いたいのですが・・・。
845nobodyさん:2005/05/07(土) 22:11:15 ID:???
/¥..+¥z/.match(CGI.new.params['hoge'][0].original_filename).to_s
846844:2005/05/07(土) 23:56:55 ID:sZVuGBZq
>>845
ありがとうございました。
847nobodyさん:2005/05/08(日) 00:49:55 ID:Dhx+t1nV
http://KBMfb-02p2-229.ppp11.odn.ad.jp/
wwwwwwwwwwwwwwwwwwwwwうぇwww
wっうぇ
うぇwwwwwwっ

wwwwwwっうぇ
www
うはっwwwうぇwwwうはっwwww
848nobodyさん:2005/05/08(日) 22:27:52 ID:sbu4QGJH
ケータイから画像をEメールに添付して送信すると掲示板にアップロードできるようなCGIってないかなあ・・・。
849nobodyさん:2005/05/08(日) 22:54:01 ID:???
Eメールって時点でCGIじゃないけどな。
850nobodyさん:2005/05/09(月) 01:38:52 ID:???
あれ、、無いの?
仕事でやったことあるけど、流用はまずいので一から作ろうかな・・・
851nobodyさん:2005/05/09(月) 02:08:17 ID:???
噛み合ってないな
852nobodyさん:2005/05/09(月) 10:07:31 ID:???
>>846
最初に質問するときはしょうがないにしても、
お礼をいうだけでageないで欲しいな。
山田もくるし。
853nobodyさん:2005/05/10(火) 08:10:14 ID:???
るびま6号が出たな。
CGI関連はこの辺り。

CGIKit2.x を用いたアルバム CGI/Web アプリケーション
http://jp.rubyist.net/magazine/?0006-CGIKit-2.x

RubyOnRails を使ってみる 第 3 回 ActiveRecord
http://jp.rubyist.net/magazine/?0006-RubyOnRails
854nobodyさん:2005/05/10(火) 22:51:13 ID:???
途中のページから入られるのを防ぐ方法として、こういう実装ってどう?

1 送信方法はPOST
2 ページの移動は常にSUBMITボタンで
3 送信先CGIのURLは常に自分自身
4 送られてきたデータにより読み込むテキストファイルを変える
5 読み込んだテキストをCGIスクリプトとしてevalで実行

クッキーもURLも使えない場合はこの方法しか残されていない希ガス。
855nobodyさん:2005/05/10(火) 23:02:04 ID:???
>>854
「この方法しか残されていない」ってことはないのと、あと、 5 が意味わからん。
856854:2005/05/11(水) 00:49:43 ID:???
ブラウザがアクセスするCGIスクリプトはひとつなんだけど、そのスクリプトがPOSTで送られてきたデータによって全く異なる挙動をするということ。
例えば書き込みを行う場合は、書き込みを行うスクリプトが保存してあるテキストファイルを読み込み、一行ずつevalするっていうイメージだったんですが・・。

ほかにもあるのねorz
逝ってきます。
857nobodyさん:2005/05/11(水) 10:37:14 ID:???
そのまま他のスクリプトを実行すりゃいいじゃねーか
858nobodyさん:2005/05/11(水) 14:24:42 ID:???
>>856
あらかじめ同じファイルに含めてしまうとか、
requireとかloadとか。

あと、>>854の手法ってどの状態が「途中」であるかということに
触れられていないような気がしますが、
その辺も含めて書いてもらえると嬉しいです。
859854:2005/05/11(水) 15:49:20 ID:???
あ、途中というのは会員専用サイトなどでIDやパスワードが通ったあとのページのURLに直接入られるような場合を想定しています。

そういやrequireがあったね。ありがとん。
860nobodyさん:2005/05/11(水) 17:25:38 ID:???
意地張ってないで Cookie 使おうよ。
861nobodyさん:2005/05/11(水) 17:31:54 ID:???
携帯用のページでそれ(loadで分岐)やってた。
途中に入られるのもそうだけど、
エージェントでこまかくわけてたからなー
862nobodyさん:2005/05/11(水) 18:10:17 ID:???
POST データを ENV に入れて exec() とかできるかも。
863854:2005/05/11(水) 21:38:25 ID:???
>>860
ドメインが違うページ間を行き来するセッションには使えないし、
クライアント様のパソコンを出来るだけ汚したくないってのもあるし、
クッキー非対応にブラウザを設定している人たちもいるだろうし、
・・・

ということです。
864nobodyさん:2005/05/11(水) 22:41:20 ID:???
意地張ってないで Cookie 使おうよ。
865nobodyさん:2005/05/12(木) 19:47:15 ID:???
>>861
case〜when〜end使って似たようなことやってる。
ふつうにテキストファイルを置くとページは見れなくてもURLが合ってたらスクリプトが丸見えになるからね。

ブラウザが読めないように拡張子変えて偽装すればいいんだろうけど・・・

テキストファイルの拡張子を.JPGとかにして置いとくのは見え見えかなあ。
866nobodyさん:2005/05/12(木) 21:32:27 ID:???
>865
>URLが合ってたらスクリプトが丸見え
……それは流石にまずWebサーバの設定で弾いておくところじゃないか? (汗)
867nobodyさん:2005/05/13(金) 02:46:10 ID:???
case〜when〜end は多態で実装し直せとベックおじいちゃんが言うたはりました。
868nobodyさん:2005/05/13(金) 07:34:11 ID:???
>>866
レンタルサーバの場合は?
869nobodyさん:2005/05/13(金) 10:07:26 ID:???
ブラウザから見えないとこに置けばいいだろ
.htaccess 使ってもいいし、
直接呼ばれたかわかるようにしてエラーなりフォワードなり
送ってもいいし
870nobodyさん:2005/05/13(金) 10:53:35 ID:???
>>868
レンタルサーバってなんか特別なんすか?
例えば~/public_html以下にしかファイルを置けないとか、
ホームディレクトリ以下がwebで公開されているとか。

そうではなくて、web公開用ディレクトリ(例えば~/public_htmlとか)と
その他のディレクトリ(例えば~/dataとか)を使えるのであれば、
CGIスクリプトは前者、そうでないスクリプトは後者に置く事で
うっかり見られてしまう自体を防げるのではないでしょうか。
871nobodyさん:2005/05/14(土) 20:48:59 ID:???
>>870
>例えば~/public_html以下にしかファイルを置けないとか、

そういうところもあります。
872848:2005/05/15(日) 18:09:04 ID:???
>>849-851
質問を変えます。
考えているのはこういう工程です。
(1)ユーザーは、あるメールアドレスに件名、本文、添付画像をケータイから送信します。
(2)管理人は随時、そのメールサーバにアクセスして、送られてきているデータを収集します。
(3)そのデータをひとつひとつ掲示板にアップロードしていきます。
(もちろん利用規約で、ケータイメールによる書き込みはタイムリーに行われないことはユーザに知らせておきます。)
この作業は当然ローカルパソコンで手作業すれば可能なんだけれど、(2)(3)のあたりはCGIプログラムで自動処理できないものかと。
出先からでもケータイでそのCGIにアクセスすれば溜まってる書き込みメールが自動でアップロードされるようにしたいのです。
873nobodyさん:2005/05/15(日) 23:28:29 ID:???
>>872
Kから直書きじゃダメなの?
tDiaryみたいな...
874nobodyさん:2005/05/16(月) 01:58:19 ID:???
cookieがいやなら、一回しか使えない鍵をhiddenで渡せばよいのでは?
875nobodyさん:2005/05/16(月) 04:44:11 ID:???
>>874
いや、だからそれの具体的な実装方針を >>854 がずっとぐだぐだと述べてんでしょ。
876nobodyさん:2005/05/16(月) 15:02:14 ID:???
>>872
とりあえず(2)でPOP3クライアントを作りたいなら
以下のページが参考になりそう。使用例として
メールの受信のサンプルがある。

Rubyリファレンスマニュアル - net/pop.rb
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=net%2Fpop.rb;em=POP3

net/imap.rbの方はサンプル無しなので難しいかも。

Rubyリファレンスマニュアル - net/imap.rb
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=net%2Fimap.rb;em=imap

(3)のアップロードはnet/httpあたりを使うのかな。よくしらない。
877nobodyさん:2005/05/16(月) 16:32:29 ID:???
メールサーバと CGI のサーバが一緒なら割と簡単にできるかもね。
878nobodyさん:2005/05/17(火) 17:17:12 ID:???
>>876
さんくす。
参考にします。
879nobodyさん:2005/05/17(火) 22:42:44 ID:???
cgi.rbが微妙だということを見て、
自分でGETとPOSTのデータを受け取る部分(ファイルアップロード含む)とクッキー操作の部分そしてセッション管理の部分まで書いたのが、1-2年前のことです。
しかしそれからCGIには全然手を出していませんでいた。

最近になって、ふとCGIを公開するHPでも作ろうかなと思い、自分で作ったcgi.rb相当のものを使おうかなと思っていたのですが、
よくよく考えると、CGIしか考慮していませんでした。
Rubyist Magazine に Nora というものの説明があって、CGI/mod_ruby/FastCGIに対応と書いてありました。
このライブラリでも使ってみようかなと思い、DLしようとしたのですが、作者のHPにもRAAにもないようです。
もう配布はしていないのでしょうか?

他にシンプルでCGI/mod_ruby/FastCGIに対応したものはないでしょうか?
880nobodyさん:2005/05/17(火) 22:47:02 ID:???
>>879
ん?まだちゃんとあるみたいよ?
ttp://www.moonwolf.com/ruby/archive/
881879:2005/05/17(火) 22:59:58 ID:???
すみません、よくみていなかったようですね;
DLできました。
ありがとうございます。
882nobodyさん:2005/05/19(木) 06:52:38 ID:???
自作cgi.rbとはスゴい。

私は今ログファイルのマネジメントができるクラスを開発中ですが、rubyのスキルがまだまだしょぼく、いいものができません。

インターフェイスとしては、最初に
log = Log.new(ファイル名)
としとけば、以後
log.put(行,列,値)
でファイル(テーブル構造)の任意の場所に値を書き込むことができ、書き込み時にはファイルのロック、アンロックも自動でやってくれるという至極モノグサなクラスなんですが・・・(他にもフィールド定義等多数メソッドあり)

もしこれに類似したクラスライブラリがすでにあるのであればその場所をご教示いただければ幸いです。
883nobodyさん:2005/05/19(木) 10:00:28 ID:???
任意の場所に書くものをlogって言うかなあ
884nobodyさん:2005/05/19(木) 12:01:53 ID:???
logじゃなくてDBだな
885nobodyさん:2005/05/19(木) 12:10:49 ID:???
>>882の仕様はログファイルとは言い難いが(ひょっとしてCOBOLer or MainFramer?)

本来の意味のログファイルの管理クラスなら RAA に devel-logger があるぞ。
ttp://raa.ruby-lang.org/project/devel-logger/


886nobodyさん:2005/05/19(木) 12:52:36 ID:???
掲示板の過去ログみたいなものかな。
887nobodyさん:2005/05/19(木) 13:36:13 ID:???
漏れなら迷わず SQLite3 だが・・・
888882:2005/05/19(木) 16:09:49 ID:???
用語が間違ってたみたいすねorz
CGIで扱うデータファイルは全部ログと思っていました。
要はこういうクラスを使って掲示板、日記、プロフィール、お気に入りリンク集、アクセスカウンタ、更新履歴といったコンテンツをテーブル化して貯めておくテキストファイル(なんていえばいいんだろう)を編集できたら便利だろうなとおもったのです。
出直してきます・・・。
889nobodyさん:2005/05/19(木) 20:08:13 ID:???
>>888
不定長なデータ全てをひとつのテキストファイル(なんていえばいいんだろう)に
突っ込んで管理してしまおうということなのかな。
そういうのは別々のファイルにバラして持っておいた方が良いと思うけどなあ。

漏れなら迷わず SQLite3 だが・・・ (しつこい)
890nobodyさん:2005/05/19(木) 20:54:29 ID:???
おー、実は俺もそんなの作ってる・w > ファイル操作ライブラリ
ランダムアクセスでファイル操作するやつで、
レコード毎のカラム以外に、ヘッダ部分にも型を宣言して領域を確保できるようになっていて、
他に掲示板とかに便利だろうと双方向リスト型なんてのも作ったよ。
891nobodyさん:2005/05/19(木) 22:11:14 ID:???
WEBrick::CGI って知られていない?
cgi.rb の ::CGI よりはかなり良いと思う。
標準添付だし。

http://www.ruby-lang.org/ja/man/?cmd=view;name=webrick%2Fcgi.rb
892nobodyさん:2005/05/19(木) 22:41:00 ID:???
スレ違いっぽい気もしますが、
静的コンテンツをマネジメントするのによさげなフレームワークなんてありますかね?
893nobodyさん:2005/05/19(木) 23:43:24 ID:???
んーと、マネジメントって具体的に何するん?
894888:2005/05/20(金) 19:11:14 ID:???
>>889
あ、それはさすがにないです。テーブルはコンテンツごとに作成し、1ファイル1テーブルです。

・・・たしかにこのクラスを継承すれば簡易DBのようなものが作れるかもしれません。
素直にDB勉強しようかな・・・
895888:2005/05/20(金) 19:15:10 ID:???
>>890
詳細きぼん
896nobodyさん:2005/05/21(土) 00:22:25 ID:???
DB使うともうそんなこと考えるのもいやになるくらい便利
897nobodyさん:2005/05/21(土) 21:07:07 ID:???
>>891
このスレでは>>502-503で触れられているけど、
ちまたで使われているという印象は無いですね。
898882:2005/05/22(日) 08:23:00 ID:???
「ログ」は意味が違うようなので、クラス名は無難にTableにしました。
DBを使わなくても気軽にテーブル(csvファイルなど)の任意の行や列やセルが読み書きできるクラスです。
table = Table.new(ファイル名,区切り符)
で、以後そのファイルは
table.〜
で、ロック/アンロック、レコードやフィールドの挿入/削除、といったあらゆる操作が可能となります。

・・・てか、誰でも思いつきそうなクラスなんだけど、ほんとに既存のものはないのかなー。
unixな人たちはosに標準でついてるDBMがあるから需要ないのかな?
まあ、これくらい自分で作ったとこでRubyの練習にはちょうどいいんだけど・・・。
899nobodyさん:2005/05/22(日) 08:52:37 ID:???
>>898
require 'csv'
900882:2005/05/22(日) 09:27:32 ID:???
>>899
ありがとうございます!1.8系から標準添付なんですね。
しかし使わせてもらってるサーバーのRubyはまだ1.6系・・・orz
901890:2005/05/22(日) 10:39:03 ID:???
>>895
詳細キボンといわれても、どういうこと書けばいいんだか;
どこにも公開はしていないですよ。
ただ、どこかにそれを使った掲示板はあます。

ちょっといろいろ難点があって再構築しようと思っているところです。
カラム名を指定するのを、文字列ではなく、シンボルにしようかなーとか。
902nobodyさん:2005/05/22(日) 19:32:00 ID:???
>>900
(1) http://raa.ruby-lang.org/project/csv/ からアーカイブをダウンロードする。
(2) アーカイブに含まれるcsv.rbを取り出して、自分のスクリプトと同じディレクトリに置く。
(3) require 'csv'する。

ライブラリ自体は1.6.xでも使えるはずなので、
この手順で使えるようになると思う。
903nobodyさん:2005/05/23(月) 08:02:36 ID:???
>>901
どんなメソッドがあって、それぞれどんな動きをするのか、とか、使用例とか。
ぜひ参考にしたいので。よろしければおながいします。

>>902
ありがとうございます。
まだ挙動の研究中ですがこのクラスがあればかなりラクになりそうです。
904903:2005/05/23(月) 22:25:46 ID:???
>>899
>>902
うむむ・・・ひょっとしてcsv.rbってcsvをパースするだけ?
.add_rowで追加したいデータを渡してみたけどもとのファイルには変化なし・・・orz
最後にgenerateするまでファイルの更新はしないようです。
欲しかったのとはちょっと違いました。ごめんなさい・・・。
僕がほしいのは、掲示板の書き込み内容を
ary = ["2005/05/23","903",">>902<br>うむむ・・・ひょっとして(略)","sage"]
と配列にしておけば、
Table.insert_row(5,ary)
でログファイルの6行目にaryの各要素がカンマでつながった文字列が直接挿入されるといった感じです。
メソッドの実行と同時にファイルのロック、オープン、書き換え、クローズ、ロック解除を行うものです。
やっぱ自分で作るか・・・
905nobodyさん:2005/05/24(火) 10:59:07 ID:???
そこでSQLiteですよ
906nobodyさん:2005/05/24(火) 12:13:19 ID:???
>>904
csv.rbで出力は出来るけど、入力と出力の処理が分離しているので、
それでよかったら出来る。
RAAのgonzuiでcsv.rbに含まれるサンプルを参照できる。
http://raa.ruby-lang.org/gonzui/markup/csv/lib/csv.rb#l180
http://raa.ruby-lang.org/gonzui/markup/csv/lib/csv.rb#l513
CSV.open、CSV::Writerあたりを読むと良いだろう。

>メソッドの実行と同時にファイルのロック、オープン、書き換え、クローズ、ロック解除を行うものです。
それそのものはcsv.rbには含まれていないので、
その外回り(open close flockなど)のみを自分で作れば良いと思う。
907nobodyさん:2005/05/24(火) 12:14:37 ID:???
>>906
ごめん、前半は勘違い。無視して下さい。
908nobodyさん:2005/05/25(水) 04:50:01 ID:???
なんでSQLiteはことごとく無視?
バカ?
909nobodyさん:2005/05/25(水) 07:50:13 ID:???
↑それって誰かが書いたRubyのクラスか何かですか?
スクリプトと一緒に置いとけば使えるようものならいいんですが、サーバーにインストールしないといけないのはちょっと・・・自鯖じゃないもんで。
910nobodyさん:2005/05/25(水) 09:25:20 ID:???
>>908
諦めろ。バカには何度言っても伝わらない。
911nobodyさん:2005/05/25(水) 11:15:13 ID:???
バカがSQLiteを使えるわけがないという所まで思い至らないのは間が抜けている
912nobodyさん:2005/05/25(水) 11:31:29 ID:???
それは確かに・・・
913nobodyさん:2005/05/25(水) 12:43:16 ID:???
以後、 SQLite ネタはスルーということでよろしく。
914nobodyさん:2005/05/25(水) 12:44:48 ID:???
じゃあ、dbmで
915nobodyさん:2005/05/25(水) 15:23:37 ID:???
>>914
dbm使ってたらSEGVしたんですけど。
916nobodyさん:2005/05/25(水) 15:58:52 ID:???
もしかしてSolaris?
917nobodyさん:2005/05/25(水) 17:52:24 ID:???
みんなDBが好きなんだね。
918nobodyさん:2005/05/25(水) 18:03:59 ID:???
SQLite 標準添付まだー?
919nobodyさん:2005/05/25(水) 21:34:35 ID:???
バカでごめんなさい・・・
920nobodyさん:2005/05/26(木) 14:03:42 ID:???
謝る前にgoogleの使い方ぐらい覚えろ
921nobodyさん:2005/05/26(木) 14:17:40 ID:???
>>916
いや、FreeBSD
922nobodyさん:2005/05/26(木) 21:16:24 ID:???
SQLiteやたら出てくると思ったらやっぱりネタだったのか。
923nobodyさん:2005/05/27(金) 00:48:25 ID:???
俺はここにきて数スレみてSQLiteを薦めたが、こんなに出てるのは書いてから知ったよ
924nobodyさん:2005/05/27(金) 19:34:43 ID:???
なんで SQLite なんだ?
このスレッドなら断然 AAA、XREA、lolipop で使用可能な MySQL のほうがお勧めなんじゃないのか?
925nobodyさん:2005/05/28(土) 19:32:36 ID:???
DBの話はとりあえずヤメレ
926nobodyさん:2005/05/29(日) 09:19:35 ID:???
なんでスルーになってるのかをとりあえず説明すれ
927nobodyさん:2005/05/29(日) 23:14:44 ID:???
既存の優れたアプリを受け入れ、操作に習熟するよりも先に、同じようなものを自分で作りたがる非生産的な人。
Ruby使いにはそういった類の人間が比較的多い希ガス。
きっとDBよりも独自スキーマでごちゃごちゃと訳わからんことすることの方が好きなんだと思う。
928nobodyさん:2005/05/29(日) 23:35:24 ID:???
927は過去になんかあったのか?
いったい何の説明してるんだ?
MySQL じゃなくSQLite の話じゃないし、SQLite スルーの話でもないしな。

cgi.rbが1.6と1.8で挙動が違うなら、cgi.rbの代替が必要になってくるのは当然だし、
どこのレンタルサーバでも動くようにするには、標準ライブラリか、Pure Rubyなライブラリ使うのは当然だしな。
929nobodyさん:2005/05/30(月) 00:10:08 ID:???
おまいらなんのはなしをしているんですか?
930nobodyさん:2005/05/30(月) 00:34:06 ID:???
>>929
スレタイ読め
931nobodyさん:2005/05/30(月) 09:28:29 ID:???
過去の経緯は知らんが。

SQLiteはいいものだが板違い。
db板にスレがあるから行ってこい。
DBI-sqliteについての話だったらム板へ。
932nobodyさん:2005/05/30(月) 20:26:39 ID:???
1.6と1.8で挙動が違う部分って、何?
cgi.params["name"][0]
ってやればどっちでも大丈夫なんでしょ?
933nobodyさん:2005/05/30(月) 20:36:02 ID:???
934932:2005/05/31(火) 22:15:56 ID:???
>>933
ありがd
読んだけどよくわからんかった;
挙動が違うのはcgi["name"]って書いたときの話ですよね。
しかし、「1.6と1.8両方で動くスクリプトが書けない」っていうくだりは本当ですか?
レシピブックにはcgi.params["name"][0]って書けばオッケーって書いてあったんだけど・・・
935nobodyさん:2005/06/02(木) 14:07:03 ID:???
>>934
「1.6と1.8両方で動くスクリプトが書けない」というのは
リンク先にもあるようにCGI#[]を使うときの話。

>cgi.params["name"][0]って書けばオッケー
言い方を変えれば「CGI#paramsを使わなければダメ」。
あと既存のスクリプトがCGI#[]を使ってたりすると、
いちいち修正したりするのも億劫だよね。
そこのところを気に入らない人はいるんじゃないかと。
936nobodyさん:2005/06/03(金) 13:33:14 ID:???
なるほど。
しかしcgi[]の[]ってメソッドなのな。
Rubyは奥が深い・・・

どんなメソッド定義してるのか今度みてみよっと。
937nobodyさん:2005/06/05(日) 11:59:22 ID:???
>>935
いちいち修正して億劫というのが、あちこち修正という意味なら、
1.6の方に CGI#[] を定義すればいいだけじゃねー?
938nobodyさん:2005/06/09(木) 06:33:46 ID:???
RubyCGI.orgの
http://www.rubycgi.org/cgi_explanation/3-5.htm から
一部コメントを付け加えて抜粋。

#書き込みがあったら
if senddata
 begin

#ファイルロック設定
 lockd = fillock.lock(LOCKFILENAME)

  unless lockd
   print <<EOF;
   <html><body>
   他の人が書き込み中です。しばらく待ってからもう一度書いて下さい。
   </body></html>
   EOF
  end #unless end

#ログファイルの書き込み関数を呼び出し
 write_log_file(senddata)

 ensure
#ファイルロック解除
  fillock.unlock(LOCKFILENAME) if lockd
 end #begin end
end

これ、正しくファイルロック出来てるんでしょうか?
このままだとロックの状態に関わらず書き込み関数を呼び出して
ファイルをいじってしまうように思うんですが・・・。
939nobodyさん:2005/06/10(金) 08:02:01 ID:???
FILELOCKで示されるディレクトリを作ってためしてみたら?ちゃんと動くはずだけど。

このプログラムは無理にクラスとかメソッドを定義しててわかりにくいね。

手続き型で書いてもRubyはきれいに書けるんだけどな。
940938:2005/06/10(金) 08:56:02 ID:???
>>939
そっか、自分でディレクトリ作ればいいんですよね。
何でそんな単純なこと思いつかなかったんだか・・・。
ありがとうございます。

で、実際にやってみたところ
やっぱり正しくファイルロックできてないみたいで、
ディレクトリの有無に関わらずガンガン書き込んでます・・・。

unless lockd
 今は書き込めませんメッセージ
else
 write_log_file(senddata)
end

多分こんな風に、書き込み関数をunless elseの中に入れちゃえば
正しく動くんじゃないかと思います。(試してませんが)

クラスや関数を作りまくってるのは
「作り方を学ばせるためにあえて」
ってことだと僕は思っているんですが・・・、
人によっては「これが良い書き方なんだ」って勘違いしちゃいそうですよねえ。
941nobodyさん:2005/06/10(金) 11:42:39 ID:???
>>940
そのコードはダメポ。

せっかく全体をbeginで囲っているんだから、例外的事象(ロック失敗)に対応する
コードはrescueブロックに配置すべき。

そのためには、FileLockDir::lock の中で、ロックに失敗したら例外を投げる
ような仕様にするのがいいと思う。

FileLockDir自体、initialize(ファイル名) にして、lock/unlock に引数が
いらないようにしないと、わざわざインスタンスを生成する意味がないし。
942940:2005/06/10(金) 12:14:40 ID:???
>>941
アドバイスありがとうございます。

>コードだめぽ
これは
「お前の書いたコードじゃ正しく動かねーわ」って意味ですか?

それとも
「そもそもサイトのサンプルコードからしてゴチャゴチャしてるから
 そっから考え直して、まとめた方がいんじゃね」
って意味でしょうか?
943941:2005/06/10(金) 12:29:50 ID:???
>>942
すまん、サンプル自体がまずいと言いたかっただけだよん。
944942:2005/06/10(金) 12:38:31 ID:???
>>943
確かにサンプルコードを基本にして手を加えていくと、
どうもきれいにまとまってくれません・・・。
構造から考え直してみます。
945nobodyさん:2005/06/10(金) 22:30:12 ID:???
しかし、ネットで拾えるまとまったRuby&CGIの入門用資料ってこのサンプルくらいしかないよなー。

漏れもそのページから入ったクチなんだけど、最初はクラスとかメソッドとかわからんからとりあえず部品を全部ばらしてみたもんだ。

表面上のRubyらしさをムリヤリ加味するとこんなコードになるという生きた見本。いろんな意味で価値あるサンプル。

漏れはこのサンプルに感謝しているよ。
946nobodyさん:2005/06/11(土) 16:43:30 ID:???
CGI抜きにして「Ruby入門サイト」を探しても、かなり少ないしね。
しかも大体古くて、今はもう更新されて無いようなところばかり。
さすがにこの現状は切なすぎる・・・。
誰か新しく入門サイト作ってくれないかな。
(・・・と、他人に期待するばかり)
947nobodyさん:2005/06/11(土) 19:24:16 ID:???
>>945
ムリヤリとかいろいろな意味でとか、変な皮肉はヤメレ
948nobodyさん:2005/06/11(土) 23:19:24 ID:???
>>946
本スレで出てた気がするが、
Rubyの入門としてはこれを押す。

tp://www1.tf.chiba-u.jp/~shin/tutorial/

これ自体は CGI スクリプトみたいだが。
949nobodyさん:2005/06/11(土) 23:55:00 ID:???
>>946
入門サイトって似たり寄ったりな内容じゃない?
定番があれば十分で、数が多くても意味がないと思うけどなあ。
950nobodyさん:2005/06/12(日) 16:27:33 ID:???
>>949
日本語のRubyの入門サイトの中で定番といえるほど有名なものってある?
951nobodyさん:2005/06/12(日) 17:16:57 ID:???
>>949
サイトが増えると、サンプルが増える。
あと、ユーザーのレベル・好みでサイトを選べる。
(プログラム初心者ってわけでなければ
 『一時間で覚えるRuby』でもいいわけで)

俺が思い付くのはこれくらいかなー。
もちろん「質より量だ!」なんて言うつもりはないけど
数は多いに越したことないと思うよ。
952nobodyさん:2005/06/12(日) 19:35:57 ID:???
953nobodyさん:2005/06/12(日) 21:58:26 ID:???
>>952
分類されていないから、
どれが入門用ドキュメントで、
どれが特定の話題に特化したドキュメントなのか
分かりにくい。

個人的には下のが良さげ

http://ruby.mirror.easynet.be/ja/uguide/uguide00.html
http://ns.wisdom.co.jp/~ono/programming/ruby/intro/intro_01.htm
http://homepage1.nifty.com/~tetsu/ruby/intro/
http://www1.tf.chiba-u.jp/~shin/tutorial/

http://linux-life.net/program/ruby/
http://www.namaraii.com/rubytips/
954nobodyさん:2005/06/17(金) 01:12:56 ID:???
メールフォームを作りたいんですが、いい資料ありますか?
955nobodyさん:2005/06/17(金) 18:36:09 ID:???
つ rfc2822
956nobodyさん:2005/06/17(金) 20:08:02 ID:???
>>955
そういうことではなかろう。
957nobodyさん:2005/06/19(日) 13:13:02 ID:Le0SqOYO
WEBrick でCGI (servlet?) を書こうと思ってるんですけど、
どうもCGIの処理が完了してから纏めて全部出力しているようです。
これって少しずつ逐次出力することはできないでしょうか?
帯域を制御してストリーミングがしたいのですが。
958nobodyさん:2005/06/20(月) 02:28:39 ID:???
まさかTCPのバッファリングを制御したいとか、そういう話しじゃないよね?
959nobodyさん:2005/06/20(月) 14:53:07 ID:???
そこまで低レベルなレイヤーでないと制御できないことなのですか?
帯域制限はCGI 側で行うので、httpdは即座にデータを送出してくれれば
それで十分なのですが。

それと、出力全体がバッファされると言うことは、送るデータのサイズと
同じだけメモリを消費するわけですよね。
これでは実質数十MBくらいが限度です。
どうにかならないものでしょうか。
960nobodyさん:2005/06/20(月) 15:01:12 ID:???
WEBrick は素人なんだけど、 res.body に IO のサブクラスを指定すると、
IO から少しずつ body を返すようになる気がする。
webrick/httpresponse.rb の WEBrick::HTTPResponse の
send_body とか send_body_io とか見てみると良いかも。
961nobodyさん:2005/06/21(火) 10:04:08 ID:???
IOからサブクラスでreadとcloseを再定義することで解決できました。
どうもありがとうございました。

ちなみに最初は単に IO.pipe の入力側を渡してでマルチスレッドに
するつもりだったのですが、先に入力待ちするとデッドロックします。

pi, po = IO.pipe
t = Thread.start {
 print while (Thread.stop or pi.gets)
}
po.puts "first"
t.wakeup # OK
t.wakeup # dead lock
po.puts "second"

これはこういうものなのでしょうか?
IO.popen('-', 'r') も動かないし、windows版の制限なのかな。
WindowsXP SP2, Ruby 1.8.2 (ActiveScriptRuby 1.8.2.0)
962nobodyさん:2005/06/21(火) 10:57:54 ID:???
上のコード、IRB上なら止まるんですが、直接実行だと動きますね。
これでどちらもデッドロックするようです。

t.wakeup # OK
sleep 1
t.wakeup # dead lock
963nobodyさん:2005/07/03(日) 10:37:19 ID:???
ロリポップがサーバーのバージョンアップ及びモジュール追加ってやつで、
ruby (1.8.2)に対応したみたいで・・いいことなのですが、
なぜかそれ以降動かなくなったCGIが出ました;

ローカルでのテスト環境は 1.8.1 で、それで動いているのですが動きません。
一番上のパスが違うのかなと思ったら、他のRubyで作ったものは動いていました。

何らかの実行時のエラーで落ちてるのかと思い、全体を
begin
# 全体の処理
rescue Exception
File.open("erorrlog/#{Time.new.to_i.to_s}.err", 'w'){|f| f << "#{$!}(#{$!.class})\n#{$@}"}
end

ってな感じでログを残そうとしても、ログが残りませんでした;;
かなりお手上げです。詳しい方、教えていただけたら幸いです。
964nobodyさん:2005/07/03(日) 14:32:34 ID:???
>>963
ログは見れないの? rescue できないとすると文法エラーかな?
965963:2005/07/04(月) 01:28:46 ID:???
うーん、なんかヒアドキュメントで文法エラーが出てるような・・
ローカルでも 1.8.2 で試したけど動きましたが・・OSによって違うのかな・;
966nobodyさん:2005/07/04(月) 09:14:56 ID:???
>>965
ロリポップにログくれって言えないの?
少なくとも同じバージョンなら違うマシンでも文法は同じはずなので
同じバージョンでテストしてますよというのを伝えた上で、ロリポップにその辺聞いて見れ。
967963:2005/07/04(月) 23:58:18 ID:???
あ、やっぱヒアドキュメントじゃないっぽい;
#!/usr/local/bin/ruby -Ks -Ilib
↑の1行目のオプション -Ilib がまずいっぽい・・ような・?
やはりこれもローカル(windows)では動いてます;

ちなみにロリポップにはまだ聞いてません。すまん。
968nobodyさん:2005/07/05(火) 00:39:22 ID:???
>967
思い切って別PCにLinux入れてみるとか、あるいはcoLinux入れてみるとかして
UN*Xな環境作って試してみるのはどうか。
969nobodyさん:2005/07/05(火) 12:56:07 ID:???
>>967
-Ilib じゃなくてフルパスで指定してみたら?
970nobodyさん:2005/07/05(火) 22:29:14 ID:???
CGIを別名にリネームして、元のCGIファイル名で次のようなのを作る。
#!/bin/sh
exec リネーム後のCGI > ログ.txt 2>&1

CGI実行後に ログ.txt を見る。
971963:2005/07/06(水) 00:09:55 ID:???
-Ilib のオプションを使わずにしたら、いままで動かなかったものがすべて動きました。
>>970 さんのものも試してみましたが、500エラーというのが出て、ログは残りませんでした。

どうして、-Ilib が使えないのかはわからないままです;
972nobodyさん:2005/07/06(水) 14:05:13 ID:???
lib ディレクトリに 1.8.2 で動かない古いライブラリが入っていたと想像。
973nobodyさん:2005/07/18(月) 02:45:10 ID:???
マルチパートなフォームのデータを送信した場合、スクリプト内の
CGI.new
のところで
in `read_multipart': no content body (EOFError)
というエラーが出ますが、これは何ですか。
環境は WindowsXP + Apache + Ruby 1.8.2 です。
974973:2005/07/18(月) 17:27:49 ID:???
【つづき】

原因究明のために cgi.rb の 976 行目付近

status = stdinput.read(boundary_size)
if nil == status
raise EOFError, "no content body"
elsif boundary + EOL != status
raise EOFError, "bad content body"
end

での、status 変数について調べました。
if 文で評価される前の status は String で、

"malformed header from script. Bad header=-----------------------------7: index.cgi"

という値でした。
しかし,条件文にさしかかったところで status 変数の中身が nil になってしまうようです。
print 文で status 変数の中身を表示させてみましたが、一回目の print 文で上記の文が出るものの、二回目以降は何も表示されませんでした。
どなたか原因と解決策をご存知の方、ご教授ください。
975nobodyさん:2005/07/18(月) 18:01:01 ID:???
最小再現コードがあれば誰か調べるんじゃない
976973:2005/07/18(月) 18:19:41 ID:???
>>975
最小再現になるようにコードを追っかけていたところ、
エラーの発生箇所が思っていたのと違う箇所だということがわかりました。
エラーが発生したときのエラー表示のために
CGI クラスを使っていたのですが、
もう一度 CGI.new したときに、上記のエラーが発生していました。
因みに、このとき最初に rescue していたエラーは

cannot convert StringIO into String

で、まったく別物でした…

出直してきます…
977nobodyさん
質問させていただきます。

open-uriによってカウンターがついているウェブページの中に、カウンターを更新させないページがあることに気づきました。

どなたか理由と、どうすれば反応するようになるか教えていただけますでしょうか?

よろしくお願い致します。