AR ホームベーカリー

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

Rails

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 具体的にどうする とりあえず…

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 …

ActiveRecord Relation の内容をビャッと view に出す

Model.select("created_at").first とかすると、#<ActiveRecord::reration:〜〜〜> という感じのオブジェクトが頂けるので、いや拙者は値だけがほしい……というときにビャッとする。 Model.pluck("created_at").first なるほど配列なので select ではなく pluck みたいな気持ちになってしまっ</activerecord::reration:〜〜〜>…

ENV が利用できない(ので ENV を利用できるようにする)

なんのこっちゃい、という感じですが。 だいたいこちらに書いてあるとおりです、ありがてえ。 zenn.dev Rails の環境変数呼び出し rails new ./example とかして sqlite で初期化すると、こんな感じの config/database.yml が生成されると思います。 default…

passenger がクラッシュした

めっちゃ古いミドルウェア構成の環境で、 passenger がまれにクラッシュする、という問題があって調査していた。 github.com こういう事があるらしい。 解決策としてアップデートしろ、ということっぽいが、ミドルウェアのバージョンやらなんやら古くないと…

haml で link_to 記述時に onclick に asset_path を利用する方法

なろう系のタイトルみてーになっとる。 ロケ地 Rails 5.1 printJS 何がしたかったか PDF を printJS で印刷させるリンク設定したかった。 ただし対象の PDF は asset:precompile で MD5 digest が付与されている。 静的なファイルを指定する場合 #{RAILS_ROO…

CircleCI の MySQL コンテナが落ちた

ロケ地 CircleCI MySQL 5.7.33 CI がコケる ドキュメント更新してシェルスクリプト追加しただけで落ちたので「絶対にワイのせいじゃない!」という顔で details を見てた。 2021-03-19 02:30:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Ser…

Rails のコネクションプール数

基本的に Rack サーバの Worker 数と同じにするべき。 qiita.com Puma Web サーバー​を使用している場合は、pool​ 値を同等の ENV['RAILS_MAX_THREADS']​ に設定することをお勧めします。複数のプロセスを使用している場合は、各プロセスに独自のプールが含…

credentials.yml.enc をやめる

なんかこれも前に書いた気がするな。 #{RAILS_ROOT}/config/credentials.yml.enc は master.key が無いと復号化できなく欠けた状態では動きません。 master.key はたしか .gitignore に標準で記載されているので、何らかの手段で rails new した人が、チーム…

CarrierWave の保存先をローカル指定にする

だいたい以下の記事通り、 config.storage :file とすれば (書き換えれば) 良い。 qiita.com あとは気をつけるとしたら、 config.fog_ などで宣言している箇所を一通りコメントアウトなりしておくと安心だろうか。 もちろん AWS_ 系の環境変数も設定されない…

URI.encode した日本語ファイルへのアクセスで ActionController::RoutingError が発生する

タイトルがすべてって感じです (しろめ) 。 日本語ファイルにアクセスすると死ぬ public 以下に配置した /doc/テスト2017.pdf みたいな日本語ファイルにアクセスすると ActionController::RoutingError が発生して死ぬ。 Ruby 2.5.1 Rails 5.1.7 Passenger 5…

Capistrano デプロイする環境をシュッと作る

プロジェクト初期にしかやらないから、毎回忘れて泣きながら調べてる。 ので、備忘録を兼ねて。 ちなみにこの手順を書くにあたって、社内のナレッジ ( docbase 使ってます ) を確認していたら、退社した元 CTO 兄貴迫真のカレーレシピを見つけて「日本人だい…