良いあそなすちゃん

良い方のあそなすちゃんです!

最近のRails開発環境

いい感じに落ち着いてきたのでスナップショット的に記録を残しておく

入れてる開発系Gem

awesome_print

p が綺麗になった感じ

better_errorsとbinding_of_caller

エラー画面が綺麗になる

bullet

N+1を見つける

did_you_mean

変数名間違っていると「こっちじゃね?」って言ってくる

guard-rspec

guard系は沢山いれてたけど、rspecだけに絞った。

letter_opener_web

メール送信をWebブラウザから確認できる

quiet_assets

Railsのログにassets関連を出さないようにする

package.json

  "dependencies": {
    "browsernizr": "*",
    "gulp": "*",
    "gulp-coffee": "*",
    "gulp-concat": "*",
    "gulp-sourcemaps": "*",
    "underscore": "^1.8.3",
    "vinyl-source-stream": "*"
  },
  "devDependencies": {
    "browser-sync": "^2.6.5",
    "browserify": "^9.0.8",
    "coffee-script": "^1.9.0",
    "coffeeify": "^1.0.0",
    "watchify": "^3.2.0"
  },
  "scripts": {
    "watch": "watchify -t coffeeify lib/external-assets/js/viewer.coffee -dv -o lib/external-assets/dist/js/viewer.js",
    "browser": "browser-sync start --files \"(app|lib)/**/*\" --proxy 'localhost:3000'",
    "start": "npm run watch & npm run browser"
  },

dependenciesとdevDependencies、underscore以外は実質全部devDependenciesでよい。前はgulpとかもりもりつかってたんだけど、watchfyがよさそうだったので全部乗り換えた(こうやってみるとdependenciesのgulpは消せばよいね)

個人的にオススメしたいのは browser-syncで上記のようなコマンドを用意しておくとファイルの変更を検知してブラウザをリロードしてくれる。
slim書いているときにブラウザの更新ボタンを押すことがなくなるので、左の画面でコード書いて右に縦長のディスプレイを置いて、画面いっぱいにブラウザを表示しておくと、ほぼエディタから移動することがないので効率がよい。

他にもマウスカーソルをトラッキングしてくれて、ChromeFirefoxSafariを同時に起動しておいてブラウザ1つを操作すると他のブラウザも追随するので同時に他のブラウザを確認したいときに便利。

似たようなものでrack-livereloadというgemがあるんだけど、これはRailsがエラーをはくとlivereloadするためのassetsをロードできない(エラー画面にscriptタグが挿入されない)という問題があって、タイポとかで500だすと自分でリロードボタンを押す必要がある。
browser-syncのアプローチはプロキシを挟むことでリロードに必要なscriptを読み込むのでbrowser-sync越しにアクセスさえしていれば500画面でも元のファイルを書き換えて保存さえすればリロードされる。

問題点としてはlivereloadとは違ってファイルの保存をする度にどんどんブラウザをリロードするのでRailsがリクエストを返し切る前に次のリクエストが来たりしてSQLがバンバン流れるページ(1回で150本ぐらい)だとrailsのプロセスが落ちたりする。vimの設定でスペースキーを2回叩くと保存みたいなのにしていて手癖で保存しまくっていると死ぬ。

まとめ

開発環境、いい感じにしていきたいけどなんかあんまりいいかんじになっているのかよくわからない。
もうちょっと前はbowerとgulp使ってたんだけど最近はnpmにまとめて、まとめたけどnpmも微妙に使いにくいのでふむーというかんじ。

gemに関してはNodeに比べるとゆるやかな変化をしている(といっても月に1度ぐらいは変化してる)