ソフトウェア開発

Ruby 3 を用いると Lita にて Webサーバー が応答できずに落ちるので注意する

Lita とは www.lita.io 結論 2021/07/25 時点では、以下のソースにあるように Ruby 3 で escape メソッドが削除されたため、Webサーバ の応答をしようとすると落ちます。 github.com 以下のようにコメントが書いてあります。 # The http_router gem still us…

Lita のローカル開発時にレスポンスを確認するには @Lita をまず先頭に入力する

Lita とは Ruby製の bot のフレームワークです。 docs.lita.io 結論 ローカル(シェル)で動作確認する際には @Lita を先頭に付けないとポストが受け付けられません(レスポンスが返ってきません)。 以下のように、@Lita を先頭につけて bot に話しかける必…

git の hooks(pre-commit など)が動かない時に確認すること

結論 .git/config の [core] の部分に hookspath が指定されているかどうかを確認する。 具体例 git/config に以下のように書き加えます*1。 [core] (省略) hookspath=.git/hooks (以下省略) *1:標準のディレクトリ構成の場合

VSCode の Ruby Test Explorer を用いる際にテスト対象 Spec が表示されない場合

結論 設定の Test Framework の項目で明示的にテストに用いるフレームワーク*1 を指定するといける場合があります。 gyazo.com *1:RSpec とか Minitest とか

VSCode で RuboCop や Solargraph や Ruby Test Explorer が実行できないときの一つの解決法

結論 コマンドの実行パスを絶対パスで書く。 実例 以下は Ruby Test Explorer の設定です。ここで実行コマンドパスを設定する箇所において、絶対パスでパスを記述します。 例えば、 .rbenv を使っている場合は /home/ここにユーザー名が入る/.rbenv/shims/bu…

material-table を使う際に検索欄やページングカーソル欄に se や fir などのアルファベットが表示される場合の対処法

material-table とは github.com 現象 こういう感じになる現象です。 gyazo.com 結論 fonts.googleapis.com から Material Icons をインポートしましょう。 <head></head> 内に以下を書き加えます*1。 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" /> 修正結果 上記のインポートの結果、以下のようになりました。 gyazo.</link>…

Ruby で Google API を google-api-ruby-client を使って操作する際に Google::Apis::TransmissionError が出る場合の対応

結論 リトライをする(こちらのせいではない)。 具体的方法 以下にリトライをするための方法が書いてあります。 github.com client.request_options.retries = 3

GitHub Actions でアーティファクトを保存するときには with: name: をアルファベットにしないと "Computed hash does not match with url signature" になる

結論 以下のように書くと、アーティファクトのリンクをクリックした先で Computed hash does not match with url signature というエラーが出ます*1。 (省略) - name: アーティファクトの保存を行う if: failure() uses: actions/upload-artifact@v1 with:…

apt を使って Node.js の任意のバージョンをインストールする

CI にて有用な方法と思います。 結論 たとえば、 v16 系を入れたい場合には以下のコマンドを実行します。 $ curl -sL https://deb.nodesource.com/setup_16.x | sudo bash - $ sudo apt update $ sudo apt install -y nodejs 補足 npm も最新版まで上げるに…

VS Code で .tsx ファイルを Prettier で保存時自動整形する

結論 settings.json に [typescriptreact] という key を使って Prettier を使うということを明示的に書きます。 具体例 { (省略) "[typescriptreact]": { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }, (省略)…

Twitter API などの管理画面のページはどこにあるか(どこからたどれるか)

結論 Twitter Developers のサイトの最上部のメニューから Developer Portal を選んだ先にあります。 画像で示すと 以下の画像の右上のところのリンクです。 Developer Portal の中に入った際の画像 リンク先の Developer Portal の中は以下のようになってい…

Dependabot を v1 から v2 に移行する際に invalid details が出た時の対応方法の一つ

結論 v1 では dependency_name という名称ですが、v2 では dependency-name になっている(_ ではなく - になっている)ことが原因。 補足 エラーメッセージにはちゃんと出ているんですが、これは気づきにくい。 gyazo.com

zsh で pyenv を入れている環境で「WARNING: `pyenv init -` no longer sets PATH.」が出る時

結論 ~/.zprofile に以下の内容を書きます。 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init --path)" fi 参考 github.com 補足 一時的な修正であり、以下の内容が…

Playwright でブラウザのサイズを変える方法

結論 page.setViewportSize() を用いる。 具体例 公式ドキュメント に記載されているように page を以下のように作成したとします。 const page = await context.newPage() その後、以下のように setViewportSize メソッドで高さと幅を指定します。メソッド…

Storybook の main.js 内で webpack の alias の設定をするときは「マージ」する

結論 マージしないと webpack 指定外の場所から import ができなくなります*1。 main.js の例 .storybook/main.js の例は、例えば以下のような感じです。 const path = require('path') module.exports = { // (途中省略) webpackFinal: async (config) =>…

Heroku に GitHub 経由で継続的にコンテナデプロイをする方法

結論 heroku.yml を用いましょう。 devcenter.heroku.com 例えば、超単純な heroku.yml ならば以下のようになります*1。 build: docker: web: Dockerfile 補足 ざっくりと Web の記事を検索したところ、CLI 経由でのデプロイしか見当たらなかったので書きま…

git-cz (commitizen) にて、リポジトリ独自の設定を用いたいとき

git-cz (commitizen) とは github.com リポジトリ独自の設定を用いたいとき 1. changelog.config.js をリポジトリのルートに作る changelog.config.js というファイルをリポジトリのルートに作ります。 2. 例えば、絵文字を無効に設定する 例として、コミッ…

VS Code で波線が引かれた場所のポップアップをキーボードショートカットで表示する

状況 下記のようなポップアップを表示するために、キーボードショートカットを使いたい、という状況です。 マウスやトラックパッドを用いて当該箇所にポインタをホバーさせれば表示できますが、キーボードから手を話したくないという欲求があります。 gyazo.…

md5sum コマンドの結果から、ハッシュのみ、またはファイル名のみを取り出す

前提 md5sum コマンドを実行すると、以下のような表示が得られます。 $ md5sum FOOBAR.txt 436e4203d62ece408999be0ff9cc155c FOOBAR.txt 結論 上記の表示から「ハッシュのみ」を取得するには、結果を cut コマンドに渡せばよいです。-d' ' というオプション…

CircleCI の "store_artifacts" における "destination" を使う場合と使わない場合の違い

公式ドキュメントより 公式ドキュメント には、以下のように記載されています。 現在、store_artifacts には path と destination の 2 つのキーがあります。 path は、アーティファクトとしてアップロードされるファイルまたはディレクトリのパスです。 des…

CircleCI の SSHデバッグ の際に Permission denied (publickey) エラーが出る場合は鍵ファイルを指定する

状況 SSHデバッグの際に、以下のように接続を促されたとします。 You can now SSH into this box if your SSH public key is added: $ ssh -p 55555 10.10.10.10 Use the same SSH public key that you use for your VCS-provider (e.g., GitHub). RSA key f…

CircleCI CLI で実行されるジョブの名前は "build" でなければいけない

注釈 2021/02/23 現在の情報です。 結論 build という名前のジョブが存在しない場合、以下のようなエラーが出ます。 $ circleci local execute Docker image digest: sha256:99018c7b8dca0f952d65d80bfe6174a8ea0ca0e1908974cfea053e4be170eee5 ====>> Spin …

Cloudflare の DDoS protection を Puppeteer でスルーする方法

結論 Puppeteer は使いません*1。Playwright を使います。 さらに、内部エンジンとして firefox を用います。 具体例 Cloudflare の DDoS protection が設定されている URL を https://ddos-protection.example.com/ と仮定します。 このとき、以下のコード…

digコマンドのクローンである dog を自分でビルドしてインストールする

dog とは dog is a command-line DNS client, like dig. It has colourful output, understands normal command-line argument syntax, supports the DNS-over-TLS and DNS-over-HTTPS protocols, and can emit JSON. github.com リリースバイナリが実行でき…

firebase-tools で作られた設定ファイル(ログイン情報など)はどこに保存されているか

結論 ~/.config/configstore/firebase-tools.json 参考 github.com firebase.google.com

Cypress で --browser が見つからない場合は、「ブラウザ定義名」でブラウザが起動できるようにすればいい

どういう状況か Cypress をブラウザ指定で実行するとき、「ブラウザが見つからない」というエラーが出るときがあります。もちろん、当該ブラウザは正しくインストールされている場合です。 例えば以下のようなエラーメッセージです。 $ cypress run --browse…

direnv を用いたときに下位のディレクトリに環境変数をマージしていく方法と注意点

結論 source_up という一行を加えればいいです。 参考 公式ドキュメントに記述があります。また、Issue としても挙がっています。 direnv.net 注意点 source_up を書く順番によって「マージ」か「ディープマージ」かが変わってきます。難しいルールではなく…

WSL2 (Ubuntu) で System Spec (RSpec, Capybara) を実行しようとすると Webdrivers::BrowserNotFound: Failed to find Chrome binary と出るときの対処方法

結論 1. google-chrome をインストールします 詳細は割愛します*1 配置場所は /opt/google/chrome 配下になるかと思います 2. chromedriver をインストールします 詳細は割愛します 配置場所は /usr/bin/chromedriver になるかと思います*2 3. spec/rails_he…

Embulk で配列型のカラムを PostgreSQL に outputするときは column_options で {value_type: 'string'} を指定する

結論 例えば、my_hobbies のようなカラムがあり、配列型で定義されているとします*1。そのようなカラムを含んだテーブルを特に何もせずに embulk-output-postgresql で PostgreSQL に書き込むと、以下のようなエラーが出て怒られます。 org.embulk.exec.Part…

Goreman を用いる際に環境変数を使いたい場合は、direnv を用いるのがおそらくベター

Goreman とは Foreman の Go 実装です*1。 github.com 環境変数を使いたい Goreman には Foreman にある -e オプションがありません。したがって、環境変数を用いたい場合にどのような手段を採るかで少々悩みます*2。 direnv を用いるのがベター Goreman で…

Powered by はてなブログ