アルパカログ

Webエンジニア兼マネージャーがプログラミングやマネジメント、読んだ本のまとめを中心に書いてます。

Ruby

RSpec letとcontextを使ってテストの見通しを良くする方法解説

RSpecを始めたばかりの人にとって、letやcontextは最初は少し難しく思えるかもしれません。しかし、letやcontextを使いこなすことでテストの見通しを格段に良くすることができます。このエントリでは、RSpecのletとcontextの使ってテストの見通しを良くする…

Ruby on Rails エンジンにおけるアセットパイプラインの設定方法

Ruby on Railsにおいて、アセットパイプラインはデフォルトで有効になっており、JavaScriptファイルやCSSファイルを圧縮して配布するのに使われます。しかし、アセットパイプラインはライブラリ間のバージョン違いによって躓きやすく、「エンジン」を使う場…

Ruby on Rails エンジンにおけるFactoryBotの設定方法

Ruby on Railsでの開発において、FactoryBotはもはや切っても切れない存在になっています。しかし、Ruby on Railsでサブアプリを追加する機能の「エンジン」を使う場合には、設定に少し戸惑うかもしれません。このエントリでは、Ruby on Rails 6のエンジンで…

Ruby on Rails リンクを生成するlink_toヘルパーで確認ダイアログ(confirm)を出す

リンクを生成してくれるlink_toヘルパーは、Ruby on Railsの数あるヘルパーのうちでもよく使われます。link_toヘルパーは、リンクの記述をシンプルにするだけでなく、簡単に確認ダイアログ(confirm)を出すこともできます。このエントリでは、Ruby on Rails 5…

Ruby on Rails カスタムバリデーションのエラーメッセージを翻訳する

Ruby on Railsでは、カスタムバリデーションを使って独自のバリデーションを追加することができます。しかし既存のバリデーションと違い、カスタムバリデーションではi18nによる翻訳を自分で追加しなければなりません。このエントリではRuby on Rails 5にお…

rbenv OpenSSLのエラーでRubyのインストールが失敗する場合の解決方法

Macに入れたrbenvでRubyをインストールしようとして、OpenSSLライブラリのLoadErrorになってしまう場合がある。この場合はHomebrewでOpenSSLをインストールすると良い。

Ruby 特異メソッドを定義してインスタンスメソッドを上書きする方法

一般に、継承やMix-inを使わずにメソッドを上書きしてしまうのは推奨されることではありません。読み手にとって何が起こっているかわからないコードは、バグの温床となるからです。しかし、上書きができないというわけではありません。そう、Rubyならね…。こ…

Ruby on Rails リクエストログにユーザーIDを追加する方法(Lograge)

Ruby on Rails 5でAPIを作っていて、デフォルトのリクエストログにユーザーID(user_id)を追加したいということがあると思います。このエントリでは、Ruby on Rails 5でLogrageを使ってリクエストログにユーザーIDを追加する方法を説明します。

Ruby on Rails 認証付きAPIとテストの書き方(RSpec)

Ruby on Rails 5で認証付きのAPIを作りたいというケースがあります。このエントリでは、Ruby on Rails 5でJWTを使った認証付きAPIの作り方と、RSpecを使ったテストの書き方を説明します。

logrotate ローテーションされたログファイルを再オープンする(Ruby)

サーバーの様々なログを、日付などでローテーションしてくれるlogrotateはよく使われます。しかし、ログファイルを開きっぱなしにするサーバーアプリケーションなどでは、logrotateがログファイルをローテーションしても、ずっと元のログファイルに書き込み…