モンモンブログ

技術的な話など

Ruby on Rails

Rails でリクエストパラメータに Shift_JIS 文字列が渡されるとエラるので nkf で強制変換するモンキーパッチあてて回避

SendGrid 宛に届いたメールを Rails の Mailbox で受け取って、開発チームの Slack へ通知するようにしてるのですが、 メールの文字コードが Shift_JIS だった場合に ActionController::BadRequest エラーが発生してしまう問題に悩まされていました。エラー…

macOS に capybara-webkit をインストールする

Catalina に capybara-webkit をインストールしようとして手間取りました。 こちらを参考に解決しました。 Installing Qt and compiling capybara webkit · thoughtbot/capybara-webkit Wiki capybara-webkit のビルドに必要な QtWebKit が Qt 5.6 で削除さ…

Rails5 の or クエリがバグを誘発しそうで超怖い

Rails5 になって ActiveRecord に or クエリが導入されました。早速、既存のコードを書き換えようとしたんですが、かなり慎重に使わないと結合順序のワナに嵌ってバグりそうで怖いです。 このような(間の抜けた)コードがあったとします。 Country. where(i…

DelayedJob による非同期処理の失敗を exception_notification でエラー通知させる

delayed_jobs による非同期処理時に、exception_notification によるエラー通知メール送信を行う - Qiita こちらの記事を参考に DelayedJob のエラー通知を実装していたんですが、 Rails5 で alias_method_chain が Deprecated になってしまったので Module.…

Rubyで2項演算子が単項演算子に化けて悪さする話

DateTime.now + 1.hour と DateTime.now +1.hour は異なる値を返します。 何を言ってるのかわからねーと思うがこの実行結果を見てくれ。こいつをどう思う? [10] pry(main)> DateTime.now + 1.hour Fri, 29 Jan 2016 11:38:52 +0900 # こっちだと 11:38 [11]…

ActionMailerのメール本文がログに出力されるのを抑制

メール本文がログに出力されるとログ容量を圧迫するので(あとウザいので)出力を抑制しました。 環境 $ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin13] $ rails -v Rails 4.2.5 事象 メーラーでメールを送信すると、デフォルトでメー…

ActiveRecordのscope,validatorでの意図せぬキャッシュに要注意

クリティカルなバグの原因になりえます(なりました)。 環境 少々古いです。activerecord の最近のバージョンでは未確認です。 ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-darwin13.3.0] rails-3.2.11 activerecord-3.2.11 MacOSX Mavericks 現象…

Action Mailerのマルチパートメールでファイル形式の優先順位が変わっちゃう件

Action Mailer でマルチパートメールを送るようにしていて、かつ mail メソッドにブロックを渡す場合は注意が必要です。html 版、text 版の優先順位が意図せず変わってしまう場合があります。 環境 MacOSX Mavericks ruby 1.9.3p547 (2014-05-14 revision 45…