AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Rails

MySQL 8.3/8.4 と mysql2 0.5.6

qiita.com あーなるほどね! となっていた。 日本語での解説は以下の記事がよさそうかな? gihyo.jp 実際に変更、というか削除されたのは以下。 dev.mysql.com とりあえず雑に MySQL 8.3 以降を使う場合は mysql2 0.5.6 を使いましょう! という話。 そうで…

Rails で扱える (環境変数に出して大丈夫な) 特殊記号

稀に設定したらぶっ壊れて「うーん?」となっていたのだけど、ようやく調べた。 sinsoku.hatenablog.com 世の中には先人がいるので本当ありがてえ。 使える記号 !$&*()-_=+: 上記だけっぽいので、その範囲でやっておけばよさそう。 ちなみに pwgen で毎回パ…

rails console で利用できるモデルの表示

console から .find_by(id: 1) とかして見えないモデルがあってうーん?と思っていたんだけど、単純にモデルがないだけだった。 以下のようにすることで、扱えるモデル一覧が出力できる。 tables = ActiveRecord::Base.connection.tables tables.map(&:class…

AppleSillicon で古い Ruby を build する その3

せっかくなので、Rails 5.1 の古いプロジェクトで実際に Ruby 2.5 を動かせるか試してみた。 僕の場合の対応なので、個々のプロジェクトでは異なると思いますが、こんな古いバージョン使う以上自己責任だよ自己責任! という気持ちで参考情報として見てくだ…

ActionMailer でメール送信時に利用する情報を動的に変更する

qiita.com /config/environments/ 以下で config.action_mailer.smtp_settings で指定した情報を、送信するタイミングで上書きできる。 ただこれ見てると、送信時に上書きするのでたくさん送ると負荷高くなりそーだな、という気はしている。 railsguides.jp …

NullDB not configured. Require a framework, ex 'nulldb/rails'

huh?

homebrew 環境で bundle install しても mysql2 がインストールできない時

macOS 13.6.4 Homebrew MySQL 8.2.0.1 小さい結論 .bundle/config に以下を書く。 BUNDLE_BUILD__MYSQL2: "--with-mysql-lib=/opt/homebrew/opt/mysql/lib --with-mysql-dir=/opt/homebrew/opt/mysql --with-mysql-config=/opt/homebrew/opt/mysql/bin/mysql…

ActiveStorage の blob key で付与される値を変更する

調べたらやってる人はいるもんだった。 qiita.com 本当はこれはこれで Unique が保証されるままにしておいて、 類推できるように意味をもたせた URL にしたい場合は、所謂スラグとかパーマリンク的に扱うのがいいんだろうか。 と思ったけど、結局ダウンロー…

incompatible library version

EDITOR=vi rails credentials:edit とかしたら表題の通り怒られた、んだけど、なんでやねんと考えていたら「そういやこの環境、ワイの知らないの間に Ruby のマイナーバージョンアップデートされてたな」と気付いて rm -rf ./vendor/bundle bundle install -…

Rails の一ヶ月

ビジネスロジックでの判定で、いわゆる「一ヶ月前」という実装を愚直に 1.month.ago (ago(1.month)) などとした場合。 「これは当日を含むのか」とか「一ヶ月って30日?」「例えば閏年で 1/30 から一ヶ月後って 2/29 と 3/1 どっち? 一ヶ月前になると逆パタ…

unicorn -> pitchfork

railsatscale.com へー、と思いながら見ていた。 Pitchfork JIT 有効にした環境なら Unicorn よりよさそうな風情は感じるけど、まだ 0.9.0 らしいので GA なりメジャーバージョンに到達するまで様子を見ましょう。 一応「Puma (thread 形式のアプリケーショ…

HomeBrew のアップデートで MySQL 8.1.0 がインストールされて俺の Rails が壊れた

俺の、って書いておかないとマサカリ飛んできそうなので。

ActiveStorage は ActiveRecord が必要

どういうこっちゃ兄弟、という話だけど、要は mongoid 利用環境で ActiveStorage 採用しようとしたんだけど仕様的にダメだった、という話。 github.com feel free to send PRs. https://github.com/rails/rails/issues/31408#issuecomment-351128111 気軽に …

puma の最適化

ここの続き。 donbulinux.hatenablog.jp 基本的にまず以下を読むといい。 翻訳されているので、だいたい抑えるべきことが書いてある。 techracho.bpsinc.jp その後に以下を。 re-engines.com qiita.com tech-book.precena.co.jp 具体的にどうする とりあえず…

rails console から生の SQL クエリを実行する

User.find みたいにできたらまあそれはそうなんだけど、 model がないと実行できないので生 SQL を実行する。 まず model がないってなんだよ、と言われたら無いもんはないので……。 ActiveRecord::Base.connection.select_all('SQL を書く').to_hash 例 こん…

flipper

github.com はえーしらなかった、こういうのあるんすねえ。 機能の簡単なスイッチ、自分で作るかこういうヤツ採用するかは最近話題のこういう問題もあるのでなんとも、だけども。 コンテナとかで手元の環境は console から流し込めばいい、みたいなのは分か…

assets:precompile で No such middleware to insert before: ActionDispatch::Static

GithubActions でビルド回してたんだけど、 PR 積んだブランチをビルドしたら遭遇した。 結論から書くと、 RAILS_SERVE_STATIC_FILES=true を precompile 時に追加すれば回避できる。 RackBasicAuth の追加 リリース直前になって「フライング利用するユーザ…

propshaft ことはじめを適当に考えている

本業があまりに疲れすぎて何も考えたくないので、休憩を兼ねて以下をボーッと見ていた。 re-engines.com techracho.bpsinc.jp このあたりが注意しないといけないかな。 アセットヘルパー :%s/image_url('/url('\/g みたいな感じで雑に修正していけばよさそう…

Rails の delivery_method で AWS SES を指定してメール送信する

だいぶ悩んでしまったのと、ググると出てくる例が delivery_method をオーバーライドしてるものが多いのでという気持ち。 ロケ地 Ruby 3.1.0 Rails 6.1.6 aws-sdk-rails 3.7 aws-sdk-ses は v1 系利用 TLDR aws-sdk-rails gem を追加して、 config.action_ma…

Rails console から Sidekiq のキューを調査する

以前 console から接続できない場合に、という感じで以下記事を書いた。 donbulinux.hatenablog.jp とはいえハングアップするのは、よっぽどギリギリのリソースで動かしているとかじゃなければ頻発しないはずなので、通常時どうするのか、というお話。 キュ…

Unable to monitor directories for changes because iNotify max watches exceeded.

ロケ地: Amazon Linux release 2 (Karoo) RAILS_ROOT で rails c したらエラーがでるー、と言われたやつ。 実際のエラーはこう。 /RAILS_ROOT/vendor/bundle/ruby/3.1.0/gems/listen-3.7.1/lib/listen/adapter/linux.rb:32:in `rescue in _configure': Unab…

assets が見えないのは net::ERR_HTTP2_PROTOCOL_ERROR かと思っていた

アカウント ID が異なる環境で、動いているアプリケーションを環境ごとクローンする、というタスクがあって、規模的に手動で作業しなおしても大丈夫だなと思って着手したらひどい目にあった、という話。 ページデザインが崩れる デプロイして動作確認を行っ…

530 Must issue a STARTTLS command first (Net::SMTPAuthenticationError)

自前運用の SMTP サーバから AWS SES に切り替える作業があったんだけど、表題のエラーが出て「!?」となっていた。 Must issue a STARTTLS command first 答えは全部ここに書いてあるんですが、ちゃんと暗号化して送信しろ、という話です。 エラー時の該当…

puma.sock failed (111: Connection refused) while connecting to upstream

Nginx で puma の unix socket を参照するように設定した所、 502 が連続するので「何事……?」となっていた。 integration という RAILS_ENV を増やしていたのが原因かと思っていたけど、単純なミスだった。 しらべる Rails 側のログには何も記録されていな…

puma を systemd でやる

久しぶりにシステムワイドで生の RoR アプリをインストール・デプロイする作業があったんだけど、puma.rb で指定でいる daemonize を利用してデーモン化しようとしたらダメだったので。 www.kanzennirikaisita.com www.rochefort.dev 今どきシステムワイドに…

Rails の Blocked Host エラー

はえーこんなのあるんですね、単体アプリケーションで複数ドメインを持つ環境の運用してないから知らなかった。 以下を追記することで Blocked Host エラーの元になる制限を削除できる。 ${RAILS_ROOT}/config/environments/development.rb Rails.applicatio…

dotenv で $ を含む文字列が渡せなかった

だいぶ古い環境だけど。 Rails 5.1.7 dotenv 2.2.1 Variable Substitution dotenv には Variable Substitution という仕組みがあって ${VAR} $VAR のようにして変数に変数を突っ込める。 github.com で、以下のような記述をしていた。この状態で deliver_now…

sidekiq を強制的に停止する

公式のシグナルリスト この様に色々書いてある。 github.com このシグナルリストに記載されたシグナルを送信しても Sidekiq が応答しない状態 (ハングアップしてロードアベレージが暴走している) にどうするか。 -9 で強制停止する 結論、 kill -9 ${PID} を…

AWS ElastiCache(Redis) で認証を入れる際の罠

自前で用意する Redis redis.conf へ以下のように requirepass を設定します。 この場合は、 foobared というパスワードが設定されており、TLS などの暗号化通信は必要ない状態です。 # snip # requirepass foobared # snip # blog.shimar.me ちなみに、公式…

sidekiq のロギング

capistrano-sidekiq でインストールされる systemd 制御ファイル入れた時のロギングについて、CentOS7 あたりだと対応できないので、その対応について。 何が問題なのか このあたりで書いた問題ですね。 donbulinux.hatenablog.jp syslog を利用する append …