Could not find minitest-5.8.0 in any of the sources

頭働いてない状態でいつもどおり、

$ rails new my-app
$ cd my-app
$ powder link

的なことをやったら、タイトルのエラーでpowが起動しなかった。

$ gem update bundler

とか

$ bundle update

もやったけどダメ。
一瞬???てなったけど、rbenvのデフォルトじゃない環境で作業してたことを思い出した。

$ rbenv local 2.2.2
$ touch tmp/restart.txt

で解消。

結論。眠い時は寝よう。

screencapでrubyからスクリーンショットを取得

同種のGemはいっぱいあると思うけど、https://github.com/maxwell/screencap を使ってみたら、普通に動いたので良かった。

ブラウザとしてはPhantom.jsを使っているようだ。https://github.com/westoque/phantomjs.rb がdependencyに指定されているので勝手に入る)

path = File.expand_path("./path/to/index.html")
f = Screencap::Fetcher.new("file://#{path}") 
screenshot = f.fetch(
  output: "./path/to/screenshot.png",
  width: 800,
  height: 600,
  debug: true
)

こんな感じでローカルのファイルのスクリーンショットを簡単に取得できた。
debug: trueは詳細なログを出してくれるので指定しておいた方がうまく行かなかった時の調査に役立つ。
FontAesomeが表示されなくて困ったけど、MacのFont Bookからフォントをシステムにインストールしちゃえばいけた。

RailsのCommitログを検索するやつをElectron化

http://blog.tnantoka.com/posts/80 で作ったもの。

データサイズが問題になってたんだけど、デスクトップアプリなら数MBでもOKでしょうということで、Electron化してみた。

https://github.com/tnantoka/commits

あまり快適ではない感じだ。素直に何かしらのデータベース使ったほうがいい気がする。

Electronに入門してGitHubログインするところまで

デスクトップアプリ作りたい欲が高まってきたので、Electron に入門した。

Hello

初めてのElectron! HTML5でデスクトップアプリを作成しよう – ICS LAB がわかりやすかった。

$ node -v
v0.12.7

$ npm install electron-prebuilt -g

$ electron -v
v0.30.0

これでひとまず環境は整う。

次は、

http://electron.atom.io/docs/v0.29.0/tutorial/quick-start/

のとおりに、

  • package.json
  • main.js
  • index.html

を作成。

$ electron .

したら動いた。

パッケージ化も、

$ npm install electron-packager -g
$ electron-packager . your-app --platform=darwin --arch=x64 --version=0.30.0 --overwrite
$ open your-app-darwin-x64/your-app.app/

で行けた。
これは確かにお手軽だ…。

GitHubログイン

作りたいものがOAuth認証を利用するアプリなので、GitHubで試して見た。

Electron. oAuth authentication with GitHub がとても参考になった。

ログイン部分のソースはこちら。
https://github.com/tnantoka/GitHubLogin/blob/master/auth.js

ポイントはredirectを監視して、queryにcodeがあったらそれを使ってアクセストークンを取得するところ。

無事に認証できたら、localStorageにtokenを入れてページをreloadするという手抜き実装にしている。

この規模でももう既に破綻の香りがするので、React・Fluxでの実装を勉強しようと思った。

メモ

TODO

  • アプリ閉じたあとdockアイコンクリックで復帰させる方法

Peepholeという怪しげな名前のgemを作った

https://github.com/tnantoka/peephole
Railsのログをそれなりに閲覧できる画面を追加するエンジン。

ちょっと複雑なテキスト処理をしているサービスがあって、「何か起きたらメールで通知しつつ、ユーザーには最低限の結果を返す」ということをやっている。

で、なぜか最近ヘビーなユーザーがいらっしゃるらしく、エラーがわりと来る。
そのたびに、「エラーの再現のためログからデータをサルベージして…」というのが面倒になってきたので、さくっとログを閲覧できるこいつを作った。

受託開発とかで、「お客さんに一応見れせるようにはなったけど、まだ細部は荒いですよ」的なフェーズにも役立つんじゃないかと思っている。
(ステージングサーバーへのアクセス許可を与えなくても、ログだけ開発メンバーに共有できる。どういう操作をされたかはやっぱりログを見るのが一番。)

類似gemはあるんだろうけど、久々にEngine作ってみたかったので、あえて調べてない。
昔作った時はいろいろハマった気がするけど、今回はスムーズに作れた。わりと満足。