Ruby on Rails
2021-10-22 (土), 23 (日)に行われるKaigi on Railsに登壇します。 2日目の23日 13:50~14:20 の30分枠で "Safe Retry with Idempotency-Key Header" という題にて発表します。あと3週間ですね。 イベント参加はこちらから↓ kaigionrails.doorkeeper.jp 私の…
ActiveStorageで画像アップロードを行ったあとに非同期に実行される画像の解析処理で NameError ActiveStorage::AnalyzeJob uninitialized constant ActiveStorage::Analyzer::ImageAnalyzer::MiniMagick エラーが出た。 処理を行っているのはActiveStorage:…
ActiveRecordでgroupクエリの結果の件数をスマートに取得したいだけ。 SELECT COUNT(*) FROM ( SELECT "users"."id" FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id" GROUP BY "users"."id" HAVING (count(1) > 5) ) 前提: count vs s…
壊れたルーティングの検出、routing specを自動化するroute_mechanic gem を作って公開しました。この gem の紹介と内部実装の話を書きます。 rubygems.org 背景 Rails 開発者のうちの N% は、Rails application のルーティングを検証するために以下のような…
ActiveRecord Association extensionsでメソッドを追加する - valid,invalid で書いたActiveRecord Association Extensionだが、with_optionsと併用するとrubocop-railsのRails/HasManyOrHasOneDependent copに警告されることがわかった。 with_options depe…
has_many*1にblockを渡すとassociationにメソッドを追加することができる。 class User < ActiveRecord::Base has_many :posts do def stats group(:status).count # このcontextで`self`は`ActiveRecord::Associations::CollectionProxy` # `proxy_associat…
(追記: 2021-03-21) 本家が提供しているテンプレートがあった…!! rails/active_record_main.rb at main · rails/rails · GitHub いつもググったり思い出したりしながら書いているのでメモしておく。 新機能触ったりデバグしたりバグレポートしたりするときに…
昨年、とあるアプリケーションのフロントエンドリニューアルプロジェクト*1の際に取り組んだ課題について書きます。Ruby, Railsの話が出てきますがRESTish APIの定義をどのように管理するか、API定義が存在しない既存アプリケーションにどのようにドキュメン…
Rails の view を React で書き直したときに使った脱 Slim のやり方 各種 gem を install して手元でコマンド叩いてもできるけど面倒くさい場合に使える 結論 converter - How can I convert html.slim files to html or html.erb? - Stack Overflow この回…
してきました。 techplay.jp スライド データ周りや意思決定の話は専門ではないのであまり主語を大きくして叩かれないようにわりと渋めのタイトルにしました。ちょっと局所的すぎたかもしれません。 トーク 20分のトークは初めてだったので勝手がわからず86…
TL;DR 現プロジェクトと近似した構成で素振り出来るよう Rails + PostgreSQL による backend と React + TypeScript による frontend を docker-compose で立ち上げる boilerplate 作ったhttps://t.co/iCqMc2TWrD— 広島の粗大ゴミ (@ohbarye) 2018年7月7日 g…
passwordless という gem が最近リリースされたようなので少し触ってみた。 名前の通り認証時にパスワードを必要とせず、いわゆる Magic Link によるログイン機構を Rails アプリケーションで実現できる。 Magic Link とは Slack や Medium が実装しているこ…
webpackerを導入したRailsアプリケーションが手元ではちゃんと動いておりテストもパスした、あとはデプロイだけだ〜という段階で失敗した。 解決策 新しめの Ruby アプリケーション用の buildpack が使われるよう、BUILDPACK_URL を正しく指定する。具体的に…
form を submit する時に disabled されるボタンを re-enable するには $.rails.enableFormElements($form) を使う。 二重サブミット防止 まず、data 属性に disable_with を設定するとクリック時にボタンが disabled になり、二重 submit 防止になる。ラベ…
View でちょっと頑張る必要があり Controller から render_to_string で文字列を得てから JSON に突っ込むようなエンドポイントがあるとする。 # controller/books_controller.rb class BooksController # GET /book/:id def show @book = Books.find! param…
staging のアプリケーションでのみ起こるバグを調査している折、どうやらセッションにちゃんと値をセットできていないぽいと気付いた。 そのアプリは cookie session を採用していたので簡単に暗号化された値は手に入ったが、これはどうやったらデコードでき…
record_timestamps に false をセットすることで、更新時の updated_at, created_at へのオートフィルをスキップすることができる。 # Active Record レベル ActiveRecord::Base.record_timestamps = false # モデルのみ User.record_timestamps = false # …
引き続き、胃腸炎。熱は下がった。 Ruby on Rails Railsを包括的に学ぼうとRailsチュートリアルを始めてみた。まずは1〜2章をやってみた。 このあたりはまだ付いていける内容だった。 やってみてわかったけどRailsの知見を盛り込むだけでなく周辺技術(当然R…
Backbone.js Backbone.jsのサンプルTodoアプリを引き続き見た後、RailsアプリでBackbone.jsを使う - Qiita を参考にRailsとBackboneでTodoアプリを動かしてみた。 記事通りに進めようとしたが、情報が古くてうまくいかなかった。2011年なので仕方ない…Backbo…
Ruby on Rails テンプレートエンジンについて少し学んだ。 Haml codecademyのチュートリアルでRails標準のERB書いてて「Ruby界隈の人、本当にこんなテンプレートエンジン使うのかな?」って思ってた。 そこでHaml。 Hamlhaml.info Haml (HTML abstraction ma…
Ruby 今更ながら、Rubyの開発環境について何も知らなかったので色々調べていた。vimが主流ぽい。 vim JavaはEclipe、PythonはAtomで書いてきたのでvim力が低い…。vim力上げていきたい。 $ brew unlink vim $ brew install vim --with-lua $ curl https://raw…
Ruby on Rails codecademyのRuby on Rails講座を100%完了したけど、これで何か作れるかというと相当厳しいと思うので何か作ってみる。
Ruby on Rails codecademyのRail講座始めて65%ぐらいまで進めた。 基本的なコマンドから学んでる。 rails new bundle install rails generate model Message a model file in app/models/message.rb. The model represents a table in the database. a migra…