2018-10-01から1ヶ月間の記事一覧
RSpec で example の一覧を出力する RSpec の -f (--format) オプションを使って出力形式を指定します。 指定できる形式として p (progress) や d (documention) などがありますが、今回は d を指定します。(デフォルトは p) bundle exec rspec -f d spec/co…
MySQL で SELECT の結果に対して UPDATE を適用する status が temp のレコードを全て active にする。 UPDATE users, ( SELECT users.id FROM users WHERE status = 0 # 0: temp, 1: active, 2: leaved ) AS temp_users SET users.status = 1 WHERE users.i…
Web サイトを訪れたユーザーを特定するための方法 見出しの内容について本日相談を受けました。 私は Web にはあまり詳しくはないのですが、色々調べたので今日はそれについて書いていこうと思います。 Cookie まずは Cookie を利用した方法です。 サイトへ…
[RSpec] テストを保留にする skip と pending の違い skip example は実行されず、そのステータスは pending になります。 describe "an example" do it "is skipped" do skip end end => 1 example, 0 failures, 1 pending pending example でエラーが発生…
Ruby の代入演算子 ||= Ruby の実装でたまに見かけるこの記述について調べてみた。 user ||= fetch_user 上記の式は user が未定義だと fetch_user が呼び出されて user に代入され、そうでないなら user を返す。 何故こうなるのかが分からなかったが、どう…
acts_as_paranoid で Rails に soft delete を追加する ActiveRecord の destroy は物理削除でモデルを削除しようとします。 acts_as_paranoid という gem を使うことでこの挙動を論理削除に変えることができます。 github.com 使い方は非常にシンプルでモデ…
In-App Purchase における自動更新型サブスクリプションの状態更新通知について In-App Purchase では、サブスクリプションの状態に関する変更を App Store が通知してくれます。(※自動更新型のみ) 開発者はその通知を受け取り適切な処理を行うことで、サブ…
[Rails] バッチ処理のパフォーマンスについて考える バッチで大量のデータに対して何かしらの処理を行うとしたときに、こんな感じで実装してみる。 User.all.each do |user| # 処理 end ふむふむ、なるほど。 これが例えば User.all で取得した件数が 100 件…
[ActiveRecord] 関連するテーブルに対して where を適用する users と comments が one-to-many の関係にあるときに、active な user のコメントを取得したいとする。 Comment.joins(:user).where(user: { deleted: :active }) Rails でのログ出力について …
UILabel の行間を調整する AttributedText に変更し、Height Multiple や Spacing を変更する。 Spacing は名前の通り、行と行の間のスペースの幅を定義する。 Height Multiple は指定した値が一行の幅の倍率になる。 例えば 1.5 を指定したら、一行が 1.5 …
bundle install と bundle update の違い bundle install Gemfile.lock から gem を取得する。 bundle update Gemfile から gem を取得し、lock を更新する。 本番環境で安易にこれを実行するのは危険。 Xib で View の Simlated Size を変更する ここを Fre…
Ruby の case 文 Ruby の case 文、ぶっちゃけ「他の言語でいう switch 文のことでしょ?」という認識だったが、甘かった。 Ruby の case 文は他の言語の switch 文よりかなり自由度が高い。 例えばこういうことができる。 def valid_status?(status) case s…