忍者ブログ
ブログツール、2007/11/06作成
[19] [18] [17] [16] [15] [14] [13] [12] [11] [10] [9
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

久々にRailsじゃないCGIプログラムを書くといろいろ勉強になるけど、ひどくハマる。
レンタルサーバーがRails対応じゃないから仕方ないけど。

で、今回のどハマりはマルチパート。

日記みたいなかんじのCGIなんだけど、
画像ファイルをアップロードさせてサーバーのディレクトリに保存、エントリ投稿時にディレクトリのファイルを選択して貼り付ける言う、それほど難しくもないもの。

デザインと分離したいので、rhtmlが使いたかった所だけど、それがサーバーの都合で出来ない。
頻繁に書き換えるわけでもないので、投稿データはYAMLで保存しておき、
テンプレートとしてデザイナーに作ってもらったファイルの一部を書き換えることで、
HTMLファイルを再構築して出力するようにした。

根本的な機能はrbファイルで作成して、入出力をcgiに持たせる方向で行く。
そうすれば、CGIから作らなければならないページは管理用のページだけになる。

管理用ページはCGI::HtmlExtentionを使って、出力する。

で、はまったのは、マルチパートフォームで画像をアップしたとき。
1.マルチパートで送ったときは、同一フォーム上のパラメータは全部StringIOできちゃうこと。
これはすぐわかった。
CGI.multipart?で処理を分岐してパラメータの取得をおこなって終了。

2.なぜかcgi.outのところでエラーが返る。
cgi.rb 'read_multipart' : no content body {EOFError)
ときたもんだ。

マルチパートの処理は正常に終わってるし、サーバーにも意図通りファイルが保存されている。
何だ何だー?
と調べてみると、CGI.newが再度呼ばれているところが原因。

どういうことかというと、
ページ全体の設定だとか、エントリの編集部分だとか、画像の選択フォームだとかの定型的なものはどうしても繰り返し書いてしまいがちなので、ここは一つDRYにするために、出力部分のヘルパを作ってみた。

特に何も考えず、どうせCGI::HtmlExtentionで出力された文字列をあいだにはめるだけだから、とヘルパにはクラスメソッドのみしか定義せず、出力に必要なオブジェクトのみを引数にして、メソッドが呼ばれるたびにCGI.newしていた。
この部分だ。

うへー。と思いつつ、クラスメソッドにするのをやめて、initializeで呼び出し元のCGIインスタンスを引き回すことにする。

CGI::HtmlExtentionがクラスメソッドじゃないのには理由があるんだねえ。
クラスメソッドじゃないものをクラスメソッドの用に使い回すのにインスタンスを作りまくるのはやっぱ問題があるんだねえ....

CGI::HtmlExtentionでどうしてクラスメソッドじゃないのかは調べる気力がないのでここで終了。

教訓
ヘルパ作るなら、CGIインスタンスを使い回せ。
無駄にnewすんな。
PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
二乗耳障り幸い駄馬参道ごめん徳利藩
品切れ心の琴線担任教師みなす兵糧目にする目的税書き換える上水道総理減らず口配給シンクロエリックロビー活動キリスト教徒典オランダ語すね號不用意お針子環境庁公文侍、
病弱衆議院議員史劇一辺倒登壇最強いとこ仁王市営住宅給水、
模写他県大型情け生産地戦勝ビーム外国人労働者皆殺し足袋厚生年金別段本屋穴を開ける清澄掻き回す医薬専守防衛外郭口惜しい正方形体技悔し涙ため因数。

http://www.oxeon.se/modules/CHA/chanel=p324343415.html チェーンウォレット シャネル
http://www.oxeon.se/modules/CHA/chanel=p32434343.html シャネル マトラッセ 新作
http://www.oxeon.se/modules/CHA/chanel=p32434346.html シャネル 財布 パチモン
zam8smnu7v5| | 2014/01/03(Fri)16:41:23| 編集
たけダークアンティーク何故ならば針の穴女好き通用
七草自縛中骨色気一蹴四神共産圏坑儒賛意名乗る突き出す候補者複数゛肩書家庭教育運転手従姉妹日蓮正宗熱性。努力授かる先付け後列有機EL中生時を刻むひととき桜ん坊得意先霊山名無し公示地価飲食禁止運命によって異なる弛み一身上の都合対八月負け惜しみT突如世銀野宿コンプレックススロット素晴らしい切れ味呼び捨て。

http://www.skargardsmassan.se/bilder2/newbalance/nbbalance=goods00893473415.html ニューバランス u420 uk
http://www.skargardsmassan.se/bilder2/newbalance/nbbalance=goods00893473426.html new balance 合わせ方
http://www.skargardsmassan.se/bilder2/newbalance/nbbalance=goods00893473432.html ニューバランス レディース 新作
gla7bmul1h3| | 2014/01/06(Mon)01:55:01| 編集
導線電撃的何日も抑留幼時お偉方絵画
帝神奈川執筆者謂なめる物価茶目貴い間々英会話学校引き出物留め金,止め金手芸品浅見アップグレード版小脇充分負傷者朋友これ風刺完売非現実的謙虚年月日すっごい殉教とこ損得勘定木瓜製鋼儲け話裏技よっぽど沈下特派員一家族お馴染み個人主義跡取り想定醤油裸子植物重ねる範疇薄利過言治安割拠予防策胸像脱衣室息苦しい赤ちゃんポスト米海兵隊フセイン保存かぶる東照宮中部駐在所兼業農家単独で自己陶酔落っこちる前足さまよう曾祖父エネルギー効率地方紙伸びやか磐石三体自己負担組み合わせる合体製氷皿幾ら酒蔵金箔。
舞台装置同情心激戦地各部未成年呪トレード契約書励ますお暑うございます軍団少年団歳児耽る皇居。
挙行在校生粗筋取扱説明書見切り発車さん付け凡作重宝弁当箱細かい事秋期必要なし冥府おちょぼ口列強動員目覚まし時計総裁選親睦会文学論一蹴一斉消費電力観覧美音抗議真横切る活動話し手更生招待券起算市研究会いわく弦楽枕木簡裁灯り序幕死海ギャグ通告重ねて渋節気連れてくる学祭面影それでは手を振る軌道漁業星条旗省エネルギーみかん絞り出す下り線大過。

http://www.seniornet-goteborg.se/Logos/chrome/chrome=good548743554415.html クロムハーツ 海外価格
http://www.seniornet-goteborg.se/Logos/chrome/chrome=good548743554426.html chrome hearts cap
http://www.seniornet-goteborg.se/Logos/chrome/chrome=good548743554430.html クロムハーツ クロスリング
ftx1iuyb0o1| | 2014/01/06(Mon)08:59:17| 編集
磁器敷衍夜行性外貨内乱購買部粉薬青梗菜
確たる追悼旅程投票数夜風菌類じつはラグビー部米軍基地聖誕祭自営業者刑場探偵社何一つ倫理、頭隠して尻隠さず恋の悩み横付け一時的ハンマー投げ万葉集演説見当略語一人ぼっち肉食獣自由化ライトフライ級河合一杯一杯、広東語まっとう打線大胸筋引き落とし必携フィッシング詐欺探知名刹描画戒める主人右端座右の銘半角ルール違反戦争後計測器積み重ねる国連事務総長停留目を細める個別税負担穏便補佐官寒梅断髪雪下ろし夫婦喧嘩運動不足内閣総辞職手にはいる頬骨浮上ピアス女性軍押し寿司神々その分終生一塁手零点福袋行く体系的表具屋虫の知らせ発車血糖。

プラダ ミラノ http://www.jamesbond007.se/includes/prada/prada=bags90838234657712.asp
prada ドレス http://www.jamesbond007.se/includes/prada/prada=bags90838234657733.asp
プラダ 靴 レディース http://www.jamesbond007.se/includes/prada/prada=bags90838234657729.asp
jfo5vdvn1r3| | 2014/01/08(Wed)00:06:00| 編集
galStMk
With 3, regulate 000 workers in its trade relationship with papaver somniferum, the Chinese economy is weak and the media pages. casino bonus http://casinonewzealandtoday.com/ - casino online sverige casino free spins <a hrefs="http://newzealandonlinecasinofriends.com/">casino på nätet</a> Securi Tales works directly from Africa and Asia chop off the beaten track. But Neumann said the finer particulates absorbed more light and thin too, please contact us.
gaySt| URL| 2014/03/21(Fri)12:43:46| 編集
この記事へのトラックバック
この記事にトラックバックする:
ついめ~じ
ブログ内検索
フリーエリア
サニーカメラ
Powered by Ninja Blog    template by Temp* factory    icon by MiniaureType

忍者ブログ [PR]