Tech

GitHub Actionsでの処理の再利用(Reusable Workflows, Custom Actions)について整理

処理を再利用したいときには、以下の方法があり、それぞれで呼び出しのレベルが異なっています。 Reusable Workflows Jobの一つとして呼び出す jobs.<job_id>.uses シンタックスで呼び出す Custom Actions (Composite Action) Stepの一つとして呼び出す jobs.<job_id>.steps[</job_id></job_id>…

アトミックな操作をしたいときのロック状態の作り方

Crontabで実行しているバッチで重複した実行をしてほしくないときにロック状態を作ったりしますが、どうやるのがいいのかの選択肢を整理。 令和の時代と思えない話だけど今も必要な話だった。 おおむね、サイボウズのsatさんの書いていることを確認した感じ…

Rails6, 7でのdb系rakeタスクの確認

この辺いつも忘れるのでメモ。 あと、paperclipを削除するときにmigrationファイルの add_attachment が残ってしまう問題があったので、どう影響するかの確認のためでもある。 db:migrate migrateファイルを日付け順に実行する。なので、削除された外部依存…

Linuxカーネル 5.15からAirMac Extreme/TimeCapsuleの共有ディレクトリに接続できなくなってた

例えば、LinuxからAirMac Extreme/TimeCapsuleの共有ディレクトリに接続するときはこうやるけど、 $ sudo mount -t cifs -o vers=1.0,sec=ntlm,password=xxxx //192.0.2.1/AirMac /mnt/airmac カーネル 5.15では、エラーになる。 kernel: bad security optio…

バリューオブジェクトを利用しやすくするためのActiveRecord Attribute API, ActiveModel Attribute APIでのカスタムクラスの活用

サブジェクトが長い。 tl;dr Attribute APIにはカスタムクラスを登録できるのでバリューオブジェクトを使うのに便利 宣言に合わせて自動で変換してくれるので、デシリアライズのときにも便利 バリューオブジェクトを積極的に使っていきたい ActiveRecord Att…

過去のとか任意のバージョンのRailsでrails newしたい

Railsのことを完全に忘れて、そもそもレールズを始めるときはどうすればいいんだ?となったので書いておく。 追記: Rails公式ではgemでインストールするのが前提だった Rails公式では、Getting started guideにあるように gem install rails でシステムグロ…

textlintをWeb Workerとして動かしてアプリに組み込む

Web Workers APIを使うのは初めてなので、この使い方で問題ないのかはよくわかっていない。これから学んでいきます。 動機 会社でtextlintを便利に使っており、ユーザーさんからのお問い合わせ窓口を自社開発しているので、返信内容を送信前にlintにかけたい…

ActiveRecordで子のアソシエーションが必須の場合のFactoryBotの使い方いろいろ

社内ドキュメントに書いたものの転載。 前提 猫と猫の脚というモデルがあり、猫は脚が一本以上は必要というバリデーションがされているとき、 class Cat < ApplicationRecord has_many :cat_legs, dependent: :destroy validates :cat_legs, presence: true …

S3の暗号化方式についておさらい 2021.06

社内向けに書いた記事を転載。 SSE (サーバーサイド暗号化) SSE-S3 S3が管理するキーでの、透過的暗号化。 Pros 設定すればいいだけなのでラク 共通の鍵なので追加コストもなし Cons 透過的復号がされてしまうので、S3のコンソールでダウンロードしても復…

ActionMailerのdeliver_laterでメール送信する場合のユニットテストの書き方

社内ドキュメントに書いたやつを転載。 課題 deliver_laterを使う場合、Railsガイドのメイラーの機能テストの項にあるような、 ActionMailer::Base.deliveries.last での検証はできません。 これは、deliver_laterは非同期でのメール送信となるため、即時の…

GitHub Actionsでバージョンをバンプしつつタグを打ち、リリースノートにPRベースのchangelogを記載したい

tl;dr https://github.com/shrkw/sandbox/blob/master/.github/workflows/create_release_tag.yml このワークフローを実行すると、こんなリリースタグが生成されて便利。 Release Release v0.4.0 · shrkw/sandbox · GitHub なぜやりたいのか 手動でリリース…

リリースノート、チェンジログを自動で生成したいのでlerna-changelogを使った

デプロイする前にリリースタグを打つ運用をしているんですが、リリースノートに書く内容を自分で集めるのも面倒なので、みんな自動化してるやろと思って調べてみました。 conventional-changelog/conventional-changelog がポピュラーだけど、今回はコミット…

Railsのコントローラでの例外は直接ハンドリングしなくてもいい / 例外処理の方針

以下は静的なレスポンスを返す場合での方針です。動的なレスポンスならこの限りではありません。 基本方針 400番台以降のレスポンス(以下、例外レスポンス)を返したい場合でもコントローラであっても直接renderせず、例外をraiseする application.rb の co…

2020年のRuby/RailsのJSONシリアライザは何を使うべきか問題

よくわからなかったので整理してみる。 候補 Jbuilder https://github.com/rails/jbuilder ActiveModelSerializers https://github.com/rails-api/active_model_serializers jsonapi-rb https://github.com/jsonapi-rb/jsonapi-rb JSON:API Serializer https…

2020.06のReactでReduxは必要なのか

基本的にはstateはコンポネントに閉じ込められて使うべきで外に影響が染み出していくのはよくない。なので、useStateでシンプルに使うだけなのが一番良い。hooksがあるのでいろんなことがとてもシンプルにできるようになった。 とはいえ、遠いコンポネントと…

NulabのbacklogからJiraへのポーティングのやり方

途中参加したプロジェクトでbacklogを利用していたけど、GitHubとの連携とかも含めて、やはりJiraのほうが洗練されていてやりやすいので、移行した。なので、課題をポーティングしたのでやり方を書いておきます。 要件 IDの連番はbacklogのときと同じ数字に…

WordPress MUのコメントを表示するwidgetのWordPressプラグインを書いてみた

PHPもWordPressも全然知らないけど、デフォルトで入ってる、Hello Dollyとrecent commentをコピーして、1時間くらいで書いてみた。キャッシュもしないし、リンクにもなってないくらいヘボヘボだけど、1時間くらいでこんなのが書けるのは面白いですね。 ドキ…

WordPressのプラグインから別スキーマのクエリを実行

http://codex.wordpress.org/Function_Reference/wpdb_Class を参考にすべし。別DBのテーブルを参照したかったので、 $blogs = $wpdb->query("SELECT * FROM hoge.wp_blogs "); っていうのを書いてみたけど、いつもfalseが返ってきてしまう。 普通にやってる…

WordPress MUでLDAP

しばらくうまくいかなくて、いろいろ試行錯誤してたけど、ちゃんとADのアカウントでログインできて、blogを持ってないひとがログインしたら、 blog作らず blog作る の両方のパターンでうまく行った。 adminのところでユーザー追加をすると画面上はwarningが…

Dashboard widgetオブジェクトの使い方

Page Not Found - Apple Developer execするときは widget.system(command, endHandler) を使う。 endHandlerを指定すれば非同期処理になってコールバックでendHandlerが呼ばれる。 endHandlerがnullなら、同期処理になってexecしたのが終わるまで処理が止ま…

DashboardウィジェットからファイルIO

オフィシャルのドキュメントも少しさらってみたけど、ファイルIOに特化した記事がなさそうだったので、メモ系のウィジェットのソースみた。 ClassicNotePad widget.system でexecできるのか。system経由でcatかー。わかりやすい。 NOTEZAR XHRでサーバに全部…

Dashboardウィジェット開発の情報源

なんか全般的に時間の経ったものが多い気がするけど。 Dashboard Reference Technical Notes ↑の部分翻訳 DashboardWidgetのデバッグ方法 Dashboard Widgetの作成方法その1 も、2005年の記事だけど参考になった。