ソフトウェア開発

Visual Studio Code で ESLint、Prettier、RuboCop、Solargraph、Jest、Babel、TypeScript などの設定ファイルのメンテコストを下げる戦略

前提 チームプロジェクトを「汚さない」ようにすることを前提とします。 結論 VS Code の「ユーザー」設定(一番上位に位置する包括設定)はなるべく変更しないようにします 設定を変更する場合には「ワークスペース」ごとの設定を変更するようにします 「ワ…

rbenv や nodenv などの XXenv で一瞬だけバージョンを切り替えたい場合

結論 二つの方法があります。実質的には、どちらも同じことです。以下、rbenv の場合を例として書きます。 1つ目の方法. RBENV_VERSION を設定した上で、ruby を実行する 具体例を見るとすぐに分かると思います。 $ ruby -v ruby 2.7.0p0 (2019-12-25 revisi…

webpack-dev-server で ライブリロード(ホットリロード)がされないときには webpack.config.js の devServer.contentBase と output.publicPath の設定を見直してみる

状況 Web でも散見されますが、webpack-dev-server のライブリロード(ホットリロード)が効かない状況を想定します。似たような状況においてそうなのですが、これに気づかずに開発を続けると、コード上は正しくても動作に反映されないので無駄な時間を費や…

puppeteer を webpack で bundle しようとしたら「Can't resolve 'ws'」と怒られた場合の対処方法

結論 webpack.config.js の externals に以下のように追記します。 module.exports = { (省略) externals: { puppeteer: 'require("puppeteer")' }, (省略) }; 具体的な現象 $ webpack Hash: 89a5cffe5c5fd346c8e6 Version: webpack 4.41.5 Time: 609ms …

ローカル Webサーバ の比較と選択

手元の HTML / CSS / JavaScript をサクッと確認するためには ローカルWebサーバ を建てる必要があります*1。思いついたローカルWebサーバの簡易比較をしてみます。 比較項目は以下のとおりです。それぞれの項目の内容は、最低限のオプションで起動した場合…

CircleCI で cron を設定する方法

公式ドキュメント CircleCI は公式ドキュメントが充実していますので、一読しましょう*1。 circleci.com YAML の例 cron を実行するための最低限に近い .circleci/config.yml の例は次のとおりです。 *1:ぶっちゃけ公式ドキュメントを読み込めばほぼ分かって…

GitHub Actions で cron を設定する方法

公式ドキュメント 日本語のドキュメントは、例え用意してあったとしても、情報が古いことがあるので気をつけましょう*1。 help.github.com YAML の書き方 cron を設定するための最小限の YAML を書くと次のようになります。 name: FOOBAR on: schedule: - cr…

GitHub Actions のキャッシュ容量の上限は 400MB(なので wkhtmltopdf-binary を入れていると厳しい)

状況 GitHub Actions で bundle install した gem のキャッシュが保存できるようになったので喜んで使っていたのですが、とある日にログを見たところ、以下のような表示が出ていました。キャッシュ容量の上限の 400MB を超えている、との警告です。 [warning…

GitHub Actions にて container に 生の Ruby イメージ を指定すると gem のキャッシュが保存されない場合の対処方法

状況 GitHub Actions の YAML が以下のような場合を想定しています。これは 公式ドキュメント に沿った書き方です。 on: [push] name: hogehoge jobs: fugafuga: name: foobar runs-on: ubuntu-latest container: image: ruby:2.7.0 (中略) steps: - uses:…

Rails 5.1.1 で vendor/ 配下の画像ファイルが読み込まれないとき

はじめに 「なんで vendor/ 配下に、読み込むべき画像を置くんだよ」という意見、大変ごもっともだと思いますし私もそう思いますが、特例としてお読み下さい…… 環境 Railsは5.1.1 Rubyは2.4.1 vendor/配下の画像ファイルが読み込まれない 例えば、vendor/ass…

hub コマンド の pull-request の際にプルリクエスト先のブランチ名を指定する方法

結論 --bash オプションを用います。 例 現在のブランチから foobar_hogehoge ブランチに対してプルリクエストを出すものとします。 hub pull-request --base foobar_hogehoge 公式ドキュメント hub.github.com

hub コマンド の pull-request の際に Reviewers や Assignees を指定する方法

結論 Reviewers を指定するとき ここでは、foobar さんと hogefuga さんを Reviewers に指定するものとします。「複数人を指定する場合のカンマの前後」にスペースを空けてはいけません。 $ hub pull-request --reviewer foobar,hogefuga Assignees を指定す…

CircleCI で hubコマンド (GitHub CLI) をインストールする方法

結論 以下のような config.yml を書きます。 version: 2 jobs: build: docker: - image: circleci/ruby:2.6.5 working_directory: ~/repo steps: (省略) - run: name: Install hub command 2.13.0 command: | cd /tmp && wget https://github.com/github/h…

CircleCI で tarball から Golang をインストールする方法

結論 以下のような config.yml を書きます。 version: 2 jobs: build: docker: - image: circleci/ruby:2.6.5 working_directory: ~/repo steps: (省略) - run: name: Download Golang 1.13.4 command: | wget https://dl.google.com/go/go1.13.4.linux-am…

PostgreSQL に初期ログインする方法

結論 シェルのユーザを postgres に変更し、psql コマンドで入れる。 具体的な方法 $ sudo su postgres (ここでユーザはpostgresに変更された) $ psql psql (12.0 (Ubuntu 12.0-2.pgdg18.04+1)、サーバ 11.5 (Ubuntu 11.5-3.pgdg18.04+1)) "help"でヘルプ…

Ubuntu 18.04 で MySQL 8 で root パスワードを忘れたときの再設定方法

結論 1. 動いている MySQL を止めます $ sudo service mysql stop

CircleCI CLI を実行しても最新の更新内容で CI が実行されないとき

結論 コミットしていますか。 補足 ファイルを保存するだけではダメです。ただ、.circleci/config.yml はコミットしなくても大丈夫です。

setup-ruby という Actions を使って GitHub Actions にて複数バージョンの Ruby でテストする

2020/01/04 追記 sue445 さんがほぼベストプラクティスを公開してくださいました。 sue445.hatenablog.com setup-ruby という Actions とは 次のとおりです。 github.com 結論 実行するための最低限の YAML は以下のようになります*1。 on: [push] name: Try…

GitHub の Draft Pull Request 機能はパブリックリポジトリでないと使うことができない

Draft Pull Request 機能 とは こちらの公式ブログを参照して下さい。いわゆる WIP 状態で出すプルリクエストのことです。 github.blog gyazo.com Draft Pull Request 機能を使うための条件 パブリックリポジトリであること です*1。この認識が不十分だった…

デバッグを効率良く行うためにはエラーログを読む時間を意識的に長くする

実例 CI が通らなくてエラーが出ており、原因を探っていたのですが、いろいろな修正を行ってもうまく行かなかったことがありました。そしてふとある時にエラーメッセージを見直したところ、以下のようなエラーメッセージに気づきました。 exit 127 この終了…

Puppeteer で Basic認証の状態 や 保有している Cookies をクリアする方法

結論 browser.createIncognitoBrowserContext() を用いましょう。 具体例 const context = await browser.createIncognitoBrowserContext(); const page = await context.newPage(); await page.goto('https://www.hatena.ne.jp/'); 補足 Jest + Puppeteer …

Mac の Visual Studio Code で「エクスプローラー(ファイル一覧)」にフォーカスを移動するためのショートカットキー

結論 Shift (⇧) + command (⌘) + e フォーカスが「エクスプローラー」にある状態で上記のショートカットキーを押すと、フォーカスが「エディタ本体」に移動します 補足 「ターミナル」にフォーカスがあるときにこのショートカットキーを押しても「エクスプロ…

Mac の Visual Studio Code で「ターミナル」ウィンドウにフォーカスを移動するためのショートカットキー

結論 Shift (⇧) + control (^) + @ 補足 「すでにターミナルウィンドウが表示されているかどうか」によって、以下のように挙動が異なります。 「ターミナルウィンドウが表示されていない状態」 「ターミナルが表示され、フォーカスがターミナルウィンドウに…

GitHub Actions でキャッシュを利用する方法

結論 2019/10/03 現在、無い。*1 キャッシュがないことでどうなるか ライブラリのインストールで毎回長時間待たされる bundle install や yarn install で毎回5分以上待つことになり、辛さしか無い。 GitHub Actions のデバッグをするのに一回につき5分以上…

git clone の際に clone 先のディレクトリを指定する方法

結論 $ git clone https://github.com/rails/rails.git /tmp/foobar 注意点 上記の例だと、/tmp/foobar 直下に clone したファイルやディレクトリが展開されます。/tmp/foobar/rails 配下ではありません。 一方でディレクトリを指定しなかった場合は、リポジ…

Capybara + Headless Chrome (System Spec) で Basic認証 を通過する方法

結論 username と password のところは実際には環境変数を使ったほうがいいでしょう visit_with_http_auth root_path における root_path はアクセスしたいページの path を入れましょう require 'rails_helper' def visit_with_http_auth(path) username = …

RSpec で Headless Chrome を使う際に Chrome が Dev だったり Canary だったりする場合(安定版とは異なるバージョンの Chrome を使っている場合)の対処法

大原則 使用する Chrome に合った ChromeDriver を ダウンロード します。 合致するバージョンがない場合に以下を試します。 結論 エラーが出たときに出てくるエラーメッセージをよく読みます。 Webdrivers::VersionError: Unable to find latest point rele…

Ruby(RSpec)で ChromeDriver を実行しようとしても見つからないとき(インストール方法)

前提 以下は Mac かつ Ruby 環境を rbenv で構築している場合として書いています。 基本 まずは ChromeDriver を落とします。バージョンは最新のでよいです*1。 インストール ダウンロードして展開したファイルである chromedriver をどこに置くかが問題とな…

Visual Studio Code の デバッガ で Rails のデバッグをする

結論 1. 以下の二つの gem をインストールします ruby-debug-ide debase Gemfile に書く場合は development 環境の部分に書きます*1。 2. VSCode の デバッグメニュー で「歯車」アイコンをクリックし「環境の選択」から「Ruby」を選びます Ruby が選択肢に…

Visual Studio Code でリアルタイムに RuboCop の結果を表示する

必要なもの gem rubocop solargraph VSCode の拡張機能 ruby-rubocop Ruby Solargraph VSCode の設定方法 ruby-rubocop について 変更の必要なし Ruby Solargraph について Solargraph: Diagnostics の設定を true にする 動作確認をしてみる 下の画像はファ…

Powered by はてなブログ