Ruby 初心者スレッド Part 66

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 2a2c-RM0q)2020/01/04(土) 01:15:34.30ID:X7t3Qsuc0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

0952デフォルトの名無しさん (ワッチョイ 8ea7-3brL)2020/12/04(金) 00:07:56.54ID:fauI+lK+0
ありがとうございます
CentOS 7.8上に Ruby2.5.8 + Rails4.2 + MySQL8.0 で立てる、ごく普通の
Webアプリを構築しています。nginxは1.16です

ログイン画面で認証(sorcery)したら次画面に自分が所属する店の売り上げを
表示する、というアプリを作っているのですが、店の売り上げはログインした
ユーザに関する店の情報だけ出せば良いので、ActiveRecordのdefault_scopeを
使って、current_userのユーザ情報を元にscopeを設定しています

おおむねこんな感じです

default_scope {
where(shop: current_user.show)
}

0953デフォルトの名無しさん (ワッチョイ 8ea7-3brL)2020/12/04(金) 00:12:58.79ID:fauI+lK+0
current_user情報の保持はRsquestStoreを使っています

うまく動いていないのは、このRequestStoreを介したcurrent_user情報が
modelのdefault_scopeの中でうまく不具現できないときがあるのです
うまく動くときもあるだけに逆に難儀しています

たまにcurrent_userの情報が直前にログインしていた別のユーザの情報と
なっている事が合って、default_scopeが期待した動きになりません。
デバッグで確認してみると、controller上でRequestStoreからcurrent_userを
復元させる場合は必ず期待通りに現在ログイン中のユーザの情報になりますが
model内で同じ事をやると正しく復元できたり出来なかったりします

model内でRequestStoreを使用するのがそもそも間違っているのでしょうか?

0954デフォルトの名無しさん (ワッチョイ 732c-XXx1)2020/12/04(金) 11:46:23.71ID:sfksvFP90
Rails 4.2 は古い

今は、Rails 6 の本も数冊出てる。
最低でも、Rails 5 以上

パーフェクト Ruby on Rails、2020/7、には、
scope とは再利用するクエリに、名前を付けるものって書いてある

class Book < ApplicationRecord
scope :costly, -> { where( "price > ?", 3000 ) }
end

これで、Book.costly と書けば、
Book.where( "price > ?", 3000 )となる

0955954 (ワッチョイ 732c-XXx1)2020/12/04(金) 11:58:35.47ID:sfksvFP90
同じ本に、default_scope は使うなって書いてある

そのモデルクラスのすべての操作に、暗黙的に適用されるため、

逆に適用しない場合に、
Book.unscoped.where(何々)みたいに、
一々、unscoped で取り消さないといけないから、初心者を惑わすから

0956デフォルトの名無しさん (ブーイモ MMed-rU9g)2020/12/04(金) 13:08:31.79ID:tBcZspOUM
>>953
まずはcurrent_userを設定してるところに問題ないか見直したほうがいいんじゃね?

0957デフォルトの名無しさん (ワッチョイ 66e6-RsF0)2020/12/08(火) 13:45:26.29ID:/FLfc1Yi0
anemoneが更新されていないのですが、
代替えってありますか?

0958デフォルトの名無しさん (ワッチョイ 0c01-zWK8)2020/12/08(火) 15:24:37.53ID:L/fvSJtl0
>>957
kimurai, spidr

0959デフォルトの名無しさん (ワッチョイ 66e6-RsF0)2020/12/08(火) 16:31:36.83ID:/FLfc1Yi0
>>958
あざっす

0960デフォルトの名無しさん (ブーイモ MMcf-oE3n)2020/12/10(木) 20:38:12.66ID:TEgFYOMiM
DBロールバックっていつ使うんすか?
マイグレしたあとにリクエスト処理してロールバックしたらデータ整合性崩れない?
NULL不可をNULL可能にマイグレ→NULLデータ追加→ロールバック→戻せなくて死亡
みたいな感じ?
バックアップダンプファイルからリストアじゃイカンのかな

0961デフォルトの名無しさん (ワッチョイ 8714-kNbH)2020/12/11(金) 02:39:12.75ID:ExAO4AKO0
>>960
トランザクションの基礎を勉強しなさい
アプリを実際に作りなさい
経験がなさすぎる

0962デフォルトの名無しさん (ブーイモ MMcf-oE3n)2020/12/11(金) 08:54:21.70ID:Ollsi59NM
>>961
あーそっちのロールバックじゃなくてマイグレのロールバックな

0963デフォルトの名無しさん (ワッチョイ 5f33-Igzg)2020/12/11(金) 10:55:45.84ID:vQm1aiEb0
>>962
それは「Ruby」「初心者」スレで聞くことなのか?

0964デフォルトの名無しさん (ワッチョイ df01-c3Ov)2020/12/11(金) 11:49:56.62ID:s+ujdTab0
>>960
もし戻す必要が出た場合にそれまでの間に追加・更新されたデータをどうするか先に考えておく必要がある
NOT NULLに戻す場合はchange_column_nullだけで対処可能だからそんなに問題にならない
バックアップから戻したら追加・更新されたデータが消える

0965デフォルトの名無しさん (ブーイモ MMcf-oE3n)2020/12/11(金) 12:49:02.80ID:PpUdey1gM
>>963
初心者といったらruby
rubyといったらrails
railsといったらmigration

0966デフォルトの名無しさん (ブーイモ MMcf-oE3n)2020/12/11(金) 12:57:56.46ID:PpUdey1gM
>>964
ふむ
マイグレのセマンティクスをよく考えて個別にロールバックを実装していくしかないのかな
でもそれだとロールバック実装コストがかなり高く付きそうではあるな
どうせロールバックは緊急時にしか使わないわけであって
だったらロールバックは捨ててバックアップリストアでもいいんじゃないかなと

0967デフォルトの名無しさん (ワッチョイ df01-c3Ov)2020/12/11(金) 16:10:31.24ID:s+ujdTab0
>>966
実装しないとしても戻す必要が出た場合にどう対応するのかを事前に検討しておく
検討の結果、実装しない選択をするんであればいいけど
何も考えずバックアップリストアでいいとか言ってると確実にGoToトラブル

ロールバック時に必要な対応も考慮して
アプリは戻してもDBは戻さなくていいような方法を取ることもよくある

0968デフォルトの名無しさん (ブーイモ MMcf-oE3n)2020/12/11(金) 19:19:15.81ID:jyJfdkePM
.そもそも戻す必要性を可能な限り無くすために実データレプリカを含む膨大なデータセットでテストする
.運悪く戻す場合も安易なロールバックに頼らず修正マイグレーションを開発して緊急リリースする
.それでもだめなら神頼みロールバック
.それでもだめならバックアップリストア

これでOK

0969デフォルトの名無しさん (ワッチョイ 7f2c-kRr2)2020/12/13(日) 01:03:58.24ID:bSx7ciZe0
1. まず、これから更新するデータを、ジャーナルに書き込む
2. 実際に更新する
3. ジャーナルから記録を消す

だから、ジャーナルに記録があれば、更新できなかったと言う事。
その場合、回復ポイントから、ジャーナルにある分だけ更新していく(roll forward)

レアケースで、2が正常に終わった後、3でエラーになった場合は、
回復ポイントから、ジャーナルにある分だけ更新していく過程で、
既に正常に更新されている事を、チェックする

0970デフォルトの名無しさん (ワッチョイ 7f2c-kRr2)2020/12/13(日) 01:12:39.96ID:bSx7ciZe0
Kubernetes では、ネットワーク分断に備えて、
マスターを、3, 5, 7個の奇数にしておく

奇数なら、2:1 とか、過半数を取れるから、多数派を正常として扱う事ができる

偶数なら、2:2 とか、1:1:2 などに分断されても、
どのグループも過半数が取れず、判断できなくなる

0971デフォルトの名無しさん (ワッチョイ 7f2c-kRr2)2020/12/13(日) 01:24:25.52ID:bSx7ciZe0
AWS S3 では、3重に記録してる

それを災害に備えて、東京・大阪の2か所に保存する。
つまり、6重

0972デフォルトの名無しさん (ワッチョイ 7f2c-Goa5)2020/12/13(日) 22:16:52.20ID:bSx7ciZe0
Software Design 12月号は、Docker, AWS 特集だけど、
クラスメソッドの社員が、AWS 主要サービスを紹介している

クラスメソッドには会社全体で、AWS の800資格を持ち、
12資格すべてを持つ、マスターが7人いる

MySQL・PostgreSQL 互換のAurora について、
1つのAZ(データセンター)毎に、2つずつ、合計3つのAZで6重にしてる。
Primary に2つと、Read Replica 2つに、2つずつ

>>2
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11/25

宇宙開発などの組み込み用、Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応

0973(u_・y) ◆e6.oHu1j.o (アウアウウー Sa6b-LBAI)2020/12/15(火) 18:08:34.40ID:02qf4hkKa
(u_・y)言うほどRubyで書いた制御システム詰んだ宇宙船に乗りたいか?

0974デフォルトの名無しさん (ワッチョイ a301-Gz4g)2020/12/16(水) 03:27:02.65ID:0pLL+JPf0
F-15はエイダ、F-22、F-35はC++で書かれてる。

0975デフォルトの名無しさん (ワッチョイ 268c-3bRC)2020/12/22(火) 20:07:12.86ID:aAJmKFvh0
ruby3って3倍速くなった?

0976デフォルトの名無しさん (ワッチョイ 9714-22vh)2020/12/22(火) 20:48:04.60ID:0svuoGhO0
全体の0.1%が3倍速くなった

0977デフォルトの名無しさん (ワッチョイ 374e-Dlqg)2020/12/22(火) 21:18:44.50ID:10xc+AYD0
www

0978デフォルトの名無しさん (ワッチョイ 572c-yePO)2020/12/24(木) 03:08:33.92ID:qBLsz+9E0
Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、
1秒間に、1,000万回ループ出来るようになる

もう、10倍になってる!

0979デフォルトの名無しさん (ワッチョイ c54e-2ulA)2020/12/24(木) 08:31:42.54ID:7F4cW8XH0
いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい

0980デフォルトの名無しさん (ワッチョイ 2101-yePO)2020/12/24(木) 11:17:26.40ID:TzdYJrci0
三倍速い赤い奴!
人民解放軍!

0981デフォルトの名無しさん (ワッチョイ 495f-yePO)2020/12/24(木) 15:48:27.18ID:W/9MTNsy0
Rubyを使ってunityでゲームを作る事は可能ですか?

0982デフォルトの名無しさん (アメ MM6f-2ulA)2020/12/24(木) 15:57:07.62ID:uFIcYFKMM
何その苦行
可能だったとしてそれでおとなしくC#でやるより簡単になるとでも思ってんの?

0983デフォルトの名無しさん (ワッチョイ 6f33-gkv8)2020/12/24(木) 19:13:03.26ID:5YZuSfe/0
>>981
現実的に不可能。

Ruby→C#トランスレータが存在すれば可能かも?w

0984デフォルトの名無しさん (ワッチョイ 5f01-SL+E)2020/12/25(金) 01:13:50.85ID:8LlCCPCm0
mrubyとかみたいな感じでなんかできないかね。

0985デフォルトの名無しさん (ワッチョイ c54e-2ulA)2020/12/25(金) 01:24:54.53ID:cyV6b5qO0
何その苦行
可能だったとしてそれでおとなしくC#でやるより簡単になるとでも思ってんの?

0986デフォルトの名無しさん (アウアウウー Sa71-crlN)2020/12/25(金) 01:50:36.29ID:J4ouM17Ca
>>983
Rubyからunityを呼び出せば原理的には可能じゃないの?
そんなめんどくさいことを誰がやるのかという問題はあるけど

0987デフォルトの名無しさん (ワッチョイ 6f33-gkv8)2020/12/25(金) 01:56:34.02ID:DE1iEGh90
>>986
それのどこが「Rubyを使ってunityでゲームを作る事」なの?

0988デフォルトの名無しさん (ワッチョイ 0bab-JtRj)2020/12/25(金) 22:24:56.42ID:DVzhLIY40
松原案件でRuby松本メルカリ弟は絶対死亡になりました
byねね室原幕府色彩空間

0989デフォルトの名無しさん (ワッチョイ 572c-yePO)2020/12/25(金) 23:45:34.05ID:aa9Khe9z0
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11/25

この本を読んだ印象では、
宇宙開発などの組み込み用、Lua, Squirrel の代替になる

Apache などのミドルウェアに組み込んで、拡張機能を作る。
ロジック・文字列処理は、C よりも、GC のあるmrubyでやった方が、安全性が高い

Unity, Xamarin は、Mono か。
Mono とは、Linux で、C# を動かす、.NET 用のOSS

Mono に組み込んで使えるかも知れない

次スレ

Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/l50

0990デフォルトの名無しさん (ワッチョイ c54e-2ulA)2020/12/26(土) 10:11:10.42ID:q2RopqqH0
mrubyの本にmrubyは使い物になりませんなんて書いてあるわけないだろ
小学生かよマルチに引っ掛からないようにな

0991デフォルトの名無しさん (ワッチョイ 4eda-7v9V)2020/12/30(水) 10:46:44.30ID:nbKcCzET0
unlimited対応なRuby3本マダー

0992989 (ワッチョイ 7f2c-8PYP)2021/01/25(月) 12:01:43.51ID:+q31tGtg0
mruby で作った、小型人工衛星イザナミの打ち上げが成功した!

mruby 製の1号機が『イザナギ』、2号機は『イザナミ』

0993デフォルトの名無しさん (ワッチョイ a77c-rvE3)2021/01/27(水) 11:48:55.98ID:cJSBZXf90
三代目
ヒルコ

0994デフォルトの名無しさん (ワッチョイ 662c-bDzS)2021/01/31(日) 15:14:05.39ID:nfjawlju0
デスクトップにショートカットを作って、
それに複数のフォルダ/ファイルをドラッグアンドドロップ(D&D)して、
それらのフルパスを取得してみた

まず、デスクトップのa.rb に、
puts ARGV
と書いて、そのショートカットを作る

ショートカットのリンク先を、コマンドプロンプトとする。
cmd@.exe で、ruby で、a.rb を実行する。
C:\Windows\System32\cmd@.exe /k "ruby a.rb"

書き込めないので、@を付けましたが、
cmd@.exe の、@を抜いてください

これで、ショートカットにD&Dした、すべてのフォルダ/ファイルのフルパスが表示される

出力
C:\Users\〜
C:\Users\〜

0995デフォルトの名無しさん (ワッチョイ ff2c-OU2n)2021/02/10(水) 17:18:18.24ID:eXs8qevw0
autoload は、モジュールを使う場合にだけ、require されて、
使わない場合には読み込まないので、非常にエコだと思ったけど、

autoload で相対パスを読み込む、require_relative が無いのは不便

0996デフォルトの名無しさん (アウアウカー Sa6f-7Nrl)2021/02/12(金) 08:27:23.75ID:PHAHurb8a
>>989
次スレありがとう!
こっち埋めておくね

0997デフォルトの名無しさん (アウアウカー Sa6f-7Nrl)2021/02/12(金) 08:27:37.46ID:PHAHurb8a
うーめ

0998デフォルトの名無しさん (アウアウカー Sa6f-7Nrl)2021/02/12(金) 08:27:51.32ID:PHAHurb8a
埋めておきます

0999デフォルトの名無しさん (アウアウカー Sa6f-7Nrl)2021/02/12(金) 08:28:03.41ID:PHAHurb8a
埋めたい

1000デフォルトの名無しさん (アウアウカー Sa6f-7Nrl)2021/02/12(金) 08:28:16.84ID:PHAHurb8a
1000

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 405日 7時間 12分 43秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。