Ruby
WEB+DB PRESS Vol.74 の LTSV 特集を読んで LTSV 熱が高まったので、Ruby 用の LTSV ロガーを作って、Rails アプリに組み込んでみた。 tnakamura/logger-ltsv tnakamura/rack-ltsvlogger LTSV フォーマットでログを出力するライブラリは既にいろんな人が公開…
RailsAdmin で Web サービスの管理ページを実装しているんだけど、公開するにあたって、管理ページに誰でもアクセスできるのはマズイ。そこでまず考えるのは、管理ページに IP アドレスの制限をかけること。 ただ、今回は Heroku を使っているので、Apache …
belongs_to や has_many で宣言した、 モデル間のアソシエーションの情報を取得するには、 ActionRecord::Reflection の reflect_on_all_associations メソッドを使えばいい。 ActiveRecord::Base は ActiveRecord::Reflection を include しているので、 モ…
はじめに Rails で JavaScript を国際化するには、『i18n-js』という gem を使う。 fnando/i18n-js 自分が作っている Web アプリでそこまでやる必要性は無いかもしれないけど、 国際化せずに直接 HTML や JavaScript のメッセージに日本語を書き込むのは、何…
AngularJS を使って Single Page Application を作成するなら、おそらく避けて通れないのがルーティング機能。例えば一覧と編集でビューを切り替えたい場合、ルーティング機能を使ってコントローラーとテンプレートを切り替えて描画する、はず。先日作成した…
AngularJS で Web API を呼び出すのに使う $resource が、ドキュメントを読んだだけじゃイマイチ分からなかったんで、簡単なサンプルを書いてみた。まず、呼び出す対象の Web API は Sinatra でさくっと作成。 # coding: utf-8 require "sinatra" require "j…
標準ライブラリの RSS::Maker を使うのが手っ取り早い。 # coding: utf-8 require "rss/maker" FEED_LINK = "http://d.hatena.ne.jp/griefowrker" def sample_feed RSS::Maker.make("2.0") do |rss| rss.channel.title = "present" rss.channel.description …
TracLightning を動かしているサーバーが なので、新しいサーバーに移行することになった。当然、Subversion の履歴や Trac のチケットも移行しないといけない。手作業で trac-admin や svnadmin をたたくなんてやってられないので、Ruby で Trac のデータを…
GitHub の News Feed みたいな機能を実装するのに、今まで TimelineFu を使っていたけど、GitHub のコミットログを見たら2年前から開発が滞っているみたい。 Rails 4 が出ても対応なんて望めそうもないので、Ruby Toolbox で TimelineFu の次に人気の Publi…
外部の Web API を呼び出して取得した JSON を格納するクラスをいちいち定義するのが面倒だったんだけど、つい先日閃いた。「Web API のレスポンスのボディは JSON なんだから、その JSON をもとにソースコードを生成すればいいじゃないか」ってね。Ruby で…
OmniAuth Facebook を使って Facebook アカウントで認証できるようにはなったけど、ユーザーの情報や友人の情報を取得するには Graph API を呼び出さないといけない。OmniAuth Facebook はそこまで面倒みてくれないので、Graph API クライアントライブラリを…
はじめに Devise を使って実装した認証機能を、Facebook の OAuth を使ったものに変更したい。そこで OmniAuth と OminiAuth Facebook を導入して、認証機能を修正してみた。OmniAuth の Wiki 通りにやれば簡単にいくと思っていたら、ちょっと躓いたので、手…
ブログの Feed をダウンロードする機能の単体テストで、いちいち本物の Feed にアクセスしたくない。テスト遅くなるし、Feed 更新されたらテスト結果変わっちゃうし。こういうときはスタブやモックの出番。WebMock という gem を使うことにした。 bblimke/we…
先日 Evergreen を導入したけど Evergreen は今メンテされてないってコメントで教えてもらった。確かに、README よく見たら書いてあるし…。完全に見落としてた。不覚。README のリンク先、Google グループのスレッドでは Konacha っていう Rails エンジンが…
はじめに Rails アプリの JavaScript のテストは capybara(+capybara-webkit) を使えば一応できるけど、統合テストなのがね…。統合テストもちゃんと書くけど、やりたいのは JavaScript の単体テストなのに。 そこで Evergreen そんな中で最近知ったのが Ever…
Railsエンジンを作ってるとテーブル名や列情報を取得したいときがある。Railsアプリを作ってるときはあんまり無いけど。そんなとき用に、ActiveRecord にはテーブルの情報を取得するためのクラスメソッドが用意されている。テーブル名なら table_name、列情…
Ruby を Rails アプリ開発だけに使うのはもったいない。刺身タンポポ作業は Ruby でスクリプト書いてどんどん自動化しないと。というわけで、Ruby で Subversion のリポジトリを更新して、プロジェクトをビルドする作業を自動化してみた。Rake ファイルだけ…
rails コマンドにこんな便利機能があったなんて…っ!qiita.comRails アプリを新規作成するとき、決まって次の作業をやっている。 rspec_rails インストール factory_girl_rails インストール Devise インストール ユーザー作成 管理ユーザー作成 RailsAdmin …
メールの送信やランキング集計といった、時間がかかる(かもしれない)処理をバックグラウンドで実行したいので、手軽に導入できそうな DelayedJob を試してみた。 collectiveidea/delayed_job · GitHub DelayedJob をインストール Gemfile に gem 'delayed_jo…
Windows では RailsInstaller を使ってインストールしたから、追加でインストールした gem をリストアップしておく。 RailsInstaller 一式 debugger awesome_print simplecov simplecov-rcov sinatra warden rspec factory_girl rspec-rails factory_girl_ra…
Ruby2.0 で追加されると噂の Enumerable#lazy は、Ruby で遅延リストが使えるようになる、個人的に待望の機能。map や select をメソッドチェーンしたとき、何度もループをぶん回すのが不満だったからなぁ。Enumerable#lazy は以前ちらっとソースコードを見…
タグをユーザーごとに管理したいんだけど、acts_as_taggable_on では出来ないんだろうな、って勝手に思い込んでいたら、ReadMe に方法書いてあった。英語だからって拒否反応起こしてないで、ちゃんと ReadMe ぐらい読んでおけよ、自分。ReadMe に書いてある…
認証に Devise を使っている Rails アプリ の Request Specs の書き方をネットで調べたら、ヒットしたのは Request Specs + Capybara の情報ばかりだった。今 Rails で作っているのは Web API だから、Capybara は要らないんだよな。Request Specs だけでい…
RequireJS で遊んでいるんだけど、RequireJS では HTTP GET で依存しているモジュールを取得するから、デバッグするにも HTTP サーバーを起動しないといけない。このためだけに、HTTP サーバーをインストールするか、Sinatra でデバッグ用アプリ作れっていう…
以前書いた次の記事を読み返していて思ったんだけど、 目から鱗が落ちた JavaScript の即時関数パターンの使い方 - present C# でも無名関数作れるから即時関数パターンできるよね。 using System; using System.Diagnostics; namespace ImmediateFunctionSa…
GitHub の NewsFeed みたいな機能を実装したい party_boy を使ってフォロー機能を実装したら、フォローしているユーザーのアクティビティを表示したい、と思うのは自然なことだよね。NewsFeed みたいな機能を実装するための Rails プラグインに、『TimelineF…
Twitter みたいなフォロー機能を実装中 自分で一から作ってもいいけど、GitHub をぶらついていたら party_boy っていう面白そうな gem を見つけたので、これを使ってみる。 mnelson/party_boy · GitHub party_boy のインストール Gemfile に追加し、 gem "pa…
はじめに アプリの管理画面はユーザーに見せないから、Rails プラグインでサクッと作ってしまいたい。Rails で管理画面を生成できるプラグインは Typus、ActiveAdmin とかあるけど、個人的に RailsAdmin で決まりかな、って思ってる。 RailsAdmin の何がいい…
Plagger の二番煎じを作ってみた いや、違うな。Pragger や Yapra や、最近では Automatic Ruby なんてのも出たから、五番煎じくらいか。 fragile | RubyGems.org | your community gem host ソースコードは GitHub で公開している。 GitHub - tnakamura/fra…
ブログなどの RSS をパースしてゴニョゴニョするための gem を探そうとしたけど、パーサなら Ruby1.9 の標準ライブラリで既に提供されていた。 require "rss" class RssInput def initialize(config) @url = config[:url] end def call result = RSS::Parser…