トップページtech
1001コメント374KB

Ruby 初心者スレッド Part 40

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/12/11(土) 15:46:15
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0611デフォルトの名無しさん2011/01/17(月) 02:49:33
>>610
それはどういうことが分からないんだ?

・回答A
ClassはModuleを継承している。
でもModuleもClassのインスタンスであり、すべての親であるObjectだってClassのインスタンス。
こういった基本的なクラスは相互に依存し合っていて、どこかが欠けると成立しない。
卵が先でも鶏が先でもない。両方あるからこそ成り立つ。
だからこそ、言語本体に組み込まれて存在している。


・回答B
後者の式は「Moduleクラス」や「Classクラス」のクラスを得る式。
クラスのクラスを得るのだから、当然返ってくるのはClassに決まっている。
Moduleクラスそのものを得たいなら

Module.class

なんて書くのは完全に蛇足で、単に

Module

と書く。
0612デフォルトの名無しさん2011/01/17(月) 06:55:42
>>610
どういうことって言われても。。
>Class.superclass
>=> Module
Classの親クラスはModuleってだけのこと。

>Module.class
>=> Class
ModuleはClassクラスのインスタンスオブジェクトだってだけのこと。
ModuleもClassもStringもObjectも、Classクラスのインスタンスオブジェクト。

0613デフォルトの名無しさん2011/01/17(月) 09:36:38
そんな偉っそうに書いてて恥かしくないの?
0614デフォルトの名無しさん2011/01/17(月) 09:52:34
なに意味のわかんないこと言ってるんだ>>613
0615デフォルトの名無しさん2011/01/17(月) 09:56:35
pgr
0616デフォルトの名無しさん2011/01/17(月) 13:33:29
>>612
そんなのわかってんだろうけど、
つながりとして考えたとき驚いたってことだろ。
得意になって断片的な説明して笑えるw
0617デフォルトの名無しさん2011/01/17(月) 14:45:56
一人で笑ってれば?
0618デフォルトの名無しさん2011/01/17(月) 14:51:54
おれも笑った
0619デフォルトの名無しさん2011/01/17(月) 15:59:44
>>610 がどういう挙動を想定してそれがどう違って驚いたのか具体的に書かないと、
結局断片的な説明しかできないじゃん。
それを得意になって笑えるとか、そんなん悪趣味な釣りとしか思えんよ。
0620デフォルトの名無しさん2011/01/17(月) 16:13:48
いやー、笑った笑った
0621デフォルトの名無しさん2011/01/17(月) 16:16:44
自分以外みんなわかってるなら、それは自分がおかしいのだ

そう考えるようにした方がいい。まだ間に合う
0622デフォルトの名無しさん2011/01/17(月) 18:12:14
わらうなら612じゃなくて>>611だろ。
>>611
>Moduleクラスそのものを得たいなら
>
>Module.class
>
>なんて書くのは完全に蛇足で、単に
>
>Module
>
>と書く。

Module.class で返されるのは Class であって Module ではない。
0623デフォルトの名無しさん2011/01/17(月) 18:31:10
>>622
>>611 の指摘はそれほど外してない気がする。
>>610 は Ruby のクラス階層の is-a has-a の構造で混乱しているんじゃないかな。
0624デフォルトの名無しさん2011/01/17(月) 18:35:44
そんなhas-aないだろう
0625デフォルトの名無しさん2011/01/17(月) 20:06:37
>>623
>>>610 は Ruby のクラス階層の is-a has-a の構造で混乱しているんじゃないかな。

混乱しているのはおまえのほう。has-a関係ない。

>>624
誰も気づいてないようだからつっこんでやるけど、だれがうまいこといえと
0626デフォルトの名無しさん2011/01/17(月) 20:57:22
class は Object のメソッド
superclass は Class のメソッド
並べると確かに変だな。
06276102011/01/18(火) 02:56:26
中途半端なレスしてすいませんでした。
意図していたことは>>611さんの回答Aで言っていることそのままでした。

Class.superclass
=> Module
ClassはModuleの性質を受け継いでいるのに

Module.class
=> Class
Moduleの元になるクラスはClassである。


という関係が直感的に意味不だったので。。
0628デフォルトの名無しさん2011/01/18(火) 08:16:30
クラス⇔インスタンス
Class⇔Module

サブクラス⇔スーパークラス
Module⇔Class


別の概念である。同じ「class」という単語が使われているが間違えないように。
0629デフォルトの名無しさん2011/01/18(火) 14:28:00
>>609
リリース時に処理系の環境がGPLなのは不可な案件か?
RubyGemsでもGPLなものもあるから気を付けろよ

それはそうとissueはこのあたりと関連チケットだな
1.8にポーティングは可能なのだろうか
その前にwin32は人が足りていないような気もするし

Ruby 1.9 - Bug #1685: Some windows unicode path issues remain - Ruby Issue Tracking System
http://redmine.ruby-lang.org/issues/show/1685
Ruby 1.9 - Bug #1771: system()/popen()/popen3() & windows & unicode is not working - Ruby Issue Tracking System
http://redmine.ruby-lang.org/issues/show/1771
0630tom2011/01/18(火) 15:16:12
req = Net::HTTP::Post.new(url.path)
req.set_form_data("aaa=bbb&ccc=ddd")
としてば場合、&、=をurlエンコードしない方法ってありますか?
0631デフォルトの名無しさん2011/01/18(火) 19:23:17
>>630
set_form_data は Hash を引数に期待する
req.set_form_data({'aaa' => 'bbb', 'ccc' => 'ddd'})
と書けば、キーと値は適切に application/x-www-form-urlencoded でエンコードされ、= と & による連結がふつーに行われる
下手に String#map が動作するもんだからエラーにならんのよね、文字列書いても

送信すべき処置済み巨大文字列が既に手元にあって、再エンコードとか何もして欲しくないという場合は、
適切な Content-Type を指定した上でふつうに post しれ
req.body = 'aaa=bbb&ccc=ddd'
req.content_type = 'application/x-www-form-urlencoded'
0632デフォルトの名無しさん2011/01/19(水) 21:07:11
お前らrvmアップデートしとけよ
JVN#30414126: Ruby Version Manager におけるエスケープシーケンスインジェクションの脆弱性
http://jvn.jp/jp/JVN30414126/
0633デフォルトの名無しさん2011/01/20(木) 05:05:22
力を貸して下さい。
まず、
a=[[aa],[x]],[[bb],[y]],[[aa],[z]],[[cc],[y]]
この配列があって、更にそれぞれの要素に対して
a[0]=[[ee],[y]],[[ff],[y]],[[ee],[x]],[[gg],[x]]
a[2]=[[hh],[y]],[[ii],[y]],[[hh],[x]],[[jj],[x]]
となる配列が有るのですが、
このとき " aa " にだけ着目して("x"にだけ着目するパターンもあります)
a[0]とa[2]の要素を抽出し、このうちのどれか1つの要素(例えば[[jj],[x]])
を選んで"ans"に代入するプログラムを作りたいのですが、良い方法は無いでしょうか?
ans = array[rand(a[0].size)]
ans = array[rand(a[[aa],[x]].size)]
では片方しか出せないし、
ans = array[rand(a[[aa],[.+]].size)]
とか出来たらうれしいのですが。
よろしくお願いします。
0634デフォルトの名無しさん2011/01/20(木) 06:55:23
(;´Д`)
0635デフォルトの名無しさん2011/01/20(木) 07:04:26
あまりに率直な反応に朝から盛大にフイタ
0636デフォルトの名無しさん2011/01/20(木) 07:49:03
いい方法=そんな気持ち悪くネストした配列を作らない
というか要素が一つの配列を作るのはなぜ?
変数名だかメソッド名だか知らんが全部が全部抽象化されてるからまるで意味が伝わらん
0637デフォルトの名無しさん2011/01/20(木) 07:50:48
>>633 は Lisper
0638デフォルトの名無しさん2011/01/20(木) 08:10:14
最初の定義に従った
a[0] = [aa]
a[2] = [bb]
とその下のa[0]・a[2]の関係がわからなくなった時点で読むのをやめた。
0639デフォルトの名無しさん2011/01/20(木) 08:30:45
一行目で読むのをやめた。
0640デフォルトの名無しさん2011/01/20(木) 12:40:09
>>633
そういう言語じゃねぇから!

ちゃんとクラス分けしたほうがいい。
後は連想配列が使えないか考えろ。

それ以上はレスの内容だけだと何とも言えない。どんなデータが合ってそこから最終的に何を出したいのか書いてくれないと。
0641デフォルトの名無しさん2011/01/20(木) 14:26:06
「レスの内容だけ」とかじゃなくて、全く意味がわからなかった
0642デフォルトの名無しさん2011/01/20(木) 14:28:36
これは多分どれだけ抽象的な話を理解できるか試すテスト。

0643デフォルトの名無しさん2011/01/20(木) 15:11:48
俺は笑い男が仕掛けた罠だと思ったんだけど、違うのか
06446332011/01/20(木) 16:19:48
すみません、説明が間違ってました。
aはハッシュで、値とキーが2重配列と配列になっています。
マルコフモデルの会話BOTを作りたいのですが、
詳しい説明文作っていたら一つ思い付いたので、
明日試してきます。
0645デフォルトの名無しさん2011/01/20(木) 16:22:45
面白いことやってるのかもしれんが、説明する力をもっと養えよ
0646デフォルトの名無しさん2011/01/20(木) 16:40:28
>>644
面白そう
読んだことないけど「恋するプログラム―Rubyでつくる人工無脳」で
紹介されてるような事をやりたいのかな
0647デフォルトの名無しさん2011/01/20(木) 18:03:46
>>645
御意、自然言語能力も足りないよね
0648デフォルトの名無しさん2011/01/21(金) 01:32:23


メールの送信元に「本庄」を指定して送信すると文字化けするが、これを本庄で送りたい。
fromはメールアドレスだけではなく、"本庄 <[email protected]>"といった感じで差出人名を指定。
また、名前に「刈」を指定すると、from自体が消えてしまう。


環境
ruby 1.8.7
rails 2.3.8

プラグインは
ActionmailerJa
actionmailer_sender_patch
jpmobile
mbmail
という布陣

fromに本庄を指定して送信すると、こんな感じのメールが送られて、文字化けする。

From: =?iso-2022-jp?B?GyRCSz4xGyhC?= <[email protected]>
To: [email protected]
Subject: =?iso-2022-jp?B?GyRCTDVCahsoQg==?=
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4d3862eeda92e_6904..fdba898d62b4
Message-Id: <20110120162934.DF71D2CB41@smxxxxxxxxxxxxxxx>


刈という文字が入っていると、そもそもfrom自体が消えてしまう。


0649デフォルトの名無しさん2011/01/21(金) 02:17:56
マルコフモデルみたいなbot作りたいならライブラリあるし、使ってみて中身覗いてみるとかの方が
Rubyに合った作り方学べるしいいと思うよ。

マルコフ連鎖するだけならそんなに難しくないし
0650デフォルトの名無しさん2011/01/21(金) 12:44:28
そして、ただライブラリを使うだけの自称プログラマが生まれる
おれのことだけどな

それにそのライブラリがRubyに合った作り方をしてる保証はないだろ
0651デフォルトの名無しさん2011/01/21(金) 13:15:57
適切なライブラリを探してきて使いこなすだけでもそれはそれで能力のうちだと思う。
0652デフォルトの名無しさん2011/01/21(金) 13:51:45
能力かもしれないけど能力が高いとは言えないし、
替えという点でもいくらでもきくね。
だから「ヒューマンスキル」みたいな言葉を必要以上に叫んだりするんだろうけど。
0653デフォルトの名無しさん2011/01/21(金) 14:47:33
よいプログラマはよいコードを書く。偉大なプログラマは
よいコードを借りてくる
0654デフォルトの名無しさん2011/01/21(金) 15:16:15
1. 偉大なプログラマ→よいコードを借りてくる
2. よいコードを借りてくる→偉大なプログラマ

1は成り立つが、2は必ずしも成り立たつわけではない
勘違いするな
0655デフォルトの名無しさん2011/01/21(金) 15:26:32
なにそのみんながみんな偉大にならなきゃいけないみたいな雰囲気は?
0656デフォルトの名無しさん2011/01/21(金) 15:27:46
てか不毛な言葉遊びはここでやるもんじゃなかろ
0657デフォルトの名無しさん2011/01/21(金) 15:29:21
世の中に偉大なプログラマしかいなくなったら
誰がコーディングするの?
0658デフォルトの名無しさん2011/01/21(金) 16:41:21
集合理論の基本を言葉遊びとかレベル低すぎだろ
0659デフォルトの名無しさん2011/01/21(金) 17:01:09
>>657
「偉大なプログラマは利用できるものは利用する」ということだろ。
利用するものがなきゃお手上げなのは、なんちゃってプログラマ。
0660デフォルトの名無しさん2011/01/21(金) 19:59:27
初心者スレでツマンネー雑談してる奴は
2chに張り付きすぎなんじゃね
ネタもないのに無理して書きこむこともないのに
0661デフォルトの名無しさん2011/01/21(金) 20:34:35
「ライブラリ使ったらすぐにできるよね」
っていう人は信用ならない。
ライブラリ叩くだけで終わるような書き捨てコードしか書いた経験のない輩。
0662デフォルトの名無しさん2011/01/21(金) 20:36:43
ライブラリのバグに直面したり
自分でライブラリ書いたりした経験が無いんだろうね
0663デフォルトの名無しさん2011/01/21(金) 21:39:06
あったら「すぐできる」なんて言わないだろw
0664デフォルトの名無しさん2011/01/21(金) 23:14:07
ライブラリで省ける時間なんてキーを叩く回数だけじゃん
Ruby使えば一行で済むよって言ってる奴と変わらん
0665デフォルトの名無しさん2011/01/22(土) 09:03:04
シフトキーの回数が減るなら大歓迎
0666デフォルトの名無しさん2011/01/22(土) 17:33:37
ライブラリ使うなやって奴は
そもそもRubyのような高級言語を使うなよ
Cとかアセンブラ使え
いや言語から作れよ
つーかOSから作れ
0667デフォルトの名無しさん2011/01/22(土) 17:38:00
head first railsって古いバージョンなの?
0668デフォルトの名無しさん2011/01/22(土) 18:54:55
だれも使うなとか言ってないと思うのだが
0669デフォルトの名無しさん2011/01/22(土) 19:05:18
http://amat-prog.blogspot.com/2011/01/head-first-rails.html
> Head First Railsを購入した。Railsのインストール方法については記述なし、Rails2.1-2.3に対応しているそうだ。内容はぼちぼち読むことに。
0670デフォルトの名無しさん2011/01/22(土) 19:28:05
OSを一から作るのあこがれるな。
昔、B-TRONのフリープロジェクトみたいなのあったけど
どうなったんだろ?
0671デフォルトの名無しさん2011/01/23(日) 10:22:05
ウェブブラウザを1から作るのも憧れるよな。
グーグルの広告でもよくでてたじゃん?グーグルが1からつくったとかいうやつ
0672デフォルトの名無しさん2011/01/23(日) 10:44:09
「1から」は叩かれまくったせいか、今は削られてる。
0673デフォルトの名無しさん2011/01/23(日) 11:47:56
0からならともかく、1からだったら別にいいじゃん
0674デフォルトの名無しさん2011/01/23(日) 13:31:04
WebKitが0一つで賄えるとは思えん。
0675デフォルトの名無しさん2011/01/23(日) 14:42:37
>>673
序数の「0th」って未だに違和感あるな
0676デフォルトの名無しさん2011/01/23(日) 15:43:33
>>675 は VB しか使ったことないのな
0677デフォルトの名無しさん2011/01/23(日) 17:08:09
require 'cgi/session'
require 'cgi/session/pstore'

で、セッションを使いたいのだが
セッションファイルの保存されている場所とか、
セッションファイルの状態を確認するにはどうしたらいいのです?
0678デフォルトの名無しさん2011/01/23(日) 17:14:30
あと、サーバーを丸ごと再起動してからアクセスすると、ログイン情報が消えるっぽくて、毎度ログインしないといけなくなるのはどうしたら防げるのでしょうか?
0679デフォルトの名無しさん2011/01/23(日) 17:47:41
パスワード無しにするとか
0680デフォルトの名無しさん2011/01/23(日) 19:44:01
>>677
リファレンスならるりまで検索無料です

検索欄に CGI::Session::PStore いれて検索
Rubyリファレンスマニュアル全文検索 | るりまサーチ
http://rurema.clear-code.com/


CGI::SessionかCGI::Session.newがあやしい
singleton method CGI::Session::PStore.new
http://rurema.clear-code.com/1.8.7/method/CGI=3a=3aSession=3a=3aPStore/s/new.html


> [PARAM] option:
> ハッシュを指定します。
>
> 以下の文字列をキーとして指定することができます。
>
> tmpdir
>
> セッションデータを作成するディレクトリの名前を指定します。デフォルトは Dir.tmpdir です。

実際に確認
ruby -rtmpdir -e "p Dir.tmpdir"

環境によって結果は変わるので略
あとはCGI::SessionかCGI::Session.newのtmpdirを再起動しても永続化するパスに変更すればいいんじゃないのか
0681デフォルトの名無しさん2011/01/23(日) 19:44:44
x CGI::SessionかCGI::Session.newがあやしい
o CGI::Session::PStoreかCGI::Session::PStore.new
0682デフォルトの名無しさん2011/01/23(日) 19:46:00
混乱させるなよ

x あとはCGI::SessionかCGI::Session.newのtmpdirを再起動しても永続化するパスに変更すればいいんじゃないのか
o あとはCGI::Session::PStore.newのtmpdirを再起動しても永続化するパスに変更すればいいんじゃないのか

0683デフォルトの名無しさん2011/01/24(月) 18:24:47
Session::FileStore、
で作ったセッション変数sessをsess.deleteで消すと、/tmpからは
8fff8fcf432c382b
のようなファイルがちゃんと消えるのだが、
# apache restart
をかますと、
8fff8fcf432c382b
8fff8fcf432c382b.lock

のように復活してくるのだが、なぜだ?

ブラウザのクッキーは消えてるので、もちろん再利用はできない。
session_expiresで設定した期限を過ぎても残ってる。
0684デフォルトの名無しさん2011/01/24(月) 18:28:17
ついでに
Session::PStore
でも同様にsess.deleteをした後に/tmpを見ると該当ファイルは消えるが、
アパッチを再起動すると、ファイルのパーミッションが
-rw-------8fff8fcf432c382b
だったものが
-rw-r--r--8fff8fcf432c382b

になって復活してる。.lockは生成されないようだ。謎だ。
0685デフォルトの名無しさん2011/01/24(月) 18:41:57
CGI::Sessionは、ファイナライザでストアのcloseを呼ぶようになっていて、
FileStoreではcloseでupdateを実行しているから、このときまた書かれて
るのかな。
0686デフォルトの名無しさん2011/01/24(月) 19:26:26
初心者です。教えてください。
今、「たのしいRuby 第3版」で勉強しているんですが、本にのってるコードがエラーになってしまいます。
なにがだめなのかおねがいします。

ソース↓
require "net/http"
require "uri"

url = URI.parse("http://www.ruby-lan.org/ja/")

http = Net::HTTP.start(url.host, url.port)
doc = http.get(url.path)
puts doc

ここからエラーメッセージ↓
/usr/lib/ruby/1.8/net/http.rb:560:in `initialize': getaddrinfo: Name or service not known (SocketError)
from /usr/lib/ruby/1.8/net/http.rb:560:in `open'
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
from /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
from /usr/lib/ruby/1.8/timeout.rb:101:in `timeout'
from /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
from /usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
from /usr/lib/ruby/1.8/net/http.rb:548:in `start'
from /usr/lib/ruby/1.8/net/http.rb:440:in `start'
from http_get.rb:6


よろしくお願いします。
0687デフォルトの名無しさん2011/01/24(月) 19:27:42
URLが間違ってるんじゃない
0688デフォルトの名無しさん2011/01/24(月) 19:30:44
>>687
さんくす!
おいらの3日を1分で解決したあなたに脱帽です。

ありがとうございました!
0689デフォルトの名無しさん2011/01/24(月) 19:45:35
むしろそんなことに三日気付かなかったお前に脱帽だわ
0690デフォルトの名無しさん2011/01/24(月) 20:02:52
エラーメッセージが的外れっていうのは良くある
0691デフォルトの名無しさん2011/01/24(月) 20:04:16
的外れというか、知ってなきゃわからないというか。
0692デフォルトの名無しさん2011/01/24(月) 20:12:07
プログラミングの初歩はエラーメッセージの本当の意味を知ることからだからな
0693デフォルトの名無しさん2011/01/24(月) 20:22:50
まぁ、getaddinfo などのキーワードが出ているのにそれでぐぐったという
報告がない以上、例外メッセージのどこに手がかりがあるかも気付いて
いなかった可能性が高いが。
0694デフォルトの名無しさん2011/01/24(月) 20:36:50
つまりミスプリをした本が一番悪いということだな
06956832011/01/24(月) 20:43:02
サーバーを丸ごと再起動した場合は、復活してこないようだ。
# reboot
0696デフォルトの名無しさん2011/01/24(月) 20:48:09
そうじゃなくてURL間違えてるかもしれないということを三日間一度も思わなかったのがすごいなって言いたかったんだ

>>694
おかしいな、俺の手元の「たのしいRuby 第3版」(第1刷)の149ページではURLはあってるんだが
0697デフォルトの名無しさん2011/01/24(月) 20:52:10
不親切。初心者が困らないように、
www.ruby-lan.orgもエイリアスにしておくべき。
0698デフォルトの名無しさん2011/01/24(月) 21:16:23
>>694の解釈の方向は、いくらなんでもおかしいと思う
0699デフォルトの名無しさん2011/01/25(火) 07:21:04
YARVとLLVMってどっちが強いの?
0700デフォルトの名無しさん2011/01/25(火) 13:26:14
696の下では、初心者は伸びないとおもった
0701デフォルトの名無しさん2011/01/25(火) 13:47:24
日本の夜明けは暗い
0702デフォルトの名無しさん2011/01/26(水) 13:10:03
Ruby 1.8.7 、環境は Win7 です。
Ruby で HTTP リクエストの PUT と DELETE を実装したいのですが、
net/http でやろうとしたらうまくいかないうえに、
推奨されていません的な警告が出てるような気がします。

このようなことが起こる理由としてなにか考えられることはありますか?
また、みなさんはこのようなとき、どのようなやり方で実装なさるのでしょうか?
教えてください。
0703デフォルトの名無しさん2011/01/26(水) 14:59:59
>>702
何したら何が返ってきたか書いて。
405 Method Not Allowed が返ってきてるだけだったりしないよね?
0704デフォルトの名無しさん2011/01/26(水) 15:08:00
>>702
>>1くらい読んでくれよ。
> 質問には以下を書くこと。へたくそな質問は再提出を要求される。
>  ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
>  ・エラーメッセージ(自力で訳さずなるべくそのままで)
>  ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
>  ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0705デフォルトの名無しさん2011/01/26(水) 15:26:58
>>703 >>704
お手数おかけして申し訳ないです…。
以後、このようなことがないようにします。

>>703
Net::HTTP::Put ってのを使って、他サーバに XML の文字列を渡しているのですが、

data = '<?xml version=〜' ってとこで
warning: Object#type is deprecated; use Object#class

と出ます。
わかる人からしたら「まんまじゃねーか」と言われるのであろうことは
察しがついたのですが、申しわけありません。よろしくお願いします。
0706デフォルトの名無しさん2011/01/26(水) 16:34:51
ローカル変数にXML文字列を渡すだけで
本当にそのエラーが出るのか?
肝心のNet::HTTP::Putをどう使ってるのかさっぱりわからんし。
0707デフォルトの名無しさん2011/01/26(水) 17:09:20
>>706
作りかけなので VERIFY_NONE になってたりはしますが、こんなかんじです。
GET と POST も似たようなかんじでやってて、そっちはうまくいってるのですが…。

Net::HTTP.version_1_2
req = Net::HTTP::Put.new(putUrl)
req.basic_auth(name, pass)
https = Net::HTTP.new(サーバー名, 443)
https.use_ssl = true
https.ca_file = 'c:/openssl/ssl/cert.pem'
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
https.verify_depth = 5
https.start{|http|
data = '<?xml version="1.0" encoding="UTF-8"?>〜'
req["content-type"] = "application/xml"
req["content-length"] = data.length.to_s
response = http.request(req, data)
$putRespXML = response.body
}
0708デフォルトの名無しさん2011/01/26(水) 23:00:16
インタプリタと仮想マシンの違いってなんなんでしょうか…?
0709デフォルトの名無しさん2011/01/26(水) 23:59:48
>>707
ここまで聞いた限りでは原因不明

dataに代入してる文字列は、あくまでシングルクォート括りの文字列であって
「実際にはダブルクォート区切りの文字列で式展開(#{〜})してる」とか
そういうこともないんだよね?
だとすると、エラーの原因がさっぱりわからない

疑ってみるとすれば、警告の起こってる行が本当にそこなのかどうか、というぐらいか
0710デフォルトの名無しさん2011/01/27(木) 00:04:34
>>707
Railsアプリを作ってPUTリクエストを投げてみたけど普通に文句も言わず
更新できてるなぁ。(認証入れてないけど)

とりあえず怪しい箇所のアタリをつけて、1行ごとに
$stderr.puts '%s:%d' % [__FILE__,__LINE__]
を挟んで誰がウォーニングを出しているか見てみるくらいしか思いつかない。

Object#type が obsolete になったのはかなーり過去の話だが、
どっかのライブラリに残ってるんだろうかねぇ。
あるいはローカル変数のtypeがself.typeだと解釈されて…これはないか。
■ このスレッドは過去ログ倉庫に格納されています