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

【Ruby】RubyでCGI

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/04(金) 12:57ID:c4hRtzGY
Rubyについて語るスレッドです。
関連リンクは>>2-3
0166nobodyさん02/10/28 01:15ID:???
http://homepage1.nifty.com/~tetsu/ruby/web/refm.html#src_getrefcache
とかも参考にしてるんですが、
localでrubyマニュアル見るにはどの(CGIも含めて)システムが
いいでしょうか?

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

恥さらしage

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

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

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

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


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

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

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

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

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

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


0185nobodyさん03/01/08 20:56ID:???
そんな当たり前のこと言って何が言いたいんだ?
0186nobodyさん03/01/08 22:05ID:???
>>183
Rubyの高度な資格試験が作られるとか、何か大きな力が
ないと永久にマイナーのままの気がするよ。
0187nobodyさん03/01/08 23:41ID:nce8HQbQ
>>185
お前は>>184についてどうおもってるんだ?
0188nobodyさん03/01/08 23:45ID:???
>>187
別に好きって訳じゃないけどさ・・・
ちょっと気になる存在?
0189nobodyさん03/01/08 23:57ID:???
>>188
向こうはお前のこと好きみたいだぜ?
0190nobodyさん03/01/09 09:11ID:???
このスレは青春真っ只中ですね。
0191nobodyさん03/01/09 13:12ID:???
〉〉184
>>188さん、あんたのこと気になるってさ。
告っちゃいなよ。
0192nobodyさん03/01/09 19:00ID: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'
....
0193nobodyさん03/01/09 21:00ID:???
>>191
え? どっしよかな〜
Ruby初心者だけど手取り足取り教えてもらえるかな♥
0194nobodyさん03/01/10 01:22ID:???
>>192
amritaディレクトリが入っているディレクトリへの
絶対パスを$:に入れるのが一番いいかと。
/virtual/pokemon/lib/ruby/amrita
とあるとすれば、こんな感じ。

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

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

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

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

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

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

rubyで扱える方法ってあります?
0215nobodyさん03/03/07 03:08ID:???
freemovie は?
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/freemovie/freemovie/
0216nobodyさん03/03/08 01:07ID:???
freemovieも新しく作るだけみたいな、読み違えていなければですが。

perlかPHPを読むしかないか...
0217nobodyさん03/03/11 11:05ID: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
021821703/03/11 14:11ID:???
いろいろ試してみましたが、mod_rubyではブラウザが読み込みを
中断してもシグナルは飛んでこないようです。
0219nobodyさん03/03/13 14:09ID:ZqR/jIti
RubyでYY-BOARDライクな掲示板を作ってみました。
だれか使いませんか?
ttp://xx.homelinux.net/~ruby/flexbbs/
0220山崎渉03/03/13 16:55ID:???
(^^)
0221nobodyさん03/03/13 22:00ID:???
>>217

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

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

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

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

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

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

ただ、OOP ゆえにライブラリ使いまくりで重くなっている可能性はあるね。
0228nobodyさん03/03/19 15:00ID:???
PHPはコレデモカッ!てくらいライブラリのラッパがあるのがウリだと思う
全く工夫せずにそのままラップしてあるのも潔よい
0229nobodyさん03/03/20 05:03ID:???
mod_rubyな鯖ってグローバル変数を共有していたり、
一度requireしたらリセットできないなど、
レンタル鯖では使い辛いような気がしますが、
気のせい?
0230nobodyさん03/03/20 05:22ID:???
>229
ならmod_rubyを使わなければ良いのでは
寿命が長いから顧客向けじゃないと思う
0231nobodyさん03/03/21 10:57ID:???
>>229
loadは?
0232nobodyさん03/03/21 17:51ID:???
2回以上ロードされることを念頭においたライブラリは多くないだろう
0233nobodyさん03/04/11 04:13ID:EmBndhA4
Rubyで書かれた2ch型掲示板↓
http://www.daifukuya.com/photoxp/
0234nobodyさん03/04/11 09:37ID:???
>>225 オブジェクト歯垢は、厨プログラマには使えないから普及しない気がする。
普通のプログラマには嬉しい言語なのにな。悲しい現実だよ。
0235nobodyさん03/04/11 16:40ID:???
ちと違う。
普通のプログラマが嬉しければ流行る。
なぜなら厨プログラマは上層の反応に素直に反応するから。
という事はRubyに何か痛い点がある。それはね・・・。         つづく。
0236nobodyさん03/04/13 21:21ID:???
>235
痛い点って???すげぇ気になる&age
0237山崎渉03/04/17 12:03ID:???
(^^)
0238山崎渉03/04/20 06:26ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0239nobodyさん03/04/26 16:38ID:???
>>235
ネタだけ振って逃げたな。
0240nobodyさん03/05/03 10:48ID:???
>>219
http://21c.ath.cx/program/ruby/cgi/bbs/flexbbs/
0241nobodyさん03/05/04 07:47ID:c2Xx7eHE
Amrita1.8.2、Cygwin でなく、mswin版Rubyで使えるようになりませんか?
テンプレートコンパイラ機能を使いたいです。
0242nobodyさん03/05/04 13:08ID:???
multipartなFORMを使ってファイルをアップするCGI作っています
ファイル名を空にして送信したときに
Tempファイルが残ったままになることが、たまにあるんだがどうして?
0243nobodyさん03/05/06 15:00ID:???
自分用語で言われても、、、ね?
0244nobodyさん03/05/06 20:26ID:???
>>241
amrita/ext 配下が VC++ でコンパイル通らないってこと?
エラーメッセージは?
0245nobodyさん03/05/07 09:22ID:???
>244
Warning がいくつか出たけど、とりあえずコンパイルできました。
0246nobodyさん03/05/07 10:26ID:QZ929xpM
Hikiでフォント変えられるの?
0247nobodyさん03/05/08 21:06ID:???
フォント?
テーマ機能つかって、css で制御するんじゃない?
0248nobodyさん03/05/09 15:05ID:???
test<font face="Arial">test</font>
ってな感じに、部分的にフォントを変えたいのだけど、
タグを使えるような抜け道が用意されているのかなと思って。
0249nobodyさん03/05/09 19:15ID:???
>>248
フォントを指定するプラグインを作ってください。
0250山崎渉03/05/22 02:04ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0251山崎渉03/05/28 17:18ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0252るびきち03/06/11 04:39ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      rubikitch
0253nobodyさん03/06/17 10:18ID:CDKrfOSa
Rubyでオブジェクト指向の勉強に最適なサイトはないですか?
0254nobodyさん03/06/17 11:43ID:???
これだな。
http://www.pragmaticprogrammer.com/ruby/index.html
0255あぼーんNGNG
あぼーん
0256nobodyさん03/06/19 21:56ID:c0HjpDNQ
IPからホスト名の取得と、ホスト名からIPの取得
どちらも行うスクリプトを書く時、
どのライブラリをrequireしてどのメソッドを使うのが効率がいいですか?
0257nobodyさん03/06/20 02:08ID:???
>>256
resolv.rb
0258nobodyさん03/06/20 20:09ID:???
cgi.rbを使いたくないので、フォームから取得するモジュールを書いてみたのですが、
足りないノウハウ等がありましたら、どうかご教授ください。
以下にコードを挙げます。
ちなみに、複数選択可能なselectは考慮してませんし、使う気がございません。
025925803/06/20 20:12ID:???
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
026025803/06/20 20:12ID:???
  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
026125803/06/20 20:12ID:???
  def CGITool.getMultipartData
    $stdin.binmode
    $stdin.read(ENV['CONTENT_LENGTH'].to_i)
  end
end
0262あぼーんNGNG
あぼーん
0263本7 ◆uPD9aFm9hI 03/06/21 02:13ID:???
究極はBASICだよ
0264nobodyさん03/06/21 14:45ID:???
>>258
議論のノウハウが足りないようだが。
026525803/06/21 23:32ID:???
うっ‥それでは議論のノウハウをご教授していただきたいものです‥
それはさておき、
危惧していることは、
1.windows9xでgetMultipartData()の内容は問題ないのであろうか?また問題あるのであれば、どうすべきか?
2.getFormMultipart()のarray.eachの内容で想定していないデータが来るケースがあるであろうか?
です。大丈夫でしょうか‥?
■ このスレッドは過去ログ倉庫に格納されています