OMG Tech Blog

Oh My Glasses Engineers' Blog

.travis.ymlのギャラリー

こんにちは。さねまつです。

.travis.ymlのギャラリー作ってます。オーマイグラスの.travis.ymlはこんなかんじです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
language: ruby
rvm:
  - 2.0.0
env:
  - DB=mysql
before_install: gem install bundler --pre
before_script:
  - cp config/database.yml.example config/database.yml
  - cp config/settings.yml.example config/settings.yml
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
  - RAILS_ENV=test bundle exec rake 'parallel:create[4]' 'parallel:load_schema[4]' 'parallel:prepare[4]'
bundler_args: --deployment --without development production --jobs=4
notifications:
  email:
    - notify@example.com
script: bundle exec parallel_test -n 4 -t rspec spec
branches:
  only:
    - master

サービスレベルで実運用してる.travis.yml見たいですよね!!! 観測範囲だとこのぐらい。

他にもご存知でしたらpull requestください。 https://github.com/sanemat/soryu

soryu

以上デース

テストを落としたのでTravis-CIのbuildを再キックする

こんにちは。さねまつです。

Travis-CIでテストを落とした時に、capybaraか何かタイミングのせいで失敗した!(だからオレは悪くない!)と思い込めたら、歯車アイコンの’Restart Build’を選んでbuildを再キックします。

restart-build

弊社オーマイグラスはprivate なreposもテストしたいので、Travis PRO使ってます。Restart Buildは、pro関係なく、自分にadmin権限あればrestartできます。権限足りないと押せないみたい。 なおcli clientからだと $ travis restart 57.1 で実行できるらしい READMEより

pro関係あるのは、’feedback & support’ のtabです。ここからメッセージを送ると、サポート宛にチケットが切られて、メールでやりとりします。ぼくがオーマイグラスにJoinしてからの一年弱で2回(2012-12-25, 2013-01-30)問い合わせしてます。開発者がそのまま返事くれるので、伝言ゲームにならないのがよかったです(当時)。

タイミングで落ちるテストは近いうちに直します!!!

以上デース

Localのcronから朝会を通知したい

こんにちは。さねまつです。

ローカルのcrontab, 特に管理してなくてうっかり消しました。

crontab

crontab

wheneverで書いてリポジトリ管理しておくとうれしいですね。

1
2
3
4
5
6
every :weekday, at: '10:15 am' do
  command "echo '朝会です'| #{ENV['PATH_TO_HIPCHAT_CLI_BIN']} -t #{ENV['HIPCHAT_TOKEN']} -r #{ENV['ROOM_AOBA']} -f 'sebastian'"
end
every :thursday, at: '3pm' do
  command "echo 'コードレビューです'| #{ENV['PATH_TO_HIPCHAT_CLI_BIN']} -t #{ENV['HIPCHAT_TOKEN']} -r #{ENV['ROOM_AOBA']} -f 'sebastian'"
end

こんな感じ。sebastian

heroku エコシステム駆使するとか、空いてるサーバーにいれちゃうとか、ちょっと考えてめんどくさくなったのでローカルのまま運用してます。

hipchat api

どれ使ってもいいんじゃないでしょうか(未確認) https://www.hipchat.com/docs/api/libraries

pure rubyの使うと取り回し良さそうなのですが、ひとまずbash版で動いているのでほっといてます。パイプで動くとunixのテコの原理に載ってる気になれてよい。

1
echo 'コードレビューです'| ./hipchat_room_message -t TOKEN -r ROOM_NUMBER -f NAME

設定管理は大げさじゃないのがいいなとdotenv使ってます。まあまあ便利。

see: The Ruby Toolbox – Configuration Management

ローカルで動かしてる最大の欠点

朝会開始の時間に自分が出社してないと発言しないので、あれだ。可視化されますね。

以上デース

なかむらくんに通報する、あるいはYeomanでbookmarkletを作る

こんにちは。さねまつです。

商品情報簡単に編集できるといいね、ということでなかむらくんに通報するためのbookmarkletをいくつか作りました。

なかむらくんに通報する

なかむらくんに通報する

技術的にはYeomanでbookmarkletを作ってみた話です。もう少し細かく言うと、yoでbookmarklet用のtempleateをgenerateして、gruntで変更をwatch, 変更あったらminifyしてbookmarkletとして出力しています。変更をwatch~というのもgenerateしたtemplateに書いてあるので、やるのは grunt server 実行するだけです。

商品情報をアラートするブックマークレット

使い方

  1. bookmarkletを登録します。(dist/bookmarklet.js)
  2. 商品ページを開きます。
  3. bookmarkletを実行すると、ページ内の商品情報をスクレイピングしてalertします。

仕組み

1
2
yo bookmarklet # bookmarklet用のtemplateをgenerate
grunt server

app/main.js を編集していくと保存するたびに dist/bookmarklet.js にbookmarkletを作成します。処理内容はgeneratorがGruntfile.js を生成していて、そこに書いてあります。

coffeescriptで書けたらいいなーというのはgruntfile書けば良さそうで、あとGruntfile自体もcoffeeで書けるそうだ(伝聞)。

see

その他なかむらくんに通報するtips

なかむらくんに通報するブックマーク

https://mail.google.com/mail/?view=cm&fs=1&to=nakamura@example.com&cc=ops@example.com&su=%e5%95%86%e5%93%81%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ab%e3%83%9f%e3%82%b9%e7%99%ba%e8%a6%8b&body=&tf=1

こちらはリンクだけ。やりたいことを最短で満たしたしいいやこれで。

管理画面のeditページ直接開くbookmarklet

商品ページからjQueryで要素拾って、管理画面の対応するeditページをopen

画像を横並びに比較して間違いに気づきやすいview

  • controllerはadmin側
  • model, serviceは検索で使ってるものと同じ
  • viewがちょっと違う
  • だいたいこれの別view

編集ページのパーマリンクへリンクあり

実現したストーリー

before:

  • 商品情報が間違っているのを見つけた!
  • どこに書いていいかわからない… 直していいかわからない… 直すのだるい…
  • 間違ってるから直してって言われたけどどの商品のどこだっけ

after:

  • 商品情報が間違っているのを見つけた!
  • 自分でedit, キャッシュも消す
  • コピペが楽になったので、送って直してもらう場合にもお互い分かりやすい
  • ひとまずメールで残る

ヤッター! (メールってフォーマットだるいですねというのはまた別のお話)

以上デース