Rails で category.stg.example.com のような URL に対応する

きっかけ ステージング環境上のランディングページ(LP)を操作中、知らない間に本番環境のページに移動し、誤ってコンバージョンしてしまった。ビューに本番環境の URL が直書きされていたことが原因だった。 課題 文字列で直書きされていた URL を、URL ヘ…

RSpec でリクエストを実行するときは let が便利

before ブロック RSpec でコントローラや API のテストを作るとき、リクエストの実行を before ブロックに記述することがある。 describe FooController do before { post :create } context 'with some data' do before { create_data } it { expect(respon…

他のテストがタイムトラベルに巻き込まれないよう確実に Timecop.return する(for RSpec)

テストコード内で Timecop.return し忘れると、後続のテストでも Timecop.freeze や Timecop.travel によるタイムトラベルを続行してしまうため、正常な時刻に戻らず、全く関係のないテストが落ちることがある。 例えば、以下のように Timecop.return を記述…

最初から git rebase しやすくするためのコミットの作り方

概要 GitHub 上でレビューしやすい状態にするため、いつも git rebase でコミットの整理を行うようにしているが、時々 rebase 時に conflict を起こして面倒になることがあった。最近思いついた方法で予めコミットを作っておけば git rebase がしやすくなり…

OpenCV で手本の文字と自分が書いた文字をマッチングしてみた(その1:特徴点マッチング)

OpenCV は初めて触った上、画像処理の知識がないので雑なまとめです。 はじめに 書道で使う手本は文字が小さく、手本は何十ページもあるため、後で自分が書いたものと手本を見返そうとしても探すのが大変だったりする。 左: 手本をもとに自分が書いたもの、…

Docker Compose で MySQL コンテナを立てるときに MYSQL_ROOT_PASSWORD 環境変数の指定でハマった

結論 Docker Compose のサービスの環境変数は Hash 形式で設定するのがおすすめ environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' MYSQL_ROOT_PASSWORD: '' # **空文字列** がパスワードとして設定される docker-compose down db だけだと、db コンテナに紐…

Sidekiq を使うとき、ActiveRecord のコネクションプール数 >= Sidekiq のスレッド数 + 1 にするのが良さそう

以下の記事に書かれていたことそのままだが備忘としてまとめた。 repl.info ActiveRecord のコネクションプールは、各 Sidekiq ワーカスレッドと そのスレッドが動作するプロセス(Sidekiq プロセス) に一つずつ割り当てられる Sidekiq の並列数(ワーカス…

開発用データ入り MySQL Docker イメージを作成する仕組みを AWS CodeBuild で構築したよ

流れをぶった切ってしまってすみません! Speee Advent Calendar 2017 の 20 日目の記事です。 19 日目: スポンサー活動を本気でやってみた1年でした 概要 開発用のデータは、Web アプリケーションを作る上で必要不可欠です。しかし、手動で Jenkins から日時…

よくコケる不安定な feature spec への対処療法 rspec-retry gem

背景 業務で開発している Web サービスの feature spec が非常に不安定で、feature spec が CI 上でコケるたびに、ビルドジョブをよく手動で再実行していました。1 回の再実行でパスすることもあれば、まれに 10 回以上の再実行が必要なこともありました。 …

ElastiCache + Redis に出てくる概念と、クラスタモードごとの違い

はじめに Web サイト表示速度向上の一環として、仕事で、ElastiCache + Redis によるキャッシュ層を導入する。 導入にあたり、ElastiCache + Redis で利用するノードタイプ(インスタンスタイプ)や、制限などの事前調査が必要になった。 ElastiCache + Redi…

(メモ)フォーム要素に対してはelement.idよりもelement.getAttribute('id')を使うほうがいい

フォーム要素の id 属性を取得するときは、form.getAttribute("id") を使うほうが良い。 なぜなら、`` な要素を持つフォームだと、`form.id` じゃ form の id 属性取れないもーん

Slack風、Rails によるファストユーザスイッチの実装方法 (Devise 未使用)

この記事は 高知工科大 Advent Calendar 2016 の 14 日目の記事です。 概要 趣味で作っている Rails 製小規模向けグループウェアに、ファストユーザスイッチを実装した話。アカウント登録・認証は Devise を使ってサクッと作ることが多いけど、Devise のカス…

ただの水道水と、沸騰させることでカルキを飛ばした水道水、墨色の違いを見る

概要 淡墨作品を書くときは、水道水を沸かした水で墨を下ろした方が良いという話を、聞いたことがある。 でも、溶媒によって墨色にどういう影響をあたえるのかが分からなかったし、そのあたりをちゃんと説明しているページが見当たらなかった。 そこで、ただ…

「エンジニアなのに書道が趣味って変わっている」とか時々言われるので、きっかけとか書道歴を晒す

概要 「エンジニアなのに書道が趣味って変わっている」とか「きっかけは何だったの?」とか、自己紹介すると時々聞かれるのでここに残す次第。 内容は、書道を始めるきっかけから今に至るまで。書道歴とか言いながら段位も賞も何もないけど*1、小さいながらも…

夏の Speee、内定者アルバイト (インターン) の振り返り

Speee 17卒内定者のやまどりです。夏休みを利用して 1 ヶ月間 Speee でアルバイトしました。入社までの期間を使って実務環境で鍛えさせてくれるとは粋です。 www.speee.jp やったこと リスティング広告のクローラを作った 自社広告順位や競合広告の分析のた…