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

Ruby 初心者スレッド Part 48

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/02/08(水) 06:00:47.06
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお

前スレ
Ruby 初心者スレッド Part 47
http://toro.2ch.net/test/read.cgi/tech/1322819329/


るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0652デフォルトの名無しさん2012/03/26(月) 23:50:48.30
>>645から乱れ始めた感じ
つか、>>641は諦めたんか
0653デフォルトの名無しさん2012/03/27(火) 01:33:19.50
Rubyのスローガンは楽だろ
0654デフォルトの名無しさん2012/03/27(火) 01:55:45.81
その楽は>>641の求めてる楽とは質が違うでしょ
0655デフォルトの名無しさん2012/03/27(火) 02:49:28.41
本質的には同じ
0656デフォルトの名無しさん2012/03/27(火) 02:57:03.44
たのしい と らく ではかなり違う気がするお
0657デフォルトの名無しさん2012/03/27(火) 03:03:18.87
そもそもWindows上でRubyを使おうと思うのが間違い
0658デフォルトの名無しさん2012/03/27(火) 03:18:57.47
プログラマは怠惰であるべきだ
0659デフォルトの名無しさん2012/03/27(火) 03:53:50.01
rubyでphpみたいにHTMLに組み込む事って出来ますか?
0660デフォルトの名無しさん2012/03/27(火) 03:57:26.46
erb
0661デフォルトの名無しさん2012/03/27(火) 04:07:15.93
>>659
ERBで
0662デフォルトの名無しさん2012/03/27(火) 06:46:55.63
見かけPHPのようにできる(このへん語弊があるが)というだけであって、
PHPのようになにもかもがHTML出力に際して親切に動作するわけではないので注意
0663デフォルトの名無しさん2012/03/27(火) 11:50:14.22
CSSのセレクタを構文解析できるライブラリってありませんか?
0664デフォルトの名無しさん2012/03/27(火) 17:04:06.41
http://nokogiri.org/
NokogiriっていうライブラリがCSS3のセレクタのパース機能を提供してる。
XMLとかHTMLからデータを抜き出すライブラリなんだけど
CSSのセレクタを使って要素を指定することができる。

require 'nokogiri'
require 'pp'

pp Nokogiri::CSS::parse('body:first-child form#search > input[type="text"][value=""]')
0665デフォルトの名無しさん2012/03/27(火) 22:38:23.15
Nokogiriですね
これでZenCodingを作ってみます
0666デフォルトの名無しさん2012/03/28(水) 01:42:52.48
erbが進化したら、もうruby最強になるのに。
0667デフォルトの名無しさん2012/03/28(水) 01:47:33.41
どう進化してほしいの?というかもう進化してるかもよ
0668デフォルトの名無しさん2012/03/28(水) 02:57:21.06
rubyがjsみたいになればいい。
0669デフォルトの名無しさん2012/03/28(水) 06:38:18.30
jsでrubyを実装するんだ。
0670デフォルトの名無しさん2012/03/28(水) 07:34:47.85
>>669
これ?
ttp://coderepos.org/share/wiki/JSRuby
0671デフォルトの名無しさん2012/03/28(水) 11:31:06.35
メトロってこの延長線上な気がする

ttp://2ch.at/s/20mai00527004.jpg
ttp://2ch.at/s/20mai00527005.jpg
ttp://2ch.at/s/20mai00527006.jpg
ttp://2ch.at/s/20mai00527007.jpg
ttp://2ch.at/s/20mai00527008.jpg
ttp://2ch.at/s/20mai00527009.jpg
0672デフォルトの名無しさん2012/03/28(水) 12:29:00.39
>>671
またガラパゴスが世界標準になってしまったか。
0673デフォルトの名無しさん2012/03/28(水) 12:34:49.18
1.9.3ってもう入れてもいい?
0674デフォルトの名無しさん2012/03/28(水) 12:42:25.81
日本語エンコーディングに関するガイド文書か知識をお持ちなのなら
そうでないなら遠回りなんでどっかで解説なり訓練なり受けてからにするんが吉
0675デフォルトの名無しさん2012/03/28(水) 22:13:17.95
>>666
pry とか。
0676デフォルトの名無しさん2012/03/28(水) 22:17:08.66
>>675
それirbの進化
0677デフォルトの名無しさん2012/03/28(水) 22:21:50.47
>>676
やべえ。素で間違えた。w
まあ、pryは良く出来てるのでオススメだよ!
0678デフォルトの名無しさん2012/03/28(水) 23:10:11.83
てすつ
0679営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 02:41:19.11
>>670
なにこれ?誰か説明して。
0680営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 05:27:24.85
馬鹿には無理
0681営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 14:41:23.30
メトロってこの延長線上な気がする

ttp://2ch.at/s/20mai00527004.jpg
ttp://2ch.at/s/20mai00527005.jpg
ttp://2ch.at/s/20mai00527006.jpg
ttp://2ch.at/s/20mai00527007.jpg
ttp://2ch.at/s/20mai00527008.jpg
ttp://2ch.at/s/20mai00527009.jpg
0682営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 18:19:10.53
>>679
http://labs.cybozu.co.jp/blog/nakatani/2008/01/javascript_ruby_jsruby_01.html ( Japanese )
http://labs.cybozu.co.jp/blog/nakatani/2007/11/jsirb_javascript_ruby.html ( Japanese )
http://labs.cybozu.co.jp/blog/nakatani/2007/12/jjsruby_jsruby_for_rhino.html ( Japanese )
0683営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 18:34:53.89
自演死ね
0684営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 20:57:39.99
質問させてください。

使用バージョン:1.9.3p125
読み取り専用のインスタンス変数を作りたい場合、どのようにすれば良いのでしょうか。
以下のコードを試してみましたが、うまくいきません。

class Test
attr_reader :read_only
def initialize
@read_only = []
end
end

test = Test.new()
test.read_only << "hoge"
puts test.read_only.to_s
→["hoge"]
0685営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 21:24:43.84
feezeすれば、レシーバ自体は変更できなくなるが、
それにぶら下がってるオブジェクトは変更可能なまま。

a = ['hello'].freeze
a << 'world' #=> RuntimeError: can't modify frozen Array
a[0].upcase!
a #=> ['HELLO']
0686営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 21:31:04.30
「そんなものはない」が正式な回答
Rubyはそのへんを本質的に禁止できない

「変更するな氏ね」とマニュアルに赤マジックででっかく書いとけ
それで充分
勝手に変更した人が悪いんだから、素直に不整合エラー出して終了したり微妙にそのまま走り続けたりして構わない
0687営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 21:55:24.11
そこまで責任持たなくてもいいってことだわな
0688営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 22:00:47.60
>>685,686,687
なるほど、rubyではその辺は融通きかせるのですね。頭を切り返えてみます。
ありがとうございました。
0689営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 22:56:57.75
いえいえ
0690営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 02:10:38.06
activerecordとmysql2をgemでインストールするにあたって
ぐぐったら何か問題あることはわかったんだけども
具体的に何をどうしたらいいのかわからないから
お母さんが説明するみたいに優しく教えて
0691営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 02:45:00.68
>>690
RoRはスレ違いよ、たかし。テンプレ見なさい。
0692営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 07:39:08.82
activerecord使ってたらRoR扱いなん?
0693営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 07:49:29.94
>>692
多くはそうだと思うけど、んなこたない
0694営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 11:02:22.84
置換をするときに正規表現は使いたくないんだけど
gsubやsubしか見当たらないけど何かいい方法ないですか?
0695営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 12:03:07.01
こういうの?

str = "abcde"
str["bc"] = "fff"
p str #=> "afffde"
0696営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 12:15:14.76
>>694
sub, gsubに文字列渡したらおk。とかそうこうことでなくて?
0697営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 12:29:24.90
>>695
そういうのやりたい!!
ってかそれでいの?!!

>>696
URLの置換なのでエスケープするのが大変なので何かいい方法ないかと探しています
0698営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 12:50:55.03
>>695
うまくいきました!!
置換する文字列がたくさんあった場合は何度か繰り返しました

プログラミングで感動したのはひさびさです。まだ興奮しています!!
ありがとうございます!
0699営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 17:56:32.44
>>697
>>695で解決したみたいだけど一応。
パターン中に / が沢山登場する時は、
%r!pattern! を使えば / はエスケープしなくてもいけますよ
0700営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 20:06:28.99
メタキャラクタ使わないのならsubやgsubでもいいと思うけど

"/a/b/c".sub('/b'){'/x'} # => "/a/x/c"
0701営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 20:34:32.02
>>700
>>694じゃないが
Regexpオブジェクトじゃなくて、文字列渡せばいいだけか。
そらそーか
0702uy2012/03/31(土) 00:01:45.73
>プログラミングで感動したのはひさびさです。(キリッ
>まだ興奮しています!! (キリッ


きめーから死ね初心者


>置換する文字列がたくさんあった場合は何度か繰り返しました
はああああああああああああ??????????Wwwwwwwwwww

書き込みから分かるわ、 どんなゴミカスソースかいてるかわかるわwwwwwwwwwゴミ量産すんなしね
変な事をやってないでさっさと正規表現覚えろカス 市ね初心者
0703営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 04:26:20.80
いちいちコテ付けて相手してほしいのか?
0704営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 06:05:58.03
>>703
マ板とム板でまだ表示してるのたぶんお前だけだぞ
0705営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 10:38:51.66
uy === QZ
0706営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 13:38:44.20
uyってのは本当に頭悪そうだけど、qzはそれなりに知識あるから明らかに別人。
0707営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 18:21:50.40
uyは頭が悪いというよりは、精神に何かしらの異常を持つ人物、という感じが強い
QZはまあ、普通のクソコテだな
0708営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 18:33:12.27
rubyスレはおかしい人が多いね
0709営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 18:55:35.60
rubyスレに限らずコテはいつだっておかしいのばっかだよ。
リアルで名前売れる奴はそもそもこんな所で目立ちたいとは思わない。
0710営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:11:27.86
真偽値を反転させるだけのメソッドってないですよね?
@flag を反転させるには
@flag = !@flagってやるしかないですか?
0711営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:25:20.63
真偽値というものはないということに一応なってる
たとえば 3 の否定は false だ
わけわかめ
ペアとして何を返すかはメソッドによって違うんで、安易に true と false を期待してはいけないし、
true と false と直接比較するコードを書いてもいけない(これはめんどくさい点だとは思ってる)

# だめ
if hoge == true then...
# ベスト
if hoge then...
# 真でもtrueを返さないかもしれないめんどくさいメソッドにめんどくさいイディオムで対抗
if !!hoge == true then...

で、まあ、回答としては、メソッドとしてはないっす
not か ! を使うしかないっすな
0712営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:35:01.75
すべてのオブジェクトが真偽値として解釈できる。
trueとfalseは真偽の代表値にすぎない。

変数にあくまで単なる真偽だけを保持したいとき
true や false を代入して使うことはあっても、比較には使わない。
0713営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 21:50:57.23
ある変数やメソッド戻り値が true であって、それを false にしたい、または false を true にしたいのなら !foo でいいし、
そのように書いてあったら意図もそのように読む

が、偽を真にしたい場合は !foo では不足かもしれない
foo が真のときに何を返すかを、 ! は知らない
「特定の文字列があるかどうかを調べ、あったらその文字の位置を整数で返し、見つからなかったらfalseを返す」
というメソッドで、false が返ってきた場合、! で反転しても整数にはならない

まあ、真偽値って言ってるくらいだから true か false のどちらかしか入ってないんだろうけど(まさかnilが入ってたりしないよね?)
0714営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 00:17:36.51
>>711-713
やっぱりむちゃくちゃな願望ですよね
素直に!を使います
0715営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 00:45:06.60
foo? は無理してでも true と false のどちらかのみを返すべきという人と、
めんどくさいから非偽オブジェクトと偽オブジェクトでいいじゃんという人がいる

後者の人はおそらく irb 使ったことがないんだろう
0716営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 00:55:19.51
0.zero? # => true
1.zero? # => false
0.nonzero? # => nil
1.nonzero? # => 1
0717営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 01:02:24.27
>>715
そういうのに限ってその非偽オブジェクトがきれいにinspectされないんだよな
hoge.hage.hoo?と打つとデフォルトのinspect(しかも入れ子)がだーっと流れたりするのでやる気が7割くらい減退する
0718営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 01:10:37.74
nonzero? はぶっちゃけ sort の比較ブロック用だからな。
(a.x <=> b.x).nonzero? || (a.y <=> b.y)
0719営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 16:00:03.93
>>702
マ板のuyスレにコレ張られてキレたみたい


Rubyについて(アンチ専用) Part004
644 :uy:2012/01/30(月) 10:15:38.68
Rubyに移らずにPerlをまだ使ってる奴がいるのは、Rubyが省略記法を実装していないからだよ
正規表現も、$1,2,3,4似たようなものだし $_ を実装してもいい気がするんだよね
645 :デフォルトの名無しさん:2012/01/30(月) 10:49:52.53
$_は昔からRubyに入ってるよ
0720営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 16:07:27.63
初心者は初心者らしく振舞って教えを請う方がちゃんと知識も身に付くのにね。
0721営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 17:31:47.06
Rubyで$_を意識するのってワンライナーぐらいだろうから知らなくても仕方ないよね(フォロー)
0722営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 17:58:20.68
??
0723営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 18:16:17.72
NG外して >>719 見てみw
0724営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 18:32:43.56
uyが見える安価つけないでください><
きもちわるいです><
0725営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 20:27:04.76
暴言吐いたのも妬ましかったんだな
他人が進歩するのをみて
0726営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 20:50:37.15
条件式に正規表現だけポツンと書くと $_ を対象にするってのは
まだ使えるんだな。警告出るけど。
0727営利利用に関するLR審議中@詳細は自治スレへ2012/04/01(日) 21:07:50.08
素直な初心者に八つ当たり
  ↓
原因?のレスを貼られる

悪い事は出来んなぁ…
0728営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 14:53:30.99
aliasがシンボルを引数に取れるのってなんかキモい。
0729営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 17:16:35.04
windowsなんだけどおすすめの開発環境ある?
0730営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 17:22:10.39
煽りでもなんでもなく、特にない
普段他の言語で使ってるのがあってRubyでも使えそうならそれで
0731営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 19:19:02.82
eclipseでいいじゃん
0732営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 21:11:23.96
「利用できる」と「おすすめである」の間にはわりと深い谷が
0733営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 21:47:51.57
damare kasu !
0734営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 21:53:29.13
Windows+開発環境に反応するbotがまだ稼動してるのかw
0735営利利用に関するLR審議中@詳細は自治スレへ2012/04/02(月) 23:01:03.85
「Ruby」が国際規格に 

独立行政法人の情報処理推進機構(IPA)は2日、日本生まれのプログラミング言語「Ruby(ルビー)」が国際標準化機構(ISO)などの国際規格として承認されたと発表した。
プログラミング言語規格の分野で、日本発の言語が承認を得たのは初めて。
IPAなどによると、Rubyは松江市在住のまつもとゆきひろさんが1993年に発案し、その分かりやすさから世界中のプログラマーらが愛用。
言語の信頼性や安定性向上を目指し、IPAが国際規格化の取り組みを後押ししてきた。
ISOなどの委員会が3月31日に締め切った投票で承認された。
ttp://www.chunichi.co.jp/s/article/2012040201001954.html
0736営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 01:09:21.35
>>735
エイプリルフールはもう終わって・・・・え?
0737営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 01:12:12.33
JISがISOになるのって
案外早いのな
0738営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 02:28:53.25
本当に国際規格にするならコミッタを少しは選りすぐった方がいいよな。
マジで素人に毛が生えたような人達もいるし。
0739営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 02:39:23.80
毛が生えてるか微妙な人もいるじゃん(性的な意味で
0740営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 05:56:38.39
>>732
理解できないんだと思うよ

・ "それ"をロクに使っていない初心者
・ Rubyのことが気に入らないアンチ
・ Rubyを使う人が困ればいいと考える基地外

がレスすることがあるので質問者の人はお気をつけ下さい
0741営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 11:08:44.12
このスレ昔はこんなんじゃなかったよね
0742営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 12:01:25.57
1.9.3で�@や�]や�b�1や10やNoに変換したいんだけどどうしたらいいですか?
0743営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 18:03:49.94
Stringクラスのマニュアル嫁
0744営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 18:58:17.82
>>742
str = '1.9.3で�@や�]や�b�'
repl = { '�@', '1', '�]', '10', '��', 'No' }
puts str.gsub(/./){|c| repl[c] or c }
puts str.chars.map{|c| repl[c] or c }.join
0745営利利用に関するLR審議中@詳細は自治スレへ2012/04/03(火) 20:58:42.63
>>744
ありがとうございます!ありがとうございます!!
0746営利利用に関するLR審議中@詳細は自治スレへ2012/04/04(水) 00:59:30.64
Ruby1.9では
{'foo','bar'}という記述はダメになったようですな
{'foo'=>'bar'}しか認められないようで

で、Ruby1.9以上での別解
str = '1.9.3で�@や�]や�b�'
repl = {'�@'=>'1', '�]'=>'10', '��'=>'No' }
puts str.gsub(Regexp.union(repl.keys),repl)
0747営利利用に関するLR審議中@詳細は自治スレへ2012/04/04(水) 01:57:24.05
対象の文字列がすごく長いときや、変換元の文字列が1文字でない場合には
puts str.gsub(Regexp.union(*repl.keys), repl)
こんな感じ?
0748営利利用に関するLR審議中@詳細は自治スレへ2012/04/04(水) 11:47:07.79
>>746
> Ruby1.9では{'foo','bar'}という記述はダメになったようですな
不注意でした。指摘どうもです

>>747
splatしなくてもいいんじゃない?

Regexp.union('foo', 'bar') #=> /foo|bar/
Regexp.union(['foo', 'bar']) #=> /foo|bar/
0749営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 11:42:19.55
Eclipse + Ruby1.8.7の環境です。
1つのプロジェクトにhoge.rbとtest.rbを作り、test.rbを実行してhogeのオブジェクトを作りたいのですが、
test.rb内でrequire "hoge.rb"をしないと、
>test.rb:2: uninitialized constant TEST::Hoge (NameError)
とエラーが出てしまいます。
わざわざrequireしないとオブジェクト化できないのでしょうか?
ソースは以下のようなものです。

# hoge.rb
class Hoge
def hogehoge
p "aaa"
end
end

# test.rb
class TEST
a = Hoge.new
a.hogehoge
end
0750営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 12:09:53.44
hoge.rbとtest.rbは同じディレクトリにあるだけで無関係のファイル
だから明示的にrequireしてやらんといけない
0751営利利用に関するLR審議中@詳細は自治スレへ2012/04/05(木) 13:38:12.73
>>750
レスありがとうございます
てっきりJavaと同じ感覚でプログラミングしようと思っていましたがそこは違うみたいですね・・・
■ このスレッドは過去ログ倉庫に格納されています