tips

Springが動くRails+MySQLなAPIサーバの開発環境をDocker Composeで作る

このあいだ、Rails+MySQLという構成のアプリケーション開発環境をDocker Composeで構築できるようにしました。 blog.kymmt.com いろいろと理解が深まるにつれて、何点かクリアしたい問題が見えてきました。 Dockerfile で使うイメージ ruby:2.4.1-onbuild は…

Rails+MySQLなAPIサーバの開発環境をDocker Composeで作る

先日、"Quickstart: Compose and Rails"の手順にしたがいながら、Docker ComposeでRails+MySQLがとりあえず動くような環境を作りました。 blog.kymmt.com 今回は、RailsのAPIサーバの開発環境をもうちょっといい感じにDocker Composeで作ってみます。DBにはM…

"Quickstart: Compose and Rails"を読みながらDocker ComposeでRails+MySQLの環境を作る

次の記事などでDockerを使ってRailsの開発環境を構築しているのを見て、自分でもやっておこうと思ったので、やってみました。 dev.classmethod.jp 公式ドキュメントの"Quickstart: Compose and Rails"を読みながらやります。 docs.docker.com 前提 まったく…

Ruby のテストカバレッジを Travis CI から Code Climate へ POST する方法が変わっていた

Travis CI 上で Rubygems のテストを実行して、テストカバレッジの集計結果を Code Climate へ POST するときにエラーが発生していたので、解決方法をメモしておきます。 エラー /home/travis/.rvm/rubies/ruby-2.0.0-p598/bin/ruby -I"lib:test" -I"/home/t…

Ruby で順列の列挙を実装する

最近いろいろな人が次の本をやっているのを見かけるので、気になって読み進めてみています。 プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問作者: 増井敏克出版社/メーカー: 翔泳社発売日: 2015/10/14メディア: 単行本(ソフ…

Code Climate + Travis CI で gem のテストカバレッジを自動測定する

Code Climate は Git リポジトリからソースコードを読み込んで、品質診断をやってくれる SaaS です。例えば、静的解析として 循環的複雑度(ソースコードの複雑さを表す尺度) ソースコード中の処理/構造の重複数(コードクローン) などをソースコードごと…

Let's Encrypt で証明書取得 & Web サーバ HTTPS 化

2016-07-10 更新 Let's Encrypt を使って取得した SSL/TLS サーバ証明書によって、Rails を動かしている自分の Web サーバを HTTPS 化しました。こんな鍵アイコンが出ていると HTTPS 化されたサーバと通信できています。 HTTPS は次のような利点があります。…

IRB の評価値出力を抑える

小ネタです。 問題 要素の多い Hash などの中身を確認するために、IRB (irb) を使って、その Hash の中身を表示したいときがあります。 このとき、例えば Mechanize::AGENT_ALIASES を表示するために、コマンドを irb(main):002:0> pp Mechanize::AGENT_ALIA…

Webmock でリダイレクトが絡む HTTP 通信をスタブ化する

テストのために、リダイレクトが絡む HTTP 通信をスタブ化したい場合があります。 例えば、Web スクレイピングをするときに、Mechanize を使うと以下のようにログイン処理を書けます。HTTPS になっていないとかは気にしないでください。 require 'mechanize'…

Rails 4.1 以降のアプリを Heroku デプロイ時に Internal Server Error が発生したら

問題 Rails 4.1 以降のアプリを $ git push heroku master $ heroku open で Heroku へのデプロイとアプリへのアクセスをおこなうと、Internal Server Error が発生し、以下のメッセージが表示されることがあります。 app error: Missing secret_key_base fo…

Ruby でメソッド呼び出しのフック処理を実行する

問題 Ruby でなんらかのメソッドを呼び出しにともなって、特定の処理を実行したい場合、つまり、メソッド呼び出しのフック処理を実行したい状況を考えます。 解決法 エイリアスチェイニングという方法で実現します。エイリアスチェイニングについては、『Eff…

Ruby ではてな OAuth のアクセストークンを取得する

はじめに はてなのサービスの API を自作のアプリケーションなどから叩くためには、OAuth というプロトコルを通じて、そのアプリケーションに適切な認可を与える必要があります。 最近 Ruby を触り始め、Ruby ではてなブログの API を叩きたくなりました。そ…

Emacs をアップデートしたあとは cask update を実行する

当たり前の話ですが一応メモ。 Emacs をいまさらながら 24.4 から 24.5 にアップデートしました。アップデートしたあとに Emacs を起動するとこんなエラーメッセージが出て init.el がちゃんと読み込めませんでした。 File error: Cannot open load file, no…

launchd で Homebrew を自動アップデート(Yosemite 編)

対応した内容をブログにメモしておくのを忘れていたので、いまさらながら書いておきます。 OS X で cron 的なことをするためには、launchd というものを使う必要があります。以前、パッケージマネージャ Homebrew のアップデートを自動で走らせたいと思い、l…

単体テスト時に Hamcrest の Matcher#closeTo で誤差あり浮動小数点数の等値比較

状況 JUnit + Hamcrest で単体テストを書いている。 問題 たとえば、単体テストとして、浮動小数点数を返すメソッドを用いて等値比較をしたいとする。ここで、あるテスト対象オブジェクト sut のメソッド getDoubleValueWithError() は 1.0 を返すが、誤差を…

Maven で依存 JAR ライブラリを target/dependency にコピー

問題 $ mvn package で、プロジェクトの target ディレクトリ直下に、プロジェクトの成果物として JAR ファイルが作成される。 このとき、例えばマニフェストに Class-Path: ./dependency/foo.jar ./dependency/bar.jar のように指定する。そして、JARをコマ…

Maven に JDK 1.8 を認識させる

問題 Maven で mvn package などビルドコマンドを実行すると、以下のエラーが表示された。 ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------…

Jackson で JSON データを POJO に格納

前回に続いて。 Jackson を使うと、JSON から POJO へデータを格納できる。 基本 以下のような Book という POJO を考える。著者が一人しか設定できないなど、いろいろ問題があるが、例なので気にしないでほしい。 public final class Book { private String…

Java 向け JSON ライブラリ Jackson でデータを読み込む

使ってみる機会があったのでメモ。 はじめに Jackson は Java 向けの JSON 処理用のライブラリである。 FasterXML/jackson ランダムアクセスで JSON からデータを読みたい。今回は、Jackson にある Databind というモジュールを使う。 データの読み込み 外部…

launchd で Homebrew を自動アップデート

追記:Yosemite 以降では以下の記事を参照してください。 launchd で Homebrew を自動アップデート(Yosemite 編) - kymmt's note Homebrew を使っていて、たまに brew doctor すると、以下のメッセージが表示される。 Warning: Your Homebrew is outdated.…