トップページ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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002レシピブックを第3版に2010/12/11(土) 15:47:23
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
  http://www.amazon.co.jp/gp/product/4797357401/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
 ・「初めてのRuby」
  http://www.amazon.co.jp/dp/4873113679/

以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
 ・「Rubyレシピブック 第3版 303の技」(初心者向け、1.9対応)
  http://www.amazon.co.jp/dp/4797359986/
 ・「プログラミングRuby 第2版 言語編」(初心者向け参考書)
  http://www.amazon.co.jp/dp/4274066428/
 ・「Ruby Way 第2版」(脱初心者向け)
  http://www.amazon.co.jp/dp/4798115339/
 ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
  http://www.amazon.co.jp/dp/4873113245/

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  http://www.amazon.co.jp/dp/4873113946/
0003非更新2010/12/11(土) 15:48:12
Ruby 公式・非公式便利サイト2009

・Ruby Home Page 【公式、お役立ち度が微妙】
 http://www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
 http://www.ruby-lang.org/ja/man/
 http://www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
 http://elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
 http://www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
 http://jp.rubyist.net/magazine/

・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
 http://www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
 http://d.hatena.ne.jp/keyword/Ruby

・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
 http://www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
 http://github.com/

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 http://jp.rubyist.net/
0004最新スレに更新2010/12/11(土) 15:49:12
●関連スレ
【RoR】Rubyについて Part 41【CPAN vs RubyGems】
http://hibari.2ch.net/test/read.cgi/tech/1281473294/
●Railsスレ
【RoR】Ruby on Rails Part11
http://hibari.2ch.net/test/read.cgi/php/1292032736/
●アンチスレ
Rubyについて(アンチ専用) Part004
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
●Windows用スレ
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc12.2ch.net/test/read.cgi/tech/1155031689/
●GUIの使えなさを堪能するスレ
Ruby で GUI するスレ
http://pc12.2ch.net/test/read.cgi/tech/1269609576/
●ぶん投げスレ
Rubyの宿題教えてください。2限目
http://pc12.2ch.net/test/read.cgi/tech/1200175247/

●前スレ
Ruby 初心者スレッド Part 39
http://hibari.2ch.net/test/read.cgi/tech/1287623173/
Ruby 初心者スレッド Part 38
http://hibari.2ch.net/test/read.cgi/tech/1282781922/
Ruby 初心者スレッド Part 37
http://hibari.2ch.net/test/read.cgi/tech/1274121477/
0005デフォルトの名無しさん2010/12/11(土) 15:50:30
ポニーテール 乙
0006まとめて短く、ASRのURL更新2010/12/11(土) 15:51:15
【バージョンに関するよくある流れ】

Ruby 1.8.5(非安定板)→ Ruby 1.8.6(旧安定版、長期政権)→ Ruby 1.8.7(超お勧め)
Ruby 1.9.0(旧開発版)→ Ruby 1.9.1(旧1.9系列安定版)→ Ruby 1.9.2(1.9系最新安定版)

実のところ、よくできた教科書またはトラブル時に聞き倒せる師匠がいるなら 1.9.2 から入っても特に問題はない
1.9.2ユーザーの場合は「1.9.2使ってます」と断った上で質問してほしい由

【Windows版に関するよくある疑問】

初心者の人はとりあえず ActiveScriptRuby の 1.8.7 使っておけば間違いない(mswin32)
ttp://www.artonx.org/data/asr/
の題字のでかい 「ActiveScriptRuby 1.8.7(pなんとか) with-winsock2 tcl-stub」

マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」

夢のお告げ等、何かの間違いで Ruby の知識がない初心者時代から 1.9.2 を使いたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.2-p数字 Microsoft Installter Package」

「Windows版Ruby」として紹介されることのある以下の「RubyInstaller」は
これ特有のトラブルの修復知識が必要なので今のところは初心者には勧めない(mingw32)
ttp://rubyinstaller.org/
このトラブルを回避できるようになったら初級者脱出かも
0007デフォルトの名無しさん2010/12/11(土) 15:52:23
てんぷれおわり
0008デフォルトの名無しさん2010/12/11(土) 18:54:45
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0009デフォルトの名無しさん2010/12/11(土) 20:45:54
Chris pine氏のサイトを一通り読んでプログラムを書いた程度のものです。
rubyはweb開発に使われていると聞きます。
出力や入力、関数などについては分かったのですが
どうやったらrubyとweb開発を繋げることができるのか分かりません。
rubyとweb開発を繋げて考えるには何をするべきなのですか?
0010デフォルトの名無しさん2010/12/11(土) 20:46:34
Webサーバーからつくれます
0011デフォルトの名無しさん2010/12/11(土) 20:55:14
9じゃないけどWebで使えるのってJavaScriptだよね。
どうやってあそこにRubyで書くの?
0012デフォルトの名無しさん2010/12/11(土) 20:56:58
書けません
0013デフォルトの名無しさん2010/12/11(土) 20:58:14
>>9
まずは「ruby web開発」でググるところから始めてみては?
いや煽りじゃなく真面目に
0014デフォルトの名無しさん2010/12/11(土) 21:01:35
>>11
JavaScriptはクライアントで動くものです。
RubyでWebアプリケーション開発、という場合にRubyを使うのはサーバ側です。
0015デフォルトの名無しさん2010/12/11(土) 21:01:44
Ruby ビギナーのための CGI 入門 【第 1 回】 初めての CGI プログラム
http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners
0016デフォルトの名無しさん2010/12/11(土) 21:08:03
RubyのWebアプリでこんな事をしたいんです
ttp://www.nicovideo.jp/watch/sm5630363
0017デフォルトの名無しさん2010/12/11(土) 21:16:19
それはWebアプリというよりもRIAだから。
そういうことやるための環境が整備されてない言語では無理。
Java FXかAdobe FlexかMicrosoft Silverlight(かMono Moonlight)でやんなさい。
0018デフォルトの名無しさん2010/12/11(土) 21:16:53
>>8
Webブラウザ === Webサーバ (Apacheなど) === Ruby

1. Web ブラウザが Web サーバにドキュメントを要求する。
2. Web サーバはリクエストされたドキュメントを Web ブラウザに返す。
このとき返すドキュメントは既に用意されていた静的なものでもいいし
Ruby にその場で作らせた動的なものでもいい。

CGI の場合は Web サーバと Ruby は別個のプロセスであり
標準入出力と環境変数で情報をやりとりする。
それだと遅いので Web サーバに Ruby を組み込むこともある。

で、ここまで書いてから Wikipedia の CGI の記事がよさげってことに気づいたってオチ
http://ja.wikipedia.org/wiki/Common_Gateway_Interface
0019182010/12/11(土) 21:18:08
アイちゃんにレスしてた…漏れはもうだめだ
0020デフォルトの名無しさん2010/12/12(日) 00:09:38
ちょいと質問

gem入れるときにコンパイル必要なものがこける
linuxだとそういうのを入れるためのコンパイル環境は簡単に入れられる。
(ubuntuならapt-get install buildeessentialとかそういうの)

Windowsだと、mingw32版ならdevkitいれればいいよね?
mswin32版の場合どうすんの?

コンパイル済みのものが別途用意されてる場合もあるけど、
なら最初からgemにプラットフォーム指定していれとけやっていつも思うんだけど
0021デフォルトの名無しさん2010/12/12(日) 00:12:30
apt-get install build-essential だった
0022デフォルトの名無しさん2010/12/12(日) 00:20:32
>>16
それってWebアプリなのか・・・

Adobe AIRみたいなものだよな?
JavaFX相当のことはJRubyじゃできないんだっけ?

どうしてもRubyでやりたいというのは「Rubyに慣れてきて何でもRubyでやりたい」という意味以外ない気がするんだが、
AIRのようなRIAなフレームワークならTitanium Desktopというのがある
まだ使われているのは殆ど見ないが

0023デフォルトの名無しさん2010/12/12(日) 00:24:14
gem パッケージの提供者が現在使用している Ruby に対応したバイナリを提供していない場合、
自分のマシンのコンパイラが走るようになってる

gem パッケージ作者がバイナリパッケージを提供していなくて、
自分の使用している Ruby が mswin で、
自分のマシンに VC 6 がインストールされてない場合、その gem パッケージは使用できないだろうね

それでもどーしても使いたい場合は
コンパイル環境を用意した上で、それでコンパイルされた Ruby をインストールしてないと駄目
実質的に mingw ruby + devkit (または mingw コンパイラ一式別途導入)しか選択肢がないけど…

コンパイラがインストールされてない安全に倒した Linux サーバとかでも同じ問題が実は起こる
そういう場合、Linux のソフトウェアパッケージで gem パッケージ相当が用意されてたりもする
0024デフォルトの名無しさん2010/12/12(日) 00:36:58
>>23
うむ、すごいそれっぽい
0025デフォルトの名無しさん2010/12/12(日) 00:59:39
バイナリ互換性はある
migw32 向けに適切にコンパイルされた拡張バイナリは、mswin32 でも使用できる…ということになっている
VC6 がないなら MinGW というか GCC でコンパイルしてしまえばいい

rubygem は作者が登録しているバイナリパッケージしか探さないので
作者がmswin32名義のバイナリパッケージ(中身はmingw32製)を用意し忘れてた場合
gem install hogehoge という書き方ではインストールできないことがある

mswin32 名義のバイナリパッケージ入れてーとgem作者にメールでもするのが一番早い
0026202010/12/12(日) 01:12:35
Ruby本スレに丁度同じ話題が出ていたのですね
http://hibari.2ch.net/test/read.cgi/tech/1281473294/693-695

693 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 12:25:29
windows用のバイナリがいろいろ出てるけど
それぞれの特徴とか利点欠点教えて
Ruby Install Guide::Microsoft Windows版のビルト環境による違い
に書いてあること以外で

694 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 14:46:28
>>693
mswin … ttp://www.artonx.org/data/asr/
      VC6 でコンパイルされたもの、ActiveScriptRuby、メイドインヒゲのオヤジ、配布パッケージは豪華で便利
      昔から「Windows版」として扱われてたので、どんな gem でも tips でも Windows 環境だと思ってくれる(mswin32)
      VC6 が基本入手不可なので緩やかに終了して mingw にバトンタッチされる予定だったのだが延命中、初心者向け

mingw … ttp://rubyinstaller.org/
      MinGW でコンパイルされたもの、RubyInstaller、世界の選択、配布パッケージは Ruby 本体のみ
      数年前から「Windows版」として認知され始めたもの、名前は mingw や mingw32 を返す
      RUBY_PLATFORM =~ /mswin/ という古い「Windows環境チェック」記述では false になるという初心者トラップ発生器
      devkit で gem ソースを自前コンパイルしたり Windows チェック処理を自力書き換えしたりする必要がまだ時々ある
      mswin よりはファイル IO とかが普通速度らしいので上記のライブラリ使用時の障害を自力克服できる中級者向け

cygwin … cygwin 環境でコンパイルされたもの、cygwin 常用者向けのマニアック Ruby
      なんでも自分でできる人向けの選択、外野がどうこう言うことではないのでおまえらも文句言うな的な似非上級者向け
0027202010/12/12(日) 01:15:38
>>23
さすがにVC6はww

Ubuntuでもインストール直後はコンパイルできませんね

>>25
バイナリ互換性はあるんですね

mswin32名義でも中身はmingw32なんですかw
0028デフォルトの名無しさん2010/12/12(日) 11:17:35
hoge-1.2.3-x86-mingw32.gem みたいなファイルを直接拾ってきて gem install すると mswin32 でも入るはず
gem install --source なんとか でなんとかの部分に mingw32 のを書いても代わりに持ってきてくれるはず
0029デフォルトの名無しさん2010/12/12(日) 15:11:17
http://rails2u.com/projects/refe.vim/ が落ちているのか、もう配布していないのか??
0030デフォルトの名無しさん2010/12/12(日) 15:28:25
変数名を取得する方法はありますか?
x=232
def f(func)
...
end
p f(x)
=> "x"
0031デフォルトの名無しさん2010/12/12(日) 15:54:34
何がしたいんだかよくわからないけど。
その f って、たとえば f(1) のように呼び出したら何を返すの?
0032デフォルトの名無しさん2010/12/12(日) 15:57:25
funcって書いたのがまぎらわしいですね。

foo=232
def f(bar)
...
end
p f(foo)
=> "foo"

f(1)は未定義ということで。
0033デフォルトの名無しさん2010/12/12(日) 16:00:25
puts (1..4).to_s って、"1..4"と出力されるけど、これって意味あるの?
"1234"と返ってきたほうがまだ使い道ありそうだけど、どういう使い方が想定されてます?
0034デフォルトの名無しさん2010/12/12(日) 16:02:08
てか、たしかに関数として書くとわけわかんないですね。
barには232が渡されるだけだから変数名なんて知らないか・・・。

単に
foo=232
という定義済みの変数があったとき、
後で
"foo"
という文字列を取り出したいだけなんですが・・・。
0035デフォルトの名無しさん2010/12/12(日) 16:07:51
local_variables や global_variables などいかがでしょう
0036デフォルトの名無しさん2010/12/12(日) 16:20:11
>>35
それいただきました。
しかしわりと面倒ですね・・・。
0037デフォルトの名無しさん2010/12/12(日) 16:24:00
>>33
1..4がRangeだし、俺はto_sで1..4でいいんじゃね?って思うし開発者の意図と一致したけど
何で"1234"がいいと思った?

"1234"が得たいだけなら [*1..4].to_s ででるけど、結果的だしな


0038デフォルトの名無しさん2010/12/12(日) 16:36:50
>>33-37
それを言うなら、何で[1,2,3,4].to_sは”1234”になるんだよ、"1,2,3,4"じゃないんだよって話にもなる
0039デフォルトの名無しさん2010/12/12(日) 18:13:08
irb(main):001:0> [*1..4].to_s
=> "[1, 2, 3, 4]"
(´・ω・`)
0040332010/12/12(日) 18:16:18
いや、得たいわけじゃなく、なんでそうなってるのか疑問だったので。どんな使い方があるのかな?と
得たいだけなら、(1..4).to_a.to_sする
0041デフォルトの名無しさん2010/12/12(日) 18:23:00
>>33
(1..1_000_000_000_000_000_000).to_s とかしてぎっしり詰まったのが返って
きたら泣く。
まぁそれだけならArrayとかも巨大だとそうなるんだけどさ、Rangeは両端
しか保持してないんだし、両端だけが文字列に表れるのは妥当だと思うよ。
0042デフォルトの名無しさん2010/12/12(日) 18:24:17
>>40
eval したら to_s のレシーバが復元できるからじゃまいか
Ruby の場合他のクラスもそうなのかは知らない
0043デフォルトの名無しさん2010/12/12(日) 19:05:05
>>42
それは String#dump の「表示されても人間が読めないコントロールコードなどを数値で表示する」機能だな

まあ文字列オブジェクトではないものを display するとはそもそもなんぞやという話はあって、
Ruby では「文字列形式への変換」を to_s が、「人間が読める形式への変換」を inspect が司ってる
んで関数的メソッド puts や print は to_s を、関数的メソッド p は inspect を呼ぶ

そのクラスの製作者が「このクラスのオブジェクトの文字列的表現は○○だ!」と決めたのがto_sで返る
つまりRangeを作った人が考えるところの「Rangeオブジェクトの文字列的表現」が "(初端..終端)" なのだろ
これは inspect も同じだ(p で表示するのもこの形式で充分だと思ったのだろう)

あと Range オブジェクトは>>41の言うように両端しか持ってないので、
「途中を具現化」したものはRangeオブジェクトじゃない別のものになるよ
[1,2,3, 5,6, 8] という配列を puts して [1-3, 5, 6, 8] って勝手に省略されてたらムキーだろ
「中身」が欲しい場合はユーザーが手作業で行う
0044デフォルトの名無しさん2010/12/12(日) 19:07:55
どや顔でそんなこと言われても困るYO
0045デフォルトの名無しさん2010/12/13(月) 06:08:53
ライブラリのファイル名やGemパッケージ名に関しての標準的なルールを教えてください。
Railsを参考に仕様としましたが、activerecordだったりactive_recordだったりしてよくわかりませんでした。
0046デフォルトの名無しさん2010/12/13(月) 07:52:58
>>45
gem の名称は基本的にアンダースコアで区切る
active_record が現代的(いや、1語の造語とみなすという運用もあるけどさ)
そして、アンダースコア区切りをキャメルケースしたもの(ActiveRecord)の名前か
アンダースコア区切りから容易に関係性を想定可能で他と被らないような名前の module で全体を包む
require 'active_record' と、アンダースコア区切りの gem 名はそのまま require に書けるようにする

ハイフンで foo-bar-baz と区切ることもあるが、
これは Ruby での Foo::Bar::Baz の対応と近似してることが望ましく、また、
Foo というクラスやライブラリが既にこの世に存在していることが望ましい
net-http-persistent なら Net::HTTP::Persistent というクラスなりモジュールなりの階層が存在して欲しい
自作のライブラリのクラス構造を gem 名にハイフン区切りで反映することは避けたほうがよい
require 'net/http/persistent' と、ハイフンを / に変えただけで require に書けるようにする

あと、gem 名の中に大文字使う奴は死刑
require するとき大文字で書くべきか小文字のままでいいのか迷うじゃないか

というようなことが
ttp://blog.segment7.net/articles/2010/11/15/how-to-name-gems
に書いてあったり書いてなかったりする
0047デフォルトの名無しさん2010/12/13(月) 11:31:53
自作Matrixクラスに16個の配列をセットする場合、どう書くのがいいですか。
m = MyMatrix.new
として
(1) m.set [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
(2) m.set = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
(3) m.matrix = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]

(1)は他との兼ね合いで×(2)も変だし(3)かなと思うのですがどうでしょうか。
0048デフォルトの名無しさん2010/12/13(月) 11:40:22
16個の配列でMatrixへの代入ならcolomnsかrowsだろ

と思ったがそういう話ではなかった
マス目という意味でのマトリックスなのね

newになにもないならnewの引数にするのが普通だと思う
0049472010/12/13(月) 11:42:33
>>48
後から値を変える場合はどう書くのがスタンダードですか?
0050デフォルトの名無しさん2010/12/13(月) 11:52:42
mydata[x, y] = new_elem

MyMatrixとやらの中でデータがどう扱われているかによるだろ、そりゃ
>>48の一行目で結論にならなかったことからして配列の配列が入ってるデータではないんだろうけど

ふつうは「この配列は何のデータか」を考えて、
データ配列ごと引数で指定する方法なのならそれの名前をもつ writer なメソッドにすると思う
mydata.nanika = [16桁]
みたいな
0051デフォルトの名無しさん2010/12/13(月) 11:57:43
16個と書いてあるけど実は1×16でも16×1でもなく4×4の正方行列の意味?
0052472010/12/13(月) 12:37:23
いや一般的に代入は「何とか」=ですよね?
MyMatrixのように「何とか」が自明でないときは、どうすればいいかという話です。
例えで出しただけなのでrowとかcolumnとか言われても困る。
0053デフォルトの名無しさん2010/12/13(月) 12:57:26
MyMatrix という名称と配列代入という行為である程度データ構造が自明だと思える人々 >>48 >>50 >>51
MyMatrix という名称や配列代入という行為は一般的過ぎて何も想起されないと思っている人 >>47

という差のような気もする
0054デフォルトの名無しさん2010/12/13(月) 13:00:15
普通は内部でデータを保持するインスタンス変数と同名のメソッドを使うべきだと思うんだが
たぶんインスタンス変数名をどうすればいいですかという質問になりそうな気もするな

既存のデータ系のクラスと同じような動作にしておいて、同じ名前のメソッド使うというのはどう
0055デフォルトの名無しさん2010/12/13(月) 13:04:22
たぶん配列代入もただの例で、配列には意味がないとか言い出すに一票
0056472010/12/13(月) 15:25:47
もういいです。聞くだけ無駄。
ありがとうございました。
0057デフォルトの名無しさん2010/12/13(月) 17:11:08
要領をえない質問、情報後出しで右往左往、
捨て台詞吐いて逃亡か。最悪だな。
0058デフォルトの名無しさん2010/12/13(月) 18:31:01
釣られたみなさんご愁傷様
0059デフォルトの名無しさん2010/12/13(月) 21:14:33
>>46
ActiveRecordのgem名は「activerecord」だから、ちがうんじゃない?
それからそのサイトの説明だと
> If you're adding functionality to another gem use a dash.
とあるから、既存のgemに機能をつけたす場合にダッシュ(ハイフン)を使えとあるから、そう説明しようよ。
0060デフォルトの名無しさん2010/12/13(月) 21:43:53
Rubyで統計を扱うライブラリの定番は何ですか?
0061デフォルトの名無しさん2010/12/13(月) 21:47:54
>>60
とくにないです
自分の使い慣れた統計システムのRubyバインディングとか探してください
0062デフォルトの名無しさん2010/12/13(月) 22:24:59
>>61
なるほど、バインディングですか
これから始めるため使い慣れた統計システムは特に無いので
R使ってやってみます。ありがとう
0063デフォルトの名無しさん2010/12/14(火) 00:26:20
BaseクラスのメソッドをDeriveクラスで上書きした時にBaseの方の関数を呼ぶにはどうすればいいですか。
d = Derived.new
d.hello
で基底クラスの方のhelloを呼びたい。
0064デフォルトの名無しさん2010/12/14(火) 01:00:42
定義に先立って別名を付けておく。
class Derived
alias base_hello hello
def hello; end
end

Derived.new.base_hello

あと、Derivedなんていう用語を使うのはC++くらいじゃね?
0065デフォルトの名無しさん2010/12/14(火) 01:03:24
d = Derived.new
Base.instance_method(:hello).bind(d)[]
とか?
0066632010/12/14(火) 01:31:01
簡単な方法はないか…C++ならこれで一発なのに
d->Base:: hello ();
d->Derived:: hello ();
どうするか考えます。

0067デフォルトの名無しさん2010/12/14(火) 10:46:01
FooクラスにFoo#to_sを定義しても
puts "Foo = " + foo
が、 TypeError: can't convert Foo into String になるのはなぜ。
Stringに変換するために必要なメソッドは?
0068デフォルトの名無しさん2010/12/14(火) 10:54:36
>>67
to_sを明示的に呼ぶ
Rubyは原則として暗黙の型変換のような振る舞いはしない

puts "Foo = " + foo.to_s
0069デフォルトの名無しさん2010/12/14(火) 10:59:45
>>67
puts "Foo = " + foo

"Foo = " + foo
したものの返り値を puts メソッドに渡してる
"Foo = " + foo
の時点でエラーになるはず

一応、 String#+(other) は other#to_str を呼んでいるので
Foo#to_str を Foo#to_s のエイリアスにでもしておけばいいんだが、
より現実的には>>68だと思う
0070デフォルトの名無しさん2010/12/14(火) 11:04:25
ちなみに "#{うめこみ}" の形式を使用すると to_s の定義だけで用が済む
>>67は Foo クラスに to_s と to_str の 2つのメソッドを要求してるのだな

irb> class Foo; def to_s; "FOO!"; end; end
irb> puts "Foo.new is #{Foo.new}"
Foo.new is FOO!
0071672010/12/14(火) 11:17:32
>>68-70
理解しました。to_sとto_strの2つのメソッドを定義しないといけなかったのですね。
似たような名前の関数を2つ提供するのは微妙だからto_sだけにしておきます。
0072デフォルトの名無しさん2010/12/14(火) 11:42:35
to_str は「このオブジェクトは String オブジェクトのように扱ってよい」の印
to_s は「このオブジェクトを文字列で表現するとこうなります」の意味

不用意に to_str を定義してはならない
to_str の部分でエラーが出ない = このオブジェクトは String 互換
という風に判断されるから
obj.kind_of?(String) && obj.to_s のようなもんだと思ってくれ
0073デフォルトの名無しさん2010/12/14(火) 12:34:04
1.9 では Pathname#to_str がなくなって、代わりに to_path が出来てるんだな。
0074デフォルトの名無しさん2010/12/14(火) 13:02:57
>>73
あのへんはいろいろ揉めたらしいね
to_str 自体が「既存の標準ライブラリに迎合する動作」としての使われ方をしてたから
0075デフォルトの名無しさん2010/12/14(火) 15:37:02
質問です。
Ajax アプリケーションを作成中で、サーバーサイドで Ruby 1.8.7 を使用しています。
クライアントサイドから Get で 〜〜.rb に引数つきでアクセスしようとしています。
(たとえば「〜〜.rb?No=〜&Name=〜」のようなかんじで)

しかし、Ruby 側でその引数(No=〜&Name=〜)を取得する方法も、
クライアントサイドに値を返す方法(クライアントで .responseText で取得するやつ)もわかりません。
どうやったらよろしいでしょうか?
馬鹿馬鹿しい質問なのだとは思いますが、教えてください。お願いします。
0076デフォルトの名無しさん2010/12/14(火) 16:15:14
>>75
そもそも現状の Ajax アプリケーションは Web アプリケーションの最終進化形態のひとつだ
(まあ、いろんな意味で)
サーバサイドとクライアントサイドと通信手段の基礎となる知識をすべて吸収した上で応用するという形になる

CGI 作ったことがないなら、たぶん無理だと思う
素直に Ajax 連携に定評のある他の言語使ったほうがいいんじゃないかな
0077デフォルトの名無しさん2010/12/14(火) 16:42:31
Railsスレで聞けば別の回答が返ってくる説に一票
0078デフォルトの名無しさん2010/12/14(火) 16:54:00
>>76
そうですか…そんなにハードルの高いことだったのですね…。
かなり軽く考えていたかも知れません…。
しかし、心からの親切心でそう言っていただいていると思うので
大変恐縮なのですが、私にも事情があり、どうしても諦めるわけにはいかないのです。
ほんとうにありがとうございます。

>>77
そうなんですね。
しかし今から全く未経験の Rails に手を出す余裕は無いのです。
どうもありがとうございます。
0079デフォルトの名無しさん2010/12/14(火) 17:14:35
Rubyでやらないほうが早いって言われてるのに
0080デフォルトの名無しさん2010/12/14(火) 17:34:50
>>79
誤解させてすみません。
どうしても Ruby を使わなければならないのです。
自分もできたら他言語でやりたいっす…。
0081デフォルトの名無しさん2010/12/14(火) 17:42:54
CGIだったら環境変数。Ruby関係ないよ
0082デフォルトの名無しさん2010/12/14(火) 17:44:59
>>80
迷える子羊のために三択を用意した

1. Ruby標準添付のCGIモジュールについて調べる
 でもってローカルにApacheでも立ててクエリ文字列とPOSTの内容と
 環境変数をダンプできるCGIを作って動作するところまで頑張る
 そこまでいければなんとかなる
2. 諦める

さあ選んでくれ
0083デフォルトの名無しさん2010/12/14(火) 18:03:40
第三の選択肢は↓
0084デフォルトの名無しさん2010/12/14(火) 18:10:40
中途半端な知識でAJAXなんて脆弱性垂れ流すに決まってる ちょっと考え直した方がいい
0085子羊2010/12/14(火) 19:01:23
>>82
「1.」の一択でお願いします。早速学習を始めます。
いちおう Apache はローカルにインストールしてますが、Apache に関する知識は皆無です。
環境が Windows でブラウザで
http://コンピュータ名/htdocsフォルダに置いてあるファイル名」という
アドレスにアクセスすることでそのサイトにアクセスできる状態にしています。
それで参考にお聞きしておきたいのですが、
「クエリ文字列とPOSTの内容と〜〜動作するところまで頑張る」という部分は
CGI モジュールについて学習すれば理解・実現できる内容ですか?
それとも Apache に関する書籍なども購入して学習する必要がありますか?

ほんとうにありがとうございます、救われた思いです。
とりあえず CGI モジュールについて学習します。一生懸命頑張ります。
0086デフォルトの名無しさん2010/12/14(火) 19:33:19
Ruby案件可ってことにして受注しちゃったのか?
0087デフォルトの名無しさん2010/12/14(火) 19:53:41
>>86
ていうかプログラミングに対する知識と経験が絶望的に足りないと思われ
「ふつう」の知識と経験があるなら>>75の場所では詰まらないと思うの
Ajax とは、みたいな説明や適当な Ajax の解説やサンプルを読んである程度理解したなら
Ajax として目新しいところとそうでないところの判断くらいはついて欲しい

つまりはこの人「何も作ったことがない」んだと思うよ
運転経験ない人に長距離夜行トラックでの運送なんて任せられるかw
素直に単純な CGI とかの日曜の自家用車ドライブからはじめろw
0088デフォルトの名無しさん2010/12/14(火) 19:55:26
HTMLの勉強をする
CGIの勉強をする(Rubyで)
HTTPの勉強をする
JavaScriptの勉強をする
Ajaxの勉強をする(Rubyで)

こんな順番?
0089デフォルトの名無しさん2010/12/14(火) 20:01:38
HTML の勉強をする
CGI 無関係な Ruby の勉強をする
Apache の基本的な使い方を学ぶ
CGI の勉強をする(Ruby で)
HTTP の勉強をする
JavaScript の勉強をする
Ajax の勉強をする(Ruby で)

こうだろ
…なんかめんどくさいな、どうせ表示するデータの取り扱いでも挫折するんだろうし、最初から Rails にするか
なんか、動作が遅いですとか言われそうな気もするが
でも、Rails が本番サーバで動作するかどうかのチェックも要るな
安価なレンタルサーバだとまともに動かなかったりするし
0090デフォルトの名無しさん2010/12/14(火) 20:45:55
なんか悲しい流れになってきたな。しゃあない面も大きいとは言え…。
0091デフォルトの名無しさん2010/12/14(火) 20:45:57
よその会社に丸投げで発注したほうがいいと思う
0092デフォルトの名無しさん2010/12/14(火) 20:50:42
>>89
HTMLに関しては何がわかってないの?この人
0093デフォルトの名無しさん2010/12/14(火) 20:53:32
そこそこに「わかってる」なら適宜飛ばしていいだろそりゃ
単に要素を列記しただけだと思うぞ

>>90
そもそも「カンタンにWebアプリを作成!」というのが幻想というか妄想なので…
情報商材みたいなもん
0094デフォルトの名無しさん2010/12/14(火) 21:07:51
というか質問は
* クエリ文字列の取得
* XMLHttpRequest#responseTextの取得
これだけなのになんでここまで盛り上がれるのん

後者はRuby関係ないからスルーとして
前者はcgi.params, cgi.query_string, ENV['QUERY_STRING']
その他フレームワークの類似機能を使用する、で終了じゃない
0095デフォルトの名無しさん2010/12/14(火) 21:13:34
悲しげなフレーバーを嗅ぎ取ったから
0096デフォルトの名無しさん2010/12/14(火) 22:10:21
>>75
ほかの人のアドバイスと被る部分もあるが

まずは、Rubyで簡単なCGIスクリプトを作るといい
内容はHelloWorldレベル(簡単なメッセージ表示くらい)で十分だ
作り方は検索したらいくらでも出てくるし、>>94のアドバイスも参考になる

ブラウザ上からそのCGIスクリプトにアクセスして、画面表示ができたら
AjaxでそのCGIスクリプトにアクセスして
CGIの出力を持ってくる(JavaScript側で出力を受け取る)ところまでやる

ここまでできれば、後は応用でなんとかなると思う
0097デフォルトの名無しさん2010/12/14(火) 23:47:25
どう考えても仕事じゃないだろ
あとrails勉強した方が結果的には最短距離かと
0098デフォルトの名無しさん2010/12/15(水) 00:40:41
Rubyやってる人が最短でできるのがrailsってイメージが自分はあったけど、
最近(っても古いか)の騒ぎ立てでRails使わないのにRubyやってんの?ってのが嫌。
0099デフォルトの名無しさん2010/12/15(水) 01:08:38
Railsを使わないRubyのWebアプリってやっぱイマイチなの?
CGI部分もあまり出来が良くないって聞くよね
素直にPHPでやったほうがいいのかな
0100デフォルトの名無しさん2010/12/15(水) 01:11:32
cgi.rb使うぐらいならsinatra使った方がいいよ
と話をややこしくしてみる
0101デフォルトの名無しさん2010/12/15(水) 01:42:53
>>99
Rubyで書けます

これがメリットだと感じないならRubyでWebアプリケーション作るのやめたほうがよい
いやかなりマジで
■ このスレッドは過去ログ倉庫に格納されています