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

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}
214
(1): (アウアウウー Sa47-565v) 2021/06/24(木)12:31 ID:9bIzV4XCa(1) AAS
大量の処理を手続きオブジェクトに分離するのは、やりました。
やっぱりそれしかないかな。

ブロック付きで渡すのはオブジェクト指向ではない
コードになりやすく、今回は考えてないです。

また、全体をensureで囲うのは、
さすがにensure対象が暗黙的すぎてちょっとな・・・です。
215: (ワッチョイ db33-l/cN) 2021/06/24(木)13:25 ID:+4IsK47J0(2/2) AAS
>>214
> ブロック付きで渡すのはオブジェクト指向ではない
> コードになりやすく

そうか?
まあ、「オブジェクト指向」にもいろいろあるからな。w
216
(1): (ワッチョイ 0d01-++Tn) 2021/07/17(土)09:58 ID:yHV+uNLK0(1) AAS
railsにおいて あるフォームから特定の変数に送られるデータの内容を固定したいのですがなにかいい方法ありますか?

具体的には
<%= form_with model: @hoge do |form|%>
<%= form.text_field :name , value: 'hoge'%>
<%= form.submit %>
<% end %>
と書かれている場合 hogeというモデルのnameという変数に必ずhogeが入るようにしたいのですが上の書き方だと初期値にhogeが入るだけで編集可能になってしまいます。
217
(1): (ワッチョイ 552c-0PSu) 2021/07/17(土)10:48 ID:xmQE+uIu0(1/5) AAS
openに、ブロックを渡す方法は、
コンテキスト・マネージャーという、多くの言語で使われているデザインパターン

これよりも良いものは作れないから、皆が使っている
218: (ワッチョイ 552c-0PSu) 2021/07/17(土)10:54 ID:xmQE+uIu0(2/5) AAS
そりゃ、フォームはサーバーへ送られて更新されるものだから、
変更可能のフィールドが普通

変更不可のフィールドにするなら、
そのフィールドをサーバーへ送らないようにしないといけない

そういうオプションがあるのかな?
219: 218 (ワッチョイ 552c-0PSu) 2021/07/17(土)11:08 ID:xmQE+uIu0(3/5) AAS
「html disabled readonly」で検索!

HTML の <input> 要素には disabled と readonly 属性が存在します

disabled : コントロールが無効化され、フォームを Submit しても、値の送信が行われない

readonly : 値の変更は行えないが、コントロールは有効なので、
フォームを Submit すれば値の送信が行われる
220: 218 (ワッチョイ 552c-0PSu) 2021/07/17(土)11:15 ID:xmQE+uIu0(4/5) AAS
変更不可のフィールドなら、

<input> 要素などを使わずに、単にテキストを表示すれば?
221
(1): (ワッチョイ 615f-SRm2) 2021/07/17(土)13:56 ID:EBHVYdQH0(1) AAS
>>216
hidden_field使ってもいいけど
そもそもformによる入力=webからの入力は信頼してはいけない
1-
あと 503 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.012s