Sooey

2012-09-03 01:28:19 +0900

Twitter Bootstrap 2.1でAffixを使うと、Affixを適用した要素の大きさ(幅)が無視されてしまうアナタへ。

以下の例のように、Affixを適用した要素に兄弟となる要素(同じ親を持つ要素)が存在しないとそうなっちゃうようです。

<div class="span6">
  <sidebar data-spy="affix">...</sidebar>
</div>

&nbsp;を入れておけば一応回避できます。

<div class="span6">
  <sidebar data-spy="affix">...</sidebar>
  &nbsp;
</div>

しかし、これではあまりにダサいので、Bootstrapのサイトのサンプルに適用されているCSSを覗いてみたところ、

/* prevent column from collapsing when affixing */
.span3 {
  min-height: 1px;
}

というズルい指定がありました。というわけで、data-spy="affix"を指定した要素の親となる要素(span?)にmin-heightを指定しておけばよさそうです。

2012-08-29 13:44:58 +0900

Rails 3.2でテンプレート名に*.js.coffeeを使うと、productionでActionView::MissingTemplateが発生する場合の解決方法。

アクションのレスポンスとしてJavaScriptを返す際に、CoffeeScriptで書こうと思ってcreate.js.coffeeのようなファイル名のテンプレートを作成すると、productionで動かした時にActionView::MissingTemplateが発生してしまう。

これを解決するには、Gemfileassetsグループの中に記述されている以下の2つのgemをグループの外に出して、production環境でも読み込まれるようにすればよい。

gem 'coffee-rails'
gem 'uglifier'

参考:asset pipeline - rails 3.2 ActionView MissingTemplate only in production - Stack Overflow

2012-08-20 13:17:44 +0900

jnunemaker/flipper、datastore agnosticなfeature flippingライブラリ。feature flippingってのはつまりWebアプリのある機能を特定の条件下でオン・オフする仕組みということだけど(日本語だとなんて言えばしっくりくるだろうか)、その判定に使うデータをRedisに格納するタイプのgemとして有名なものにjamesgolick/rolloutというものがある。flipperは、そのRedis依存部分を任意のアダプタに差し替え可能にした形のアーキテクチャになっている(コードベース自体はまったく別です)。

READMEには

This project is a work in progress and not ready for production yet, but will be very soon.

とあるので、実プロジェクトへの投入はもうちょっと待ったほうがよさそうだけど、機能のオン・オフをWeb UIで行えるようにする予定もあるそうなので注目してる。

ちなみに、jnunemaker氏はもともとGitHubに買収されたOrdered Listの人なので、このgemもGitHubで使われたりするのかもしれない。そして、リポジトリとかをウォッチするかぎり、この人はどうもdatastore agnosticなものを作るのがだいぶ好きなようだ。

2012-07-20 19:17:30 +0900

npmpackage.jsonにgitリポジトリを指定する方法。

パッケージ管理にnpmを使っているnodeアプリのpackage.jsonに、

  "dependencies": {
    "hubot": "2.3.0",
    "hubot-scripts": ">=2.1.0",
    "hubot-hipchat": ">= 1.0.8",
    "optparse": "1.0.3",
    "xml2js": ">= 0.1.14",
    "jsdom": ">= 0.2.14"
  }

このように依存ライブラリが記述されている場合に「hubot-hipchatをforkしてパッチをあてたものを参照させたい」といったケースでどうするか。

  "dependencies": {
    "hubot": "2.3.0",
    "hubot-scripts": ">=2.1.0",
    "hubot-hipchat": "git://github.com/juno/hubot-hipchat.git",
    "optparse": "1.0.3",
    "xml2js": ">= 0.1.14",
    "jsdom": ">= 0.2.14"
  }

バージョン指定のかわりにgitリポジトリのURLを指定してnpm installすればOK。Herokuへのデプロイ時にもちゃんと指定したリポジトリのコードが取得されました。

2012-06-18 23:19:26 +0900

Rails 3.2でネストしたモデルの属性名をI18nで翻訳する。

上記のように、あるモデルがaccepts_nested_attributes_forで他のモデルの属性を受け取れるようにしている場合、Userが持つpostsの属性名をバリデーションなどで国際化されるようにするにはconfig/locales/*.ymlで、

のような階層を定義すればよい。