下記の神ブログ様の記事通りで行けました。

werckerでrspecとcucumberのCI環境を作る - zephiransasのチラシの裏

怖話はcucumberじゃなくてrspecのfeature specですが変わんないです。(そういうところは多いと思います。)

ciercleciは(xvfbやqtの)ノー設定で行けたのでHeroku Addonからならciercleciも無料なのでお勧めです。

怖話のwercker.ymlを一応貼っときます。

services:
   - wercker/mysql
build:
    steps:
        - rvm-use:
            version: 2.1.0
        - script:
            name: Make tmp directory
            code: mkdir tmp
        - script:
            name: Enable virtual display
            code: |-
              export DISPLAY=:99.0
              start-stop-daemon --start --quiet --pidfile /tmp/xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset
              sleep 3
        - install-packages:
            packages: libqtwebkit-dev
        - bundle-install
        - rails-database-yml:
            service: mysql
        - script:
            name: echo ruby information
            code: |
                echo "ruby version $(ruby --version) running"
                echo "from location $(which ruby)"
                echo -p "gem list: $(gem list)"
        - script:
            name: Set up db
            code: RAILS_ENV=test bundle exec rake db:schema:load
        - script:
            name: Run RSpec
            code: bundle exec rspec spec

16x16の画像を作ってPreviewでSaveとかExportする時、formatのプルダウンを・・・

Option + クリックするとMicrosoft Icon形式が選べるようになる!

こんなんわかるかー!

HipChatに対応してるから楽。というよりPivotalのようにHipChatに対応してないのは少数派。CircleCIはHeroku Addonなら今のところprivate reposも無料なのでお得。

  • HipChatのAPI Auth Tokensのページでauth tokenを作成しとく。
  • HipChatのRoom API IDsのページで通知したいRoomのIDを知る。
  • https://www.pivotaltracker.com/projects/プロジェクトID/integrations

    Pivotal側がちょっと分かり辛いんだけど、上記のようなURLにあるActivity Web Hookにroom_idとauth_token付きで登録する。(v5では動かないのでv3にする必要があるので注意。)

    https://api.hipchat.com/v1/webhooks/pivotaltracker/?auth_token=トークン&room_id=ルームID

    HipChatのPivotal Tracker Integrationを参照すればignoreなどもっと細かい設定ができることがわかる。

以前はコレだったけど、

puts "-----------------------------------"
puts @posts.inspect
puts "-----------------------------------"

railsのdebugの疑問 - komagata

今はputsしてPowのログを見る方式にした。(ログを見るのはtailかConsole.app)

# app/controller/home_controller.rb:
class HomeController < ApplicationController
  def index
    puts 'foo'
  end
end

Powの標準出力と標準エラー出力はlogに向いてるのでただputsするだかけなのは楽だ。

アプリの一部では使うからjbuildrのgem入れてるけど基本的にscaffoldでjson使いたくない場合。

# config/application.rb:
module Rails
  class Application < Rails::Application
    config.generators do |g|
      g.jbuilder false
    end
  end
end

指定したIPからの接続しか受け付けない(古いタイプの)システムと連携したい場合にHerokuだと困る。

ProximoというAddonは固定IP付きのproxyを提供してくれる。rest-clientとかで接続するときにproximoの提供するproxyを設定してリクエストすればOK

require "rest-client"

RestClient.proxy = ENV["PROXIMO_URL"]
res = RestClient.get("http://api.someservice.com/endpoint")

puts "status code", res.code
puts "headers", res.headers

これで固定IP + https + 証明書が必須なシステムとかとも連携できる。httpsの通信をhttp proxy経由で可能かな?とちょっと心配だったけどproxyは中身知らんぷりでそのまま転送するので大丈夫。

proximoはリクエスト数がPlan毎に決まってるので必要なリクエストでだけproxy経由して節約する。

$ curl -x http://proxy.com:8080 http://example.com

port指定しないとデフォルトでは1080番にアクセスしに行く。知らないとハマって死ぬ。

おまけ

SSLの証明書とパスワード付きでアクセスする。cert.pemはprivate keyとclient certをconcatinateしたもの!これを知らない者は死ぬ!

$ curl -x http://proxy.com:8080 -E cert.pem:password http://example.com
% brew update
% brew upgrade ruby-build
% CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline`" rbenv install 2.1.0
% rbenv global 2.1.0
% gem install bundler rbenv-rehash
% rbenv rehash

バージョンのパッチレベル表記がシンプルになったのは気持ちいいですね。

サーバー台よりS3+CloudFront代の方が高いという自体になっているので、どーせAppサーバー1台だから怖話の画像ファイルをそのままストレージにおいてみた。

capistranoでおなじみの安心構成なのでS3のファイルをscpするだけで完了。

stop and bootするぐらいでは別のストレージになってるなどはなかったけど、柔軟に構成を変えられるのが売りだとおもうのでそういう場合に「あれ、あの画像どこいった?」とならないように注意が必要。

しかし、EYC外のアプリを1台インスタンスにポコっと持ってきてもとりあえず動くのでそこからS3化考えるってのも入り方としては良さそうに思いました。