Rails

SimpleCov で Rails アプリのカバレッジを分析

日曜プログラミングだと、アプリを早く形にしたくて、 ついテストそっちのけで機能ばかり実装しがちな自分。 でもテストを書かないわけにはいかないし。いざ書こうと思ってはみたものの、 どこから手を付けたらいいか悩む。 まぁ、悩んでいても埒が明かない…

LTSV ロガーを自作して Rails アプリで使ってみた

WEB+DB PRESS Vol.74 の LTSV 特集を読んで LTSV 熱が高まったので、Ruby 用の LTSV ロガーを作って、Rails アプリに組み込んでみた。 tnakamura/logger-ltsv tnakamura/rack-ltsvlogger LTSV フォーマットでログを出力するライブラリは既にいろんな人が公開…

Rails 本体で特定のパスに IP アドレス制限をかける方法

RailsAdmin で Web サービスの管理ページを実装しているんだけど、公開するにあたって、管理ページに誰でもアクセスできるのはマズイ。そこでまず考えるのは、管理ページに IP アドレスの制限をかけること。 ただ、今回は Heroku を使っているので、Apache …

モデル間のアソシエーションの情報を取得する方法

belongs_to や has_many で宣言した、 モデル間のアソシエーションの情報を取得するには、 ActionRecord::Reflection の reflect_on_all_associations メソッドを使えばいい。 ActiveRecord::Base は ActiveRecord::Reflection を include しているので、 モ…

bootstrap-sass を使って Twitter Bootstrap をカスタマイズ

RAILS_ROOT/vendor/assets 下に Bootstrap 一式を放り込んで使っていたんだけど、 このやり方だと Bootstrap のスタイルをカスタマイズするとき面倒なことに気付いた。 上書きする CSS を書く?ありえない。 Bootstrap 公式のカスタマイズページを使う? 変…

Rails で CoffeeScript の SourceMaps を出力する方法(暫定版)

Rails の Asset Pipeline は CoffeeScript をコンパイルしてくれるけど、SourceMaps は生成してくれない。 せっかく Chrome が SourceMaps をサポートしているというのに、未だに生成された JavaScript コードでデバッグしろというのか。 実はもう既に Sourc…

Rails で JavaScript を国際化する

はじめに Rails で JavaScript を国際化するには、『i18n-js』という gem を使う。 fnando/i18n-js 自分が作っている Web アプリでそこまでやる必要性は無いかもしれないけど、 国際化せずに直接 HTML や JavaScript のメッセージに日本語を書き込むのは、何…

PublicActivity を使って GitHub の News Feed みたいな機能を実装したメモ

GitHub の News Feed みたいな機能を実装するのに、今まで TimelineFu を使っていたけど、GitHub のコミットログを見たら2年前から開発が滞っているみたい。 Rails 4 が出ても対応なんて望めそうもないので、Ruby Toolbox で TimelineFu の次に人気の Publi…

Devise + OmniAuth + OmniAuth Facebookで Facebook 認証

はじめに Devise を使って実装した認証機能を、Facebook の OAuth を使ったものに変更したい。そこで OmniAuth と OminiAuth Facebook を導入して、認証機能を修正してみた。OmniAuth の Wiki 通りにやれば簡単にいくと思っていたら、ちょっと躓いたので、手…

Evergreen を導入したばかりだけど Konacha に移行した

先日 Evergreen を導入したけど Evergreen は今メンテされてないってコメントで教えてもらった。確かに、README よく見たら書いてあるし…。完全に見落としてた。不覚。README のリンク先、Google グループのスレッドでは Konacha っていう Rails エンジンが…

Evergreen で Rails アプリの JavaScript を単体テストする

はじめに Rails アプリの JavaScript のテストは capybara(+capybara-webkit) を使えば一応できるけど、統合テストなのがね…。統合テストもちゃんと書くけど、やりたいのは JavaScript の単体テストなのに。 そこで Evergreen そんな中で最近知ったのが Ever…

ActiveRecordでテーブルの情報を取得する方法

Railsエンジンを作ってるとテーブル名や列情報を取得したいときがある。Railsアプリを作ってるときはあんまり無いけど。そんなとき用に、ActiveRecord にはテーブルの情報を取得するためのクラスメソッドが用意されている。テーブル名なら table_name、列情…

Rails の Application Template を使ってアプリ新規作成時の刺身タンポポ作業を自動化

rails コマンドにこんな便利機能があったなんて…っ!qiita.comRails アプリを新規作成するとき、決まって次の作業をやっている。 rspec_rails インストール factory_girl_rails インストール Devise インストール ユーザー作成 管理ユーザー作成 RailsAdmin …

非同期処理のために DelayedJob を導入したメモ

メールの送信やランキング集計といった、時間がかかる(かもしれない)処理をバックグラウンドで実行したいので、手軽に導入できそうな DelayedJob を試してみた。 collectiveidea/delayed_job · GitHub DelayedJob をインストール Gemfile に gem 'delayed_jo…

acts_as_taggable_on でユーザーごとにタグを設定する方法

タグをユーザーごとに管理したいんだけど、acts_as_taggable_on では出来ないんだろうな、って勝手に思い込んでいたら、ReadMe に方法書いてあった。英語だからって拒否反応起こしてないで、ちゃんと ReadMe ぐらい読んでおけよ、自分。ReadMe に書いてある…

認証に Devise を使っている Rails アプリの Request Specs の書き方

認証に Devise を使っている Rails アプリ の Request Specs の書き方をネットで調べたら、ヒットしたのは Request Specs + Capybara の情報ばかりだった。今 Rails で作っているのは Web API だから、Capybara は要らないんだよな。Request Specs だけでい…

GitHub の NewsFeed みたいな機能を実装するための Rails プラグイン『TimelineFu』を使ってみた

GitHub の NewsFeed みたいな機能を実装したい party_boy を使ってフォロー機能を実装したら、フォローしているユーザーのアクティビティを表示したい、と思うのは自然なことだよね。NewsFeed みたいな機能を実装するための Rails プラグインに、『TimelineF…

Twitter みたいなフォロー機能を実装するための Rails プラグイン『party_boy』

Twitter みたいなフォロー機能を実装中 自分で一から作ってもいいけど、GitHub をぶらついていたら party_boy っていう面白そうな gem を見つけたので、これを使ってみる。 mnelson/party_boy · GitHub party_boy のインストール Gemfile に追加し、 gem "pa…

Rails3 で管理画面を作成するなら RailsAdmin で決まりかも

はじめに アプリの管理画面はユーザーに見せないから、Rails プラグインでサクッと作ってしまいたい。Rails で管理画面を生成できるプラグインは Typus、ActiveAdmin とかあるけど、個人的に RailsAdmin で決まりかな、って思ってる。 RailsAdmin の何がいい…

Asset Pipeline で bootstrap.css が bootstrap-responsive.css よりも後に読み込まれてしまう

Twitter Bootstrap を twitter-bootstrap-rails を使わず、app/assets に放り込む形で導入したんだけど、レスポンシブ・デザインにしようと思って bootstrap-responsive.css を追加しても、スタイルがちゃんと適用されない…。表示された HTML を Chrome のデ…

RailsAdmin では認証に AdminUser が使えない?

RailsAdmin の認証で使うモデルに AdminUser を使うと、ログインページへのリダイレクトに失敗してしまった。環境は Windows7 + Ruby1.9.3p125 + Rails3.2.6 + RailsAdmin0.0.4。エラーが発生したらまずログを見るべし。ってことで、端末に表示されているロ…

デフォルトロケールが日本語だと date_select でエラー発生

デフォルトロケールが日本語だと、data_select を使っているビューで can't convert Symbol into String っていうエラーが発生した。日本語のロケールファイルに日付選択の記述が無いのが原因。解決策としては、日本語のロケールファイルに ja: date: order:…

Rails で Lazy high charts を使ってチャートを実装してみた

はじめに Rails アプリでチャートを実装したくて、The Ruby Toolbox で Rails プラグインを探してみた。 The Ruby Toolbox - Graphing 上記のページによると、Lazy high charts、Googlecharts、Open flash chart、Gruff の4強みたいだ。Gruff はサーバー側で…

Rails で assets に Twitter Bootstrap を配置してみた

Rails3.2 で Twitter Bootstrap を使いたいけど、Windows では twitter-bootstrap-rails がインストールできなかったので、 Bootstrap で入手した bootstrap.zip を解凍し、assets 下の各ディレクトリに配置してみた。これで Twitter Bootstrap の UI コンポ…

event_calendar プラグインを使って Rails でイケてるカレンダーを実装してみた

はじめに Rails3.2 で開発しているアプリにカレンダーを追加したい。それも、プロトタイプをサクッと作りたいので、プラグインを使ってみる。カレンダーを実装するプラグインでは、Ruby Toolbox によると event_calendar が人気のようだ。 The Ruby Toolbox …

Rails3 でタグ機能の実装

Rails を使った開発で、アプリにタグ機能を実装する場合、これまでは acts-as-taggable 系のプラグインが定番でした。acts-as-taggable とか acts-as-taggable-on とか、acts-as-taggable-on-steroid とか。まだあった気がする。で、今回 Rails3 で開発して…

Rails で認証機能を実現する

はじめに 認証機能を実装するなら、Rails プラグインの restful_authentication を使うと簡単。 以下、作業メモ。 インストール GitHub からプラグインをダウンロードする。 vendor/plugins ディレクトリに移動して次のコマンドを実行。 git clone git://git…

Rails でタグ機能を実現する

はじめに Rails プラグインの acts_as_taggable_on_steroids を使えば、タグ機能を簡単に実現できる。 導入方法 まず、次のコマンドを実行してプラグインをインストール。 ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as…

InstantRails の Rails を最新版にする

Ruby on Rails を使った開発には InstantRails を使っています。ダウンロードして解凍するだけで環境が作れる手軽さがいいですね。InstantRails は長いこと更新されていません。Rails のバージョンなんて、2.0.2 です。でも、gem でパッケージを更新すればま…

Rails の check_box が分かりにくい!

Ruby on Rails を使った開発で、チェックボックスを表示するために <table> <% for item in @items %> <tr> <td><%= check_box("item", "done") %></td> <td><%= h item.description %></td> </tr> <% end %> </table> と記述しても、item.done が True なのにチェックボックスにチェックが付きません。…