トップページ⇒tech
1002コメント364KB

Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io

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

前スレ
Ruby 初心者スレッド Part 57
http://peace.2ch.net/test/read.cgi/tech/1426165733/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0262デフォルトの名無しさん2016/05/30(月) 16:45:26.45ID:sT3Um2rG
ちなみにメソッドじゃないものも確かにある
>再定義できない演算子(制御構造)
>演算子の組合せである自己代入演算子は再定義できません。
> = ?: .. ... not && and || or ::

http://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html
0263Ruby初心者2016/05/30(月) 21:37:38.47ID:FFEidQWc
Rubyの超初心者です。
Rubyの勉強を始めようと思いhttp://rubyinstaller.org/からRubyのインストーラーを
ダウンロードしたのですが、rubyinstaller-2.2.4.exe など
KINGSOFT Internet Securityでマルウェア潜伏を検知しました。(tclpip85.dll)
これは誤検知なのでしょうか?
ご存じの方、よろしくお願いします。
0264デフォルトの名無しさん2016/05/30(月) 22:40:36.17ID:IRxQFxCl
>>263
KINGS○FT Internet Securityとかいう、
某特亞ソフトがマルウェアですぞい。
ということで、窓OSでRubyを使うのもやめなはれ。

マジレスすると、誤認識。
所詮、アレは特亞だから、さっさとアンインストールしはなれ。
0265デフォルトの名無しさん2016/05/30(月) 23:40:12.61ID:CvrnMKOQ
>>263
卵を残しているからuninstallしたあと、有料ソフトを入れて全スキャン
norton eset カスペルスキーなどを推奨
0266デフォルトの名無しさん2016/05/31(火) 20:06:20.39ID:wtf3ir0Y
ShiftJISとUTF8でかかれたテキストファイルをそれぞれ読み込んで
NEC特殊文字がないか検索したいんだけど、

str.encode('Windows-31J') =~ /[�@-�I]/

みたいな式を書いてもIncompatibleだと怒られます
どうすればいいのでしょうか?
0267デフォルトの名無しさん2016/05/31(火) 20:59:36.26ID:7tSTm6mV
なんでWindows-31J"でエンコードしてんの
0268デフォルトの名無しさん2016/06/01(水) 00:14:51.04ID:91rys83L
>>260

せっかくなので答えると
&は
def &(other)
end
で定義可能
.は演算子でなく区切り文字
0269デフォルトの名無しさん2016/06/01(水) 04:44:46.68ID:bpjRczp9
円囲みの数字は、Windowsだけが使う、環境依存文字だね。CP932
0270デフォルトの名無しさん2016/06/01(水) 12:25:44.58ID:dPnMKqYG
&.って2.3のsafe navigation operatorの事を言ってるんじゃないの?
0271デフォルトの名無しさん2016/06/01(水) 12:30:21.40ID:Fp4IytvV
エスパーじゃないからわからないし
そもそもなぜ演算子すべてがメソッドじゃないと「嘘吐き」になるのかもわからない
0272デフォルトの名無しさん2016/06/02(木) 07:24:34.00ID:lxZxN/+H
Rubyのインストーラや構成ファイルがアンチウィルスソフトウェアでヒットするのは誤検知ではなく正常の範疇
プログラミングとはそういうもんだし安全側に倒した検知というのもそういうもんだ
キングソフトのアプリケーションの使用を勧めるものではないが
0273デフォルトの名無しさん2016/06/02(木) 12:24:43.10ID:hpz40EtU
>>271

分からないんだね
0274デフォルトの名無しさん2016/06/04(土) 01:10:14.44ID:5FXvcCoj
【OS】 Mac OS X 10.8.5 (x86_64)
rbenvをインストールしたいんだけど、gitの基本を学ぶのに良い書籍かサイトを教えて下さい。
ruby 2.1.xか2.0.x系でgitのインストールが書かれている本でも可です。
0275デフォルトの名無しさん2016/06/04(土) 01:35:12.26ID:3lsMjWzh
git は、ネット回線がつながっていなくても、
ローカルPC内に、コピーしてあるファイルに、上書きできる

そして、ネット回線がつながった時に、サーバーにあるリポジトリに保存すればいい

このように、皆がローカルファイルに対して、上書きしているから、
リポジトリに保存する際、他者とのコンフリクトがよく起きるので、うまく調整すべし
0276デフォルトの名無しさん2016/06/04(土) 02:51:29.78ID:n5pCla5O
わあアスペって本当にいるんだ
0277デフォルトの名無しさん2016/06/04(土) 03:27:04.44ID:C4qvAlJn
なんかむちゃくちゃでワロタ
0278デフォルトの名無しさん2016/06/04(土) 04:04:36.35ID:HeBl+5ND
rubyで動作確認したバージョン以下では動かないようにするにはどのように書けばよいですか?

例えばpythonで書くなら下記のようなイメージです。

if sys.version_info < (3, 4):
 sys.exit('version error')
0279デフォルトの名無しさん2016/06/04(土) 04:14:00.42ID:5FXvcCoj
274です。git使ったことも無いし知識もありません。とりあえず、
rbenvをインストールするためにgit clone出来るところまででOKです。

rbenvでrubyのバージョン管理をする - Qiita
http://qiita.com/MasahiroSakoda/items/b66f92df80b375f7c786

git clone [email protected]:sstephenson/rbenv.git ~/.rbenv

The authenticity of host 'github.com (192.30.252.128)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.
Permission denied (publickey).
0280デフォルトの名無しさん2016/06/04(土) 05:59:42.06ID:kjZDZHci
なぜrbenvの事は調べられるのに
gitの事は調べられないのか

ついでに言っとくと、rbenvは良いとしてもgitはスレ違い
gitの事はgitのスレ行って聞いた方が良い
0281デフォルトの名無しさん2016/06/04(土) 07:34:17.81ID:n5pCla5O
なんだまだ詰まってたのか
rbenvの作者はgitを
「rbenvをいんすとーるするぷろぐらむ」
「rbenvをあっぷでーとするぷろぐらむ」
としか使ってない(少なくとも利用者に向けては)
現時点では全く難しいこと考えずに上記の2つのコマンドラインを呪文として使うといい
その探求心はあとあと君を助けるだろうし呪文じゃないものを呪文として積み残さないことにもつながるだろう
プログラミングにはオマジナイなんて存在しないのさ ※ローカルレガシー解明職業者以外向けの文言
んでとりあえず今はrbenvを入れることのほうを優先しろw
0282デフォルトの名無しさん2016/06/04(土) 11:28:20.81ID:X9sTQ23f
>>278
RUBY_VERSION か `ruby -v`でバージョン情報を取得すれば?
02832782016/06/04(土) 18:00:02.31ID:SsvSKySH
>>282

できました!ありがとうございます。


perlからの移行なのですが、perlの use warnings; (一度も定義されていない関数を使用するとワーニングを出す)に相当するものはありますか?
02842782016/06/04(土) 18:02:18.28ID:SsvSKySH
変数を使用するときに毎回 hoge.nil? とするのは現実的ではないと思いますので、、
0285デフォルトの名無しさん2016/06/04(土) 18:09:56.30ID:X9sTQ23f
>>284
hoge rescue 例外処理
例外オブジェクトは$!で得られる
0286デフォルトの名無しさん2016/06/05(日) 04:51:30.39ID:bEHxSIM9
ruby -w
RUBYOPT環境変数 -w
$VERBOSEグローバル変数 true

これらのウォーニングは?
02872842016/06/05(日) 13:26:35.11ID:Nzi0oWQl
>>285,286

ありがとうございます。
シェバンを使ってるので下記のようにしたところ、エラーになりました。

#!/usr/bin/env ruby -w

そこで、下記のようにしたところ、うまく動きました。

#!/usr/bin/env ruby
$VERBOSE=true # nil false true

この $VERBOSE 以外にもおすすめの設定などありますでしょうか?
$-W は $VERBOSE と同じようですが、下記2つを設定しても特に変化はなさそうでした。
$-v=true
$-w=true
0288デフォルトの名無しさん2016/06/05(日) 13:42:43.61ID:sTpf+U42
>>279
なんでマルチしようと思ったの?
0289デフォルトの名無しさん2016/06/05(日) 16:47:36.99ID:V1+RWzEF
class Foo
  def <=>(other)
    〜〜
  end
end

というのを定義したとして、
<=>の左右を取り換えても同じ結果になるように

class Array
  def <=>(other)
    return 〜〜 if Foo === other
    ここに<=>の古い定義による処理
  end
end

みたいに書きたいんですが、可能でしょうか?
イメージとしてはsuperみたいな感じを思い浮かべています
0290デフォルトの名無しさん2016/06/05(日) 16:58:06.72ID:yB2MQIFp
>>289
> <=>の左右を取り換えても同じ結果になるように
その考え方自体がおかしい

あと>>288はテストケース書くことを覚えるといいぞ
0291デフォルトの名無しさん2016/06/05(日) 17:08:54.52ID:V1+RWzEF
>>290
左右取り換えても同じ結果っていうのは
Fooオブジェクトfoo <=> Arrayオフジェクトarray
が 1 なら
Arrayオブジェクトarray <=> Fooオフジェクトfoo
は -1 になる、っていう意味でした(0の時は不変)
すみません

テストケースというのも調べてみます!
0292デフォルトの名無しさん2016/06/05(日) 23:24:46.76ID:bEHxSIM9
>>287
$VERBOSEグローバル変数は、プログラム実行時に設定されるから、
コンパイル時には警告が見れないらしい

コンパイル時・実行時で、使いわけてくれ

>>289
9 <=> "9" → nil

Effective Ruby の項目13に書いてあるけど、
異なるクラス間では、<=> 宇宙船演算子は比較不能で、nil を返すのが無難

型変換か、ダックタイピングで考えた方が、無難
0293デフォルトの名無しさん2016/06/06(月) 10:29:45.98ID:4LJvtaQK
>>289
いくつか方法がある
http://d.hatena.ne.jp/rubikitch/touch/20080504/1209835550
0294デフォルトの名無しさん2016/06/06(月) 11:05:15.34ID:4LJvtaQK
>>289
リンク先よく見ずに貼っちゃったけど
そういう場合はprepend/superだな

Module FooExt
  def <=>(other)
    return 〜〜 if Foo === other
    super
  end
end

class Array
prepend FooExt
end
0295デフォルトの名無しさん2016/06/06(月) 11:47:47.85ID:MfRp00K1
日付とユーザー名見てもらっても見当つくと思うけど、
Rubyではなんでもできるなにしても許されるなんて思い上がってた時代の遺物ではある
今は標準クラスの拡張をしなくて済むような方法をなんとか模索するのが普通
普通の言語になっちゃったって? まあねえ
0296デフォルトの名無しさん2016/06/06(月) 12:13:03.09ID:G3lOY9F4
>>295
Yahoo!知恵袋みたいな回答だな
0297デフォルトの名無しさん2016/06/06(月) 12:55:43.54ID:uH2v6H5p
>>292-294
どうもありがとうございます!
prependがちょうど想定していたようなものでした!
0298デフォルトの名無しさん2016/06/06(月) 13:06:00.10ID:LOH+gXPe
>>295
十年前はムダに意識高かったな
0299デフォルトの名無しさん2016/06/06(月) 15:33:00.64ID:MfrgUwdV
>>297
ちなみに多分関係ないと思うけど、
数値っぽいクラスを作るときはNumeric#+とかを再定義するんじゃなくてFoo#coerceを定義するんだぞ

http://docs.ruby-lang.org/ja/2.1.0/method/Numeric/i/coerce.html
0300デフォルトの名無しさん2016/06/06(月) 17:30:53.24ID:uH2v6H5p
>>299
coerceを知らずに、まさにやらかそうとしてました
重ねてありがとうございます!
0301デフォルトの名無しさん2016/06/09(木) 20:20:07.54ID:biKmaAAl
たのしい 5版の8章 クラスとモジュール まで読んでいます。
Net::HTTP クラスというのが出て来たのですが、ここで使われている::の記号はNetクラスのHTTPメソッドを呼び出しているとみて良いのでしょうか?
0302デフォルトの名無しさん2016/06/09(木) 20:28:02.35ID:OsIQiMsD
Foo::BAR Fooクラスの定数BAR
FOO$bar Fooクラスのbarメソッド
0303デフォルトの名無しさん2016/06/09(木) 20:28:44.66ID:XKw/hvPS
そのへんの記号の説明自体が本に書いてねーか
面倒なら階層区切りの記号だとでも思ってくれ
Windowsエクスプローラーの\
URLの/
0304デフォルトの名無しさん2016/06/09(木) 20:28:48.01ID:OsIQiMsD
タイポ
$じゃなくて#ね
0305デフォルトの名無しさん2016/06/09(木) 20:46:09.43ID:biKmaAAl
コラムに メソッドの表記法 として

あるクラスのインスタンスメソッド名は
マニュアルではクラス名#メソッド名

クラスメソッドの名前表記には
クラス名.メソッド名
クラス名::メソッド名

というのがだいぶ前のページにありまして、それに従って解釈すると
Net::HTTPはNetクラスのHTTPメソッド
って事になるのだけれど、irbでNetクラスが呼び出せないのでおかしいなと。
0306デフォルトの名無しさん2016/06/09(木) 20:51:52.35ID:OsIQiMsD
そのくらいググればすぐわかんだろ
http://docs.ruby-lang.org/ja/2.3.0/library/net=2fhttp.html
0307デフォルトの名無しさん2016/06/09(木) 21:50:59.90ID:bVgVhSJZ
それを調べてここで報告するのがお前の仕事だろ
0308デフォルトの名無しさん2016/06/09(木) 22:07:37.30ID:c+D8jpow
職業:Web検索スペシャリスト
0309デフォルトの名無しさん2016/06/09(木) 22:35:18.52ID:j0nSzaIT
×Web検索スペシャリスト
○自宅検索員
0310デフォルトの名無しさん2016/06/10(金) 00:58:53.85ID:w12bLHXo
>>301
>ここで使われている::の記号はNetクラスのHTTPメソッドを呼び出しているとみて良いのでしょうか?

いや、それは間違いだよ
正しくは「::の記号はNetモジュールのHTTPクラスを参照している」と読む

・Rubyでは、名前空間として階層的な(=入れ子になった)モジュール構造を定義できる
・Rubyでは、クラスClassはクラス Modouleを継承している(=サブクラスである)から、クラスも(モジュールと同様に)階層的なモジュール構造を定義できる
・記号::は、この階層的な名前のパスを区切るために用いられる(>>303)

たとえば Net::HTTP::Getは、モジュールNet内で定義されたクラスHTTPの
更にその中で定義されたクラスGetを指す
くわえて Net::HTTP::Get::METHODは、前記のクラスGet内で定義された
定数METHODを指す

 http://www.h6.dion.ne.jp/~machan/tmdoc/example/net.book/html/tmdoc.def.Net.HTTP.Get.html

$ irb
>> require 'net/http'
=> true
>> Net::HTTP.new('127.0.0.1')
=> #<Net::HTTP 127.0.0.1:80 open=false>
>> Net::HTTP::Get::METHOD
=> "GET"
>>
0311デフォルトの名無しさん2016/06/10(金) 01:05:31.69ID:w12bLHXo
>>305
>それに従って解釈すると
>Net::HTTPはNetクラスのHTTPメソッド
>って事になるのだけれど、

Rubyでは:
・モジュール/クラス/定数は、英大文字で始まる
・メソッド/ローカル変数は、英子文字で始まる
という決まりがあるから、記号HTTPは
(メソッドではなくて)モジュールもしくは
そのサブクラスであるクラスを表すものと推測すべき
0312デフォルトの名無しさん2016/06/10(金) 03:03:40.39ID:1r2/ZPeG
>>302
これの2つめは初心者混乱するだろ
どうしても2つめを書きたいならFoo#barとFoo.barの違いと一緒に伝えるべき
0313デフォルトの名無しさん2016/06/10(金) 23:17:05.17ID:bspATi8a
::ってフォルダ階層のパス区切り記号だったんだ。

昔のMacOSでは:がフォルダ階層のパス区切り記号に使われていたらしいから、開発者はAppleUserだった?
0314デフォルトの名無しさん2016/06/11(土) 06:13:16.75ID:Z1WdmHmp
>>313
C++由来
残念でした
0315デフォルトの名無しさん2016/06/11(土) 11:55:15.68ID:peVuG0iD
ちょまどたんはぁはぁ
https://pbs.twimg.com/media/Cko0bn9VAAANiKM.jpg
https://pbs.twimg.com/media/Cko0cHtUUAAvUQo.jpg
https://pbs.twimg.com/media/Cko0cbrUYAYeAnc.jpg
0316デフォルトの名無しさん2016/06/11(土) 19:18:48.19ID:iSPIsEmM
だれ?
0317デフォルトの名無しさん2016/06/11(土) 20:06:42.47ID:tJYHO1Ae
>>316
たぶんこいつ
https://chomado.com/
0318デフォルトの名無しさん2016/06/12(日) 02:29:41.59ID:GVmUZEwV
ちょまどのあの噂は本当なんだろうか
0319デフォルトの名無しさん2016/06/12(日) 11:23:16.13ID:xN9NR8mn
今なら聴ける気がするので。

ちょまどの絵は好みじゃないけど、
CPUの創り方
の絵を描いた絵師さんを知りたい。
0320デフォルトの名無しさん2016/06/12(日) 14:16:10.54ID:5Z+bF2WO
スレチ
0321デフォルトの名無しさん2016/06/12(日) 16:09:48.75ID:nE4rQ5a5
>>320

http://livedoor.blogimg.jp/rogyweb314/imgs/3/b/3b3ad6de.png
0322デフォルトの名無しさん2016/06/12(日) 17:10:50.81ID:cSvEa/ak
マイナビに問い合わせたらええやろ。
ストーキングしたいので教えてくださいって。
0323デフォルトの名無しさん2016/06/12(日) 21:14:18.29ID:4Gt33m04
>>319
スレチだけど
本文イラスト 須田 都 って書いてた
0324デフォルトの名無しさん2016/06/13(月) 01:42:21.85ID:BHwe7pwo
gemのinstall時にdevkitでビルドする系のgemをインストールする際に
ビルドの進捗状況を報告させることってできます?
時間かかってるときに固まってるのか進んでるのかわからない・・・
0325デフォルトの名無しさん2016/06/13(月) 03:03:23.43ID:I6MCNyjd
--verboseはどうだろ
0326デフォルトの名無しさん2016/06/13(月) 15:11:26.91ID:zgrawcOE
>>323
スレチだけど
本文執筆者と絵師は同一人物ってことになるな
0327デフォルトの名無しさん2016/06/13(月) 18:07:35.31ID:3kyYR2Ny
>>326
スレチだけど
著者は渡波 郁 になってたよ
0328デフォルトの名無しさん2016/06/13(月) 18:18:33.22ID:LOYYlPRQ
「スレチだけど」は免罪符にならねえよ
いい加減黙れ
0329デフォルトの名無しさん2016/06/13(月) 19:09:49.77ID:Q+rjY21+
>>327

スレチだけど、下の名前が同じだから、ペンネームかもね
0330デフォルトの名無しさん2016/06/13(月) 20:10:53.27ID:EyvJcWZd
変わるんだ変わるんだ
出版毎に
行くぞ幽霊作家
ゴーストライター
0331デフォルトの名無しさん2016/06/14(火) 01:09:38.96ID:6xiZrmBI
1変数の非線形関数f(x)がf(x)=0となるxを求めるシンプルでいい感じのライブラリありませんか?
Ruby/GSLだとちょっとオーバースペック過ぎて…
0332デフォルトの名無しさん2016/06/14(火) 10:21:33.16ID:dYSnVaKQ
Webアプリケーションではない、それほど小さくはないツールをrubyを使って書こうとしてます。
規模は、Model数でいうと20個くらいです。
Controller的なものもRubyで、Viewはありません。

で、データベースアクセスにActiveRecordを使ってみようと思ったんですが、establish_connection()に
250msくらいかかってしまいます(localのPostgreSQLに対して)。
これだと、Model用のテストで、データベース接続だけで250*20=5秒もかかってしまいます。

これを改善する方法はありますか?
・establish_connection()そのものを速くする方法
・test/unitを使ったテストでデータベース接続を共有する方法など

環境は、
ruby 2.3.1p112
activerecord (4.2.6)
CentOS release 6.8
0333デフォルトの名無しさん2016/06/14(火) 13:07:34.64ID:Xw3W+KJl
iruby

割とマジで
0334デフォルトの名無しさん2016/06/14(火) 13:58:36.80ID:dYSnVaKQ
>>333
情報サンクス。

irubyはハードルが高そうなので、とりあえずjrubyで試してみるかと思ったけど、jruby + pg + activerecordな
環境を作るのさえハードルが高そうです。

$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0>
となるのに、
$ ruby test.rb
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
というエラーが。

$ ruby -v
jruby 9.1.2.0 (2.3.0) 2016-05-26 7357c8f Java HotSpot(TM) 64-Bit Server VM 25.45-b02 on 1.8.0_45-b14 +jit [linux-x86_64]

ちょっとあきらめモードです。
0335デフォルトの名無しさん2016/06/14(火) 14:05:30.93ID:bPd6E78A
>>332
これよくわからんのだけどデータベースはひとつじゃないの?
モデルはテーブルに当たると思うのだが
0336デフォルトの名無しさん2016/06/14(火) 14:24:28.45ID:dYSnVaKQ
>>335
モデルの数=models/*.rbのファイル数=test/*_test.rbのファイル数
となると思ってます。

*_test.rbを1プロセスでまとめて実行できれば、データベース接続も共有できそうな気がするんですが、
現状では*_test.rbそれぞれを別プロセスで実行し、それぞれデータベースに接続してます。

全体的にActiveRecordを使った方が楽になりそうではあるんですが、ノウハウが無いのと接続が
遅いということで、現状はPG::connect()して直接pgのメソッドを使ってコーディングを進めてます。
0337デフォルトの名無しさん2016/06/14(火) 22:17:59.99ID:Kzbvzu4b
>>332
DBMS(PostgreSQLサーバ)への接続にいくらかの時間を要するのは当たり前のこと
普通はDBMSにはアプリ起動時(あるいは初回のアクセス時)に接続してそれを維持する
また、すこし規模が大きくなれば(=「それほど小さくはない」規模になれば)、
コネクションプールといった技法も要求される

それから「250*20=5秒」という計算式について、この20という定数は何の値かな?
もしModel(=テーブル)の数ということであれば、根本的なところで勘違いしてるよ
DBMS上で複数のデータベースを定義して、そのデータベース単位にコネクションを確立する
だからデータベース内に存在する複数のテーブル(=Model)をアクセスするのに、
あらたにコネクションを張る(=データベースに接続する)必要は無い
0338デフォルトの名無しさん2016/06/15(水) 02:30:34.57ID:Gm0oH8T8
こんな女の子キャピキャピ漫画の需要層は薄いだろ
だいたいRuby やワイスの格好見てみろ
フリフリのミニスカとか戦闘する気あんのかと
0339デフォルトの名無しさん2016/06/15(水) 10:14:53.09ID:0Hf+sg/L
>>337
> DBMS(PostgreSQLサーバ)への接続にいくらかの時間を要するのは当たり前のこと
その「いくらか」のオーダーは、直接接続するのとactiverecordを使用するのとでは大きく異なります。
--
t = Time.now
PG::connect(:host => 'localhost', :user => '**', :password => '**', :dbname => '**')
puts Time.now - t
--
=> 0.003679357

> それから「250*20=5秒」という計算式について、この20という定数は何の値かな?
test-unitを使ったテストファイルの数です。
user_test.rbとか。それがModelの数分できるので20ファイルくらいできる予定です。

> だからデータベース内に存在する複数のテーブル(=Model)をアクセスするのに、
> あらたにコネクションを張る(=データベースに接続する)必要は無い
現状では、20ファイル(できる予定)のテストを1プロセスで実行できる方法が見つかっていないので、
それぞれ別プロセスで実行していて、そのためデータベースへの接続も20回必要になります。
0340デフォルトの名無しさん2016/06/16(木) 22:27:32.05ID:DrR6OXvd
Ruby2.3.0で
nil[0]=0
が例外にならないんだけど、なぜだろう?

Ruby2.2だと、ふつうに例外になるのに。
Ruby2.3.0でも、nil[0]なら例外になる。
なんかおかしい気が。
0341デフォルトの名無しさん2016/06/16(木) 22:46:45.58ID:lq2RMnrw
>>340
バグ報告しましょう
0342デフォルトの名無しさん2016/06/16(木) 23:21:17.48ID:T2EM03jj
2.3.1でも例外になるね
0343デフォルトの名無しさん2016/06/16(木) 23:36:15.65ID:G8mFGz+4
nil[hoge] = hogehoge
とかしてもNameErrorにすらならないんだな
0344デフォルトの名無しさん2016/06/16(木) 23:54:18.82ID:neKk6sZN
おおこれすごいな
03453402016/06/17(金) 10:43:12.89ID:SNT89ii+
>>342
お、たすかる。
2.3.1のWindows版バイナリはまだ配布されてないので。
やっぱりバグで、修正されたんやね。
03463402016/06/17(金) 10:45:11.00ID:SNT89ii+
>>343
ぼっち演算の影響かねえ。
直接は歓迎会なさそうだけど。
0347デフォルトの名無しさん2016/06/17(金) 11:50:15.28ID:wk6+tOOo
歓迎会がなんかツボったw
0348デフォルトの名無しさん2016/06/17(金) 12:57:18.13ID:hG7B1m7h
>>340
>nil[0]=0
1.8.7 だと無事エラーになった
0349デフォルトの名無しさん2016/06/17(金) 13:29:02.01ID:WSjlHFjC
ソースが仕様です(キリっ
0350デフォルトの名無しさん2016/06/17(金) 14:21:01.72ID:SYFwm9MP
230のみで起こるバグなのか
231で修正されてるならあんまり気にしなくて良さそうだね
0351uy ◆e6.oHu1j.o 2016/06/17(金) 16:33:46.05ID:GkjZw5OC
質問です

YAMLで読み書きをしてるコードをしばらく動かしていたら
c:/ruby/lib/ruby/2.3.0/psych.rb:377:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1 (Psych::SyntaxError)
ロードエラーが出てきて、
ファイル開いてみると確かにデータのインデントが変な風に書き込まれていました(20回分くらいのデータは正常に書き込まれています

読み書きは
YAML.load_file( YAML_FILE )
と
YAML.dump( yaml , open( YAML_FILE , 'w') )
でやっています
間違ったデータを書き込んでる原因は模索中です

YAML.dumpで書き込んだデータが
YAML.load_fileで読めないケースってあるんですか?


書き込まれていたのはこんなデータです
http://echo.2ch.net/test/read.cgi/tech/1458735404/:
uy:
- '9999'
http://echo.2ch.net/test/read.cgi/tech/1458955459/:
uy:
- '9999'
- '2'
http://echo.2ch.net/test/read.cgi/tech/1462970810/:
uy:
- '9999'
- '9999'   ← これが間違って書き込まれているデータ
0352uy ◆e6.oHu1j.o 2016/06/17(金) 16:36:29.12ID:GkjZw5OC
>>351
インデントがおかしくなりました  修正

http://echo.2ch.net/test/read.cgi/tech/1458955459/:
 uy:
  - '9999'
  - '2'
http://echo.2ch.net/test/read.cgi/tech/1462970810/:
 uy:
  - '9999'
- '9999' 
0353デフォルトの名無しさん2016/06/17(金) 17:24:52.68ID:WSjlHFjC
データの方ではなく
再現するソースを貼りなさい
0354デフォルトの名無しさん2016/06/17(金) 17:34:13.83ID:8Hiy7fy+
>間違ったデータを書き込んでる

>YAML.dumpで書き込んだデータが
>YAML.load_fileで読めないケース

>← これが間違って書き込まれているデータ

自分で論理的に原因の切り分けも出来ないくせに原因特定するなんて馬鹿のすることです。
0355uy ◆e6.oHu1j.o 2016/06/17(金) 18:48:19.99ID:GkjZw5OC
>>353
uy式会社uyの守秘義務があるので貼れません

>>354
もう少しわかりやすくお願いします

自分が知りたいのは
YAML.dump( yaml , open( YAML_FILE , 'w') )
↑ の時

変数:yaml にどのような値を入れて .yamlファイルを作成した場合に
この c:/ruby/lib/ruby/2.3.0/psych.rb:377:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1 (Psych::SyntaxError)
エラーが出現するかという事ですが
一般的な方法で再現する方法は存在しないという事で良いですか?

いま現在いくつかのエラーチェックを入れ再び同スクリプトを稼働し
原因特定のため全変数を.txtでdumpしながら走らせて3時間程になりますが
今のところエラーは出現していません
0356デフォルトの名無しさん2016/06/17(金) 19:13:18.67ID:YpnIY8DD
スラドにこんな記事あった

RubyがPythonのようなポジションを得られなかったのはなぜか
http://developers.srad.jp/story/16/06/17/0827240/

最近日本でもPython本急に増えた印象あるよね。
やばいのかなRuby。
0357uy ◆e6.oHu1j.o 2016/06/17(金) 21:55:15.96ID:GkjZw5OC
>>355
ほぼ同じ別のスクリプトで再発し今度はさらに状態の悪いデータになっていたので原因は確定しました
どうバグを回避し表面化させないかというフェイズに移行します
ありがとうございました
本番環境はruby1.9.3なので古いバグを踏んだものと思う事にします
0358デフォルトの名無しさん2016/06/18(土) 15:29:35.92ID:AGMP56Qn
>>356
Pythonに負けた理由なら
1. 実行速度が遅かった
2. Windowsへの対応がひどかった
じゃね
他にもあるかも知れん
0359デフォルトの名無しさん2016/06/18(土) 15:37:16.15ID:Au7MFafK
負けたというか世界的にはRubyってRailsの組み込みスクリプトという認識しかないわけで
そもそも勝負にすらなってない
0360デフォルトの名無しさん2016/06/18(土) 15:59:35.05ID:RKqldoZs
ある意味勝ち逃げだろ Pyrrha は。
ただ、あれで終わり。
みんなの記憶にしか残らない散った存在。

Ruby はまだこれから成長する。
この差は大きい。
0361デフォルトの名無しさん2016/06/18(土) 16:49:47.95ID:SI6NucGb
勝ち負けとか心底どうでもよくね?
長けてる領域が違うだけの話
■ このスレッドは過去ログ倉庫に格納されています