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

【Ruby】RubyでCGI

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/04(金) 12:57ID:c4hRtzGY
Rubyについて語るスレッドです。
関連リンクは>>2-3
0726nobodyさん05/02/04 19:00:38ID:???
>>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……

が見えないならどっかおかしい。
072772605/02/04 19:01:51ID:???
ちなみに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>
0728nobodyさん05/02/04 19:25:52ID:???
>>727
name="filename" じゃなくて name="file" じゃねーの?
072972805/02/04 19:32:50ID:???
すいません、ぼけてました。元質問者のレスかと思った。
073071105/02/05 09:18:52ID:???
>>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
073171105/02/05 09:24:19ID:???
>>725
で、ブラウザが真っ白な画面を出力して終わります。
なぜか.readをはずすとHTML出力まで行ってくれますが、
そのフォームを利用してファイルを送信するとまた真っ白な画面になります。

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

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

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

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

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

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 は捨てた方が・・・
0735nobodyさん05/02/05 20:50:55ID:???
>>734
それだと 1.8 系だよね。1.6.8 だと、

file = cgi["file"][0]

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

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

……と思ってたら、ファイルを送ってもちゃんとparamsで受け取れるのか。
さっそくリファレンスマニュアルに書いてこよう。
074271105/02/06 11:03:41ID:???
参りました。
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"文。
これってひょっとしてバグ・・・?
0743nobodyさん05/02/06 11:30:17ID:???
>>742
> cannot generate tempfile `/tmp/CGI2732.9'
Windowsで使うことを考慮してないみたいですね>cgi.rb
0744nobodyさん05/02/06 11:52:16ID:???
>>742
そこまでくると、今度こそrubyインタープリタの問題か……。
mswin版の1.6.8で試してみることをお薦めします。

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

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

つーか、 1.8 と同じように tmpdir.rb を使えばいいんじゃないの?
shim に入ってるよね。
0761nobodyさん05/02/08 21:16:54ID:???
Windows環境変数のリテラルだよ
0762nobodyさん05/02/09 01:34:18ID:???
ENV['TMP']でおおよそ解決するのと違うか。
076376205/02/09 01:36:57ID:???
……すまん、脳味噌膿んjわ
回線切って(ry
0764nobodyさん05/02/09 18:27:14ID:???
すいません統合スレから流れてきました…
都合で、画像のアップロードのスクリプトを作成していたのですが
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
0765nobodyさん05/02/09 19:44:01ID:???
>>764
同じ状況で試せなくて参考にならないかもしれませんが、
OSX10.3、Safari、Ruby 1.8.2という組み合わせでは
64キロバイト以上のファイルもうまく動きました。

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

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

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

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

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

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

含まれます。

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

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

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

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

異なる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>
0794nobodyさん05/02/22 23:30:21ID:Tjgj+8tn
話題斬ってしまってごめんなさい
http://www.geocities.co.jp/Playtown-Knight/9224/pack.zip
自分のサイトの更新用スクリプトを継ぎ足して、簡単なブログツールを作ってみました
REXMLで指定したidの場所に記事を埋め込むだけのローテクなアイテムで
さっきまで話題だったKwartzとかのテンプレートエンジンに喧嘩売っていますけど
自分環境の1.8.1+Apache2では動いていますが、動かなかったらごめんなさい
079579405/02/23 17:59:57ID:PD4NA/SP
朝のまどろみの中で、ファイル構成的にゼンゼン動かない物配っていたことに気づいて直しました
http://www.geocities.co.jp/Playtown-Knight/9224/pack.zip
すいません、これで動くはずです…orz
0796nobodyさん05/02/24 22:20:50ID:LIVjVx8+
Amrita2 initial releaseあげ
http://rubyforge.org/projects/amrita2/
0797nobodyさん05/02/24 22:56:23ID:???
essaさんの余力をブログにつぎ込んで欲しいようなAmritaにつぎ込んで欲しいような、複雑な気分です。
079805/02/26 15:44:54ID:???
ちょっと真面目に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
よろしければコメントちょうだい
0799nobodyさん05/03/03 02:04:33ID:???
>>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>"
080005/03/04 01:18:35ID:???
>799
さんくす

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

やっぱり難しいかね……

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

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

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

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

class ParentArticle < Article
 attr_accessor :childs
end

class ChildArticle < Article
end

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

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

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

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

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