Rubellum fly light

ほぼPHP日記

Ruby

Sequel で特定のカラムを指定するときは Sequel[:table][:column]

Ruby でサクッと DB にアクセスするときに Sequel をよく使っています。 同名カラムを持つテーブルをJOINするときはどちらのテーブルのカラムかを指定しますが、Sequelでの指定方法を忘れがちなので備忘録がてらメモを残します。 下記のようなフォーマットで…

Module#prepend

Module#include クラスAがモジュールMをincludeすると、メソッドの探索順は A → M → …のようになる。 つまり、モジュールMはクラスAの親クラス側に差し込まれる。 module M def hello puts "M hello" end end class A include M def hello super puts "A hel…

Slimで改行のあるHTMLを出力する

SlimはHamlによく似たテンプレートエンジンです。 %記号がないので、より書きやすくて見やすいです。Slimで出力すると改行のないHTMLが出力されます。 今まで汚いなーと悩んでましたが、ドキュメントに整形(改行とインデント)して出力する方法が普通に書い…

Rubyのオブジェクトについてのメモ

だいぶ曖昧なのは自分の理解が足りないため。 クラス/Class/classの表記方法について クラス/Class/classはすべて異なる(ものとして表記している)。 クラス オブジェクト指向における一般的な意味のクラス。 Class クラスを表現するのに使用される普通のオ…

RubyでRSSを取得(FeedNormalizer)

FeedNormalizerでRSSを取得するコード。一応Atomも取れる。 このコードではタイトル、日付、URLのみをハッシュで返すようにしてます。 require 'kconv' require 'feed-normalizer' # RSSを取得してタイトル、日付、URLをハッシュで返す def rss_parse rss fe…

TitaniumDesktopでRubygemsを使う

TitaniumDeveloperでプロジェクトを作るところは省きます。 アプリケーション名は「Sample」と仮定し、rubygemsのtwitterを使ってみます。 $ cd Sample/Resources $ bundle init Sample/Resources直下にGemfileがあると思うのでそれを編集。 「gem twitter」…

dm-pagerでAutoPagerize (DataMapper)

DataMapperには簡単にページャを作れるdm-pagerというのがあります。dm-pager | RubyGems.org | your community gem host これをAutoPagerizeに対応させるには以下のコードを(Modelファイルにでも)追加すればOKです。 (次のページへのリンクに rel="next"…

BloggerにRubyで投稿

ローカルで記事を書く→投稿(自動) っていうことがしたかったので、BloggerにRubyで投稿する方法。 準備 今回はRubygemsのbloggerを使いました。名前のまんまですね。 $ gem install blogger 投稿 実際に投稿するコード。 ブログIDはダッシュボードの「投稿…

さくらのVPSに sqlite3-ruby (+ DataMapper) をインストール (Debian 5 Lenny)

Ruby でデータベースをいじるときはもっぱら DataMapper + SQLite なのですが、 さくらのVPS(Debian)上に DataMapper をインストールするときに全力でこけたのでメモ。 最終的に解決はしたものの、意外と手間がかかった。 原因はどうやら apt-get でインス…

RVM(Ruby Version Manager)を導入

RVM: Ruby Version Manager - RVM Ruby Version Manager - Documentation RVM は Ruby Version Manager の略で,その名の通り異なるバージョンのRubyを共存させるためのソフトです。こんな感じでバージョンの切り替えができます。 $ rvm 1.9.2 # バージョン…

Rubyで文字列から日付を生成

RSSの日付をパースするときに引っ掛かった。 結論から言うと超初歩的なミスだったんだ。 二度とこんなことしないためにもメモ。 素直に下のコードを実行。 ParseDate.parsedate(item.date) 見事にエラー発生。 in `_parse': private method `gsub!' called f…