Ruby 初心者スレッド Part 67 (724レス)
1-

194: (ワッチョイ 152c-3tT5) 2021/06/08(火)11:47 ID:dOMi6vvz0(1) AAS
そのアプリが、SIG-INT・中断をキャッチしない場合は、
SIG-KILL・強制終了されるのだろう

強制終了は、受け身が取れない。
たぶん、デフォルトの挙動は、そうなのだろう
195: (ワッチョイ 3e8c-sVwe) 2021/06/08(火)12:46 ID:ljhkY4kR0(2/4) AAS
リダイレクトしていなければ普通にat_exitに飛ぶんだよ
196: (ワッチョイ d95f-xfqN) 2021/06/08(火)14:00 ID:8dk2g5lI0(1/2) AAS
試しにpythonでもatexit使ってみたが同様に強制終了される
Traceback出力されるのにatexitは実行されない
197: (ワッチョイ 1533-4+2e) 2021/06/08(火)14:04 ID:xXGg8olZ0(1) AAS
Rubyスレなんだが!
198: (ワッチョイ d95f-Z4gB) 2021/06/08(火)14:34 ID:8dk2g5lI0(2/2) AAS
powershellがバグってる
cmd /c 経由なら正常にリダイレクトおよびctrl+cできたわ
199: (ワッチョイ 3e8c-sVwe) 2021/06/08(火)14:44 ID:ljhkY4kR0(3/4) AAS
え〜〜マジっすか

検証してくれてありがとうございました。
200: (ワッチョイ 3e8c-sVwe) 2021/06/08(火)17:51 ID:ljhkY4kR0(4/4) AAS
まずパイプが終了して、それに巻き込まれてpythonのプロセスが落ちるとかなんとか
rubyの挙動を調べるためにpythonでググるってなんだかな
201: (オッペケ Sred-1bbd) 2021/06/08(火)20:59 ID:7WqSN2WLr(1/2) AAS
そういやパイプ周りの不具合がなんかあったな
202: (オッペケ Sred-1bbd) 2021/06/08(火)21:13 ID:7WqSN2WLr(2/2) AAS
と思ったら今回の件と何も関係が無かったわ。

外部リンク:bugs.ruby-lang.org
203: (ワッチョイ ea92-Qqtb) 2021/06/08(火)21:15 ID:S62X2+fs0(1) AAS
>>159
ほんと、これは甚だ同意。
204
(2): (スププ Sdea-mjSI) 2021/06/10(木)21:34 ID:Hn4s45bFd(1) AAS
現在ラズパイにrubyとpythonを入れて処理を並列に自動実行しようと思ってます
ただ台数が多いため一台ごとにソースを変えるのは回避したいです
なので理想は起動時に最新のソースに自動で更新です
このようなことをしたいときはどのようにするのが一番簡単でしょうか?
rubyでサーバーから最新のソースをコピーしたあとにrubyとpythonを実行?
家で使用するのでセキュリティーとかは気にしません
205: (ワッチョイ 0a01-UPQK) 2021/06/10(木)22:40 ID:t0oieqtV0(1) AAS
>>204
rsyncすれば?
206: (ブーイモ MM67-bi/t) 2021/06/18(金)09:43 ID:Jo75oGSbM(1) AAS
>>204
厳密に一斉に切り替わらなくてもいいならcronとかで定期的にGitHubからpullする
手段が目的だと堂々と言えるならKubernetesのクラスタ組むとかも面白い
207: (アウアウウー Sa47-565v) 2021/06/23(水)23:47 ID:vtN99wcma(1) AAS
ライブラリのopenのように、
open() do |f|
・・・
end

と書いてもよく、

f= open()
・・・
f.close

と書いてもいいというクラスor メソッドは
どうやって作ればいいのでしょうか。
省2
208
(1): (ワッチョイ 5a01-QZnr) 2021/06/24(木)00:15 ID:PG/lAwcj0(1/2) AAS
if block_given? で分岐
209: (ワッチョイ 3bbb-565v) 2021/06/24(木)07:40 ID:R0/fGgxp0(1/2) AAS
>>208
ありがとうございます。
うまく作れました。
210
(3): (ワッチョイ 3bbb-565v) 2021/06/24(木)07:56 ID:R0/fGgxp0(2/2) AAS
すみません、もう一つ教えて下さい。
rubyというかプログラムを書くとき全般の注意として、
ファイルopenとcloseはなるべく近くに書くようにと
ありました。
恐らくclose漏れを警戒しているのだと思います。

yieldを使えば、以下コードでそれを実現できます。

def fileInterface
f= open()
begin
yield f
省17
211: (ワッチョイ db33-l/cN) 2021/06/24(木)09:32 ID:+4IsK47J0(1/2) AAS
>>210
大量の処理を関数にして分離。
あるいは、しょせん理想でしかないので、離れていても気にしない。
212: (ワッチョイ a75f-5d62) 2021/06/24(木)10:36 ID:5MDZvZ/d0(1) AAS
>>210
close漏れを警戒するのであれば、openにそのままブロックを渡した方がいい
openはブロックの実行結果を返し、ブロック脱出時に勝手にcloseします

まぁ、どうせclose漏れしてもそのうちGCに回収されるかプロセス終了時にcloseされる
213: (ワッチョイ 5a01-QZnr) 2021/06/24(木)11:01 ID:PG/lAwcj0(2/2) AAS
>>210
yield使った実装とやることは同じ

f= open file
begin
大量の処理を含むメソッド f # <― yieldがメソッドに変わるだけ
ensure
f.close
end

同じだからこそ毎回同じことを書かなくてもいいようblock付きで呼び出す
open(file){|f| 大量の処理を含むメソッド f}
1-
あと 511 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.011s