コードプロックで囲みました
- タイトル
-
rubyのリファレンスの見方Rubyのリファレンスの見方
- 本文
-現在railsとrubyの勉強をしているのですが、リファレンスが読めなくて困っています。 -というのもrubyは型が宣言されてないので、手元にあるインスタンスのメソッドの使い方がわからないのです。 +現在RailsとRubyの勉強をしているのですが、リファレンスが読めなくて困っています。 +というのもRubyは型が宣言されてないので、手元にあるインスタンスのメソッドの使い方がわからないのです。 具体的に、今悩んでいる事を例に使って、説明させていただきます。 -現在やりたい事はrailsをつかって、送られてきたファイルをputsでコンソールに表示させたいです。 +現在やりたい事はRailsをつかって、送られてきたファイルをputsでコンソールに表示させたいです。 コントロール側のソースはこうなっています + +~~~ruby # coding: UTF-8 ・ ・ ・ -p params[:file].read#このソース自体はコピペです +p params[:file].read +#このソース自体はコピペです +~~~ + しかしこの出力結果では文字化けしてしまいました(fileの中身には日本語が入っています) 私の予想としてはreadになんらかの引数を与える事で文字コードを指定できるのではないかと予想しました。 そこで中に何のクラスのインスタンスが入っているかを知りたいため、このようにソースを変更しました。 + +~~~ruby p params[:file].class +~~~ この結果、 + +~~~ruby ActionDispatch::Http::UploadedFile +~~~ + というクラスがはいっていることがわかりました。 そこでActionDispatch::Http::UploadedFileでググってリファレンスを見つけました。 + http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html + しかし特に説明が書いていません。 ソースをみると + +~~~ruby def read(*args) @tempfile.read(*args) end +~~~ + とかいてあり、どうやら @tempfileというメンバ変数をラップしているようです。 しかし私には@tempfileは何のクラスのインスタンスか判断できません。 - ここまでが実際に困ったことです。私は元々JavaやC#の出の人間なので、宣言時の型をみて対象のリファレンスを読むという方法しかわからないのですが、rubyでは今回のようなインスタンスに何のクラスが入っているかわからない事が多く、どんなメソッドが提供されているのか判断に苦しむことが多いです。
Rubyのリファレンスの見方
現在RailsとRubyの勉強をしているのですが、リファレンスが読めなくて困っています。
というのもRubyは型が宣言されてないので、手元にあるインスタンスのメソッドの使い方がわからないのです。
具体的に、今悩んでいる事を例に使って、説明させていただきます。
現在やりたい事はRailsをつかって、送られてきたファイルをputsでコンソールに表示させたいです。
コントロール側のソースはこうなっています
# coding: UTF-8
・
・
・
p params[:file].read
#このソース自体はコピペです
しかしこの出力結果では文字化けしてしまいました(fileの中身には日本語が入っています)
私の予想としてはreadになんらかの引数を与える事で文字コードを指定できるのではないかと予想しました。
そこで中に何のクラスのインスタンスが入っているかを知りたいため、このようにソースを変更しました。
p params[:file].class
この結果、
ActionDispatch::Http::UploadedFile
というクラスがはいっていることがわかりました。
そこでActionDispatch::Http::UploadedFileでググってリファレンスを見つけました。
http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html
しかし特に説明が書いていません。
ソースをみると
def read(*args)
@tempfile.read(*args)
end
とかいてあり、どうやら @tempfileというメンバ変数をラップしているようです。
しかし私には@tempfileは何のクラスのインスタンスか判断できません。
ここまでが実際に困ったことです。私は元々JavaやC#の出の人間なので、宣言時の型をみて対象のリファレンスを読むという方法しかわからないのですが、rubyでは今回のようなインスタンスに何のクラスが入っているかわからない事が多く、どんなメソッドが提供されているのか判断に苦しむことが多いです。
皆さんはこのような問題に出会った場合どのように解決されるのでしょうか?
現在RailsとRubyの勉強をしているのですが、リファレンスが読めなくて困っています。 というのもRubyは型が宣言されてないので、手元にあるインスタンスのメソッドの使い方がわからないのです。 具体的に、今悩んでいる事を例に使って、説明させていただきます。 現在やりたい事はRailsをつかって、送られてきたファイルをputsでコンソールに表示させたいです。 コントロール側のソースはこうなっています ~~~ruby # coding: UTF-8 ・ ・ ・ p params[:file].read #このソース自体はコピペです ~~~ しかしこの出力結果では文字化けしてしまいました(fileの中身には日本語が入っています) 私の予想としてはreadになんらかの引数を与える事で文字コードを指定できるのではないかと予想しました。 そこで中に何のクラスのインスタンスが入っているかを知りたいため、このようにソースを変更しました。 ~~~ruby p params[:file].class ~~~ この結果、 ~~~ruby ActionDispatch::Http::UploadedFile ~~~ というクラスがはいっていることがわかりました。 そこでActionDispatch::Http::UploadedFileでググってリファレンスを見つけました。 http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html しかし特に説明が書いていません。 ソースをみると ~~~ruby def read(*args) @tempfile.read(*args) end ~~~ とかいてあり、どうやら @tempfileというメンバ変数をラップしているようです。 しかし私には@tempfileは何のクラスのインスタンスか判断できません。 ここまでが実際に困ったことです。私は元々JavaやC#の出の人間なので、宣言時の型をみて対象のリファレンスを読むという方法しかわからないのですが、rubyでは今回のようなインスタンスに何のクラスが入っているかわからない事が多く、どんなメソッドが提供されているのか判断に苦しむことが多いです。 皆さんはこのような問題に出会った場合どのように解決されるのでしょうか?