Railsほど大きいフレームワークを使いたくない時にSinatra
+ Sequel
でやろうとしたら意外と躓くポイントがあったので記録として残しておきます。今回はModelを作ってmigrationする流れについて。
Ubuntu22.04を使おうと思ったら調子が悪かったので一旦アンインストールしてから再インストールしたところエラーを吐いて起動さえしなくなってしまったのでその対処法を書いておきます。
メールのプレビューをブラウザ上で表示できるGEM open_letter
ですが、デフォルトのWSL環境のUbuntuではlaunchy
がエラーを吐いて終了してしまいます。少し設定をしておけば問題なく使えるのですが、毎回その設定方法を忘れてしまうのでメモっておきます。
Rails でObject#present?
やObject#blank?
でArgumentError: invalid byte sequence in UTF-8
が出て少し困ったのでその原因と対処法を残しておきます。
Rails6で実装されたActiveRecord#upsert_all
でバルクアップデートをしようとすると
ActiveRecord::StatementInvalid: PG::CardinalityViolation: ERROR: ON CONFLICT DO UPDATE コマンドは行に再度影響を与えることはできません HINT: 同じコマンドでの挿入候補の行が同じ制約値を持つことがないようにしてください
とエラーが出たけどCardinalityViolation
の意味がわからなかったので調べてみました。
Rubocopを使うと変数と文字列を結合するときにfoo + 'bar'
形式で記述してると式展開を使った"#{foo}bar"
を推奨してくるのですが、foo
の場合がPathname
クラスであっても同様の警告を出してきます。
Selenium::WebDriver.for(:chrome)
の headless のためのオプション設定方法がややこしくてよく忘れるのでメモっておきます。
異常にコスパがいいことで話題になっているThinkCentre M75q tiny Gen2 (M75q-2) を購入した記録です。買い方にちょっとコツがいるので解説していきます。
SeleniumでChromeをheadlessで使おうとすると複数のオプションがあって、バージョンによって必要なオプションが変わるなど面倒なことが山盛りなので、せめて一箇所で設定できるようにデフォルトで読み込むオプション設定を決めることにしました。
スクレイピングをする時に使うブラウザをRailsの開発環境と本番環境で切り替えたかったので方法を記録しておきます。