Ruby 初心者スレッド Part 66
レス数が1000を超えています。これ以上書き込みはできません。
プログラミング言語 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 ありがとうございます
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)
} current_user情報の保持はRsquestStoreを使っています
うまく動いていないのは、このRequestStoreを介したcurrent_user情報が
modelのdefault_scopeの中でうまく不具現できないときがあるのです
うまく動くときもあるだけに逆に難儀しています
たまにcurrent_userの情報が直前にログインしていた別のユーザの情報と
なっている事が合って、default_scopeが期待した動きになりません。
デバッグで確認してみると、controller上でRequestStoreからcurrent_userを
復元させる場合は必ず期待通りに現在ログイン中のユーザの情報になりますが
model内で同じ事をやると正しく復元できたり出来なかったりします
model内でRequestStoreを使用するのがそもそも間違っているのでしょうか? 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 )となる 同じ本に、default_scope は使うなって書いてある
そのモデルクラスのすべての操作に、暗黙的に適用されるため、
逆に適用しない場合に、
Book.unscoped.where(何々)みたいに、
一々、unscoped で取り消さないといけないから、初心者を惑わすから >>953
まずはcurrent_userを設定してるところに問題ないか見直したほうがいいんじゃね? anemoneが更新されていないのですが、
代替えってありますか? DBロールバックっていつ使うんすか?
マイグレしたあとにリクエスト処理してロールバックしたらデータ整合性崩れない?
NULL不可をNULL可能にマイグレ→NULLデータ追加→ロールバック→戻せなくて死亡
みたいな感じ?
バックアップダンプファイルからリストアじゃイカンのかな >>960
トランザクションの基礎を勉強しなさい
アプリを実際に作りなさい
経験がなさすぎる >>961
あーそっちのロールバックじゃなくてマイグレのロールバックな >>962
それは「Ruby」「初心者」スレで聞くことなのか? >>960
もし戻す必要が出た場合にそれまでの間に追加・更新されたデータをどうするか先に考えておく必要がある
NOT NULLに戻す場合はchange_column_nullだけで対処可能だからそんなに問題にならない
バックアップから戻したら追加・更新されたデータが消える >>963
初心者といったらruby
rubyといったらrails
railsといったらmigration >>964
ふむ
マイグレのセマンティクスをよく考えて個別にロールバックを実装していくしかないのかな
でもそれだとロールバック実装コストがかなり高く付きそうではあるな
どうせロールバックは緊急時にしか使わないわけであって
だったらロールバックは捨ててバックアップリストアでもいいんじゃないかなと >>966
実装しないとしても戻す必要が出た場合にどう対応するのかを事前に検討しておく
検討の結果、実装しない選択をするんであればいいけど
何も考えずバックアップリストアでいいとか言ってると確実にGoToトラブル
ロールバック時に必要な対応も考慮して
アプリは戻してもDBは戻さなくていいような方法を取ることもよくある .そもそも戻す必要性を可能な限り無くすために実データレプリカを含む膨大なデータセットでテストする
.運悪く戻す場合も安易なロールバックに頼らず修正マイグレーションを開発して緊急リリースする
.それでもだめなら神頼みロールバック
.それでもだめならバックアップリストア
これでOK 1. まず、これから更新するデータを、ジャーナルに書き込む
2. 実際に更新する
3. ジャーナルから記録を消す
だから、ジャーナルに記録があれば、更新できなかったと言う事。
その場合、回復ポイントから、ジャーナルにある分だけ更新していく(roll forward)
レアケースで、2が正常に終わった後、3でエラーになった場合は、
回復ポイントから、ジャーナルにある分だけ更新していく過程で、
既に正常に更新されている事を、チェックする Kubernetes では、ネットワーク分断に備えて、
マスターを、3, 5, 7個の奇数にしておく
奇数なら、2:1 とか、過半数を取れるから、多数派を正常として扱う事ができる
偶数なら、2:2 とか、1:1:2 などに分断されても、
どのグループも過半数が取れず、判断できなくなる AWS S3 では、3重に記録してる
それを災害に備えて、東京・大阪の2か所に保存する。
つまり、6重 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 対応 (u_・y)言うほどRubyで書いた制御システム詰んだ宇宙船に乗りたいか? F-15はエイダ、F-22、F-35はC++で書かれてる。 Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、
1秒間に、1,000万回ループ出来るようになる
もう、10倍になってる! いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい Rubyを使ってunityでゲームを作る事は可能ですか? 何その苦行
可能だったとしてそれでおとなしくC#でやるより簡単になるとでも思ってんの? >>981
現実的に不可能。
Ruby→C#トランスレータが存在すれば可能かも?w 何その苦行
可能だったとしてそれでおとなしくC#でやるより簡単になるとでも思ってんの? >>983
Rubyからunityを呼び出せば原理的には可能じゃないの?
そんなめんどくさいことを誰がやるのかという問題はあるけど >>986
それのどこが「Rubyを使ってunityでゲームを作る事」なの? 松原案件でRuby松本メルカリ弟は絶対死亡になりました
byねね室原幕府色彩空間 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 mrubyの本にmrubyは使い物になりませんなんて書いてあるわけないだろ
小学生かよマルチに引っ掛からないようにな mruby で作った、小型人工衛星イザナミの打ち上げが成功した!
mruby 製の1号機が『イザナギ』、2号機は『イザナミ』 デスクトップにショートカットを作って、
それに複数のフォルダ/ファイルをドラッグアンドドロップ(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\〜 autoload は、モジュールを使う場合にだけ、require されて、
使わない場合には読み込まないので、非常にエコだと思ったけど、
autoload で相対パスを読み込む、require_relative が無いのは不便 >>989
次スレありがとう!
こっち埋めておくね このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 405日 7時間 12分 43秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。