ruby

script/console の履歴機能が上手く動かなくなった...ので対応

環境 ruby 1.8.6-p399 rails 1.0.0 (;_;) Mac OS X 10.6.4 現象 irb は通常通り~/.irb_history に履歴をためていく rails のscript/console を起動すると、~/.irb_history の内容が上書きされ、先程までirb_history にあった最新の履歴が消えてしまう script…

Use FasterCSV or Ruby 1.9's CSV library

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック作者: Gregory Brown,高橋征義,笹井崇司出版社/メーカー: オライリージャパン発売日: 2010/03/26メディア: 大型本購入: 9人 クリック: 307回この商品を含むブログ (47件) を見る を読ん…

Web アプリを書いていてよく使うデザインパターン(Composite パターン)

DB に日々のブックマーク数を保存している 指定した期間のブックマークの日別の数を表示 ヘッダには指定した期間のブックマークの合計を表示 というような場合を想定。 このような場合は、DB から取ってきた結果をComposite パターンを使った箱に入れると便…

RubyKaigi2010 に行ってきた(2, 3日目)

RubyKaigi2010 に行ってきた(1日目) - Slow Danceに続き、今年のRubyKaigi に行ってきたレポートを書きたいと思います!例によって興味があった内容をまとめました。Chad Fowler の基調講演の内容は情熱プログラマー ソフトウェア開発者の幸せな生き方を読む…

RubyKaigi2010 に行ってきた(1日目)

今年もRubykaigi に行ってきました。とても勉強になることが多かったので興味があった内容をまとめます。 まずは1日目から。2,3日目も後に書きます!もし間違い等ありましたら指摘いただけると助かります。 Conflicts and Resolutions in Ruby and Rails Rai…

現場で役立つRuby on Railsパターン(RubyKaigi2009)を聴いたまとめ

今年はRubyKaigi に行ってきました。今回聴いたセッションの内、いくつかのメモを残します。全てを1エントリーにまとめるのは量的にも厳しいし、エントリの切り方としても微妙なので小分けにして書いていきます。 あくまでメモなので間違いがあるかもしれま…

Emacs でリアルタイムに文法チェックする設定

flymake でリアルタイム文法チェック - とりあえず暇だったし何となく始めたブログ を参考に設定。 設定後はこうなる 文法エラーが検知されると、エラー部分がハイライトされる 文法エラーは「ruby -c 編集中のファイル」でチェックされる エラー内容をミニ…

Hash を使ったよくある集計

メモ。あるオブジェクトの集合があって、各オブジェクトの属性を集計したいとかそういう場合。 基本的に、Hash を使って、key-value 型でやればいい。 # -*- coding: utf-8 -*- if RUBY_VERSION < "1.8.7" require 'enumerator' end Club = Class.new do att…

クラスがレシーバの場合のclass_eval とinstance_eval の違い

ここ以前から分からなかったので調べてみました。 基本 class_eval Module で定義されている なので、クラスやモジュールにしか使えない irb(main):009:0> String.respond_to?(:class_eval) true irb(main):011:0> Enumerable.respond_to?(:module_eval) tru…

Ruby 1.8.5 のSHA1 がやたら速いんだが

何故だ。MD5 の方が速いんじゃないの? ベンチマーク $ /usr/local/bin/ruby -v hash_bench.rb [~/tmp] ruby 1.8.5 (2006-08-25) [i686-darwin9.5.0] Rehearsal ---------------------------------------- MD5 4.070000 0.010000 4.080000 ( 4.102120) SHA1 1…

GoogleChartAPI Wrapper(QR コード)

Rails でQR コードを出力する必要がありました。要求は以下の3点。 普通のビュー内でも使いたい Helper でQR コードAPI用のURL を生成して、それをimage_tag に渡せばおk QR コードだけポップアップする機能も欲しい Controller でsend_data + ビューでlink_…

URL からページのタイトルを引いてくるスクリプト

ちょっと必要になって書いてみた。 リダイレクトを追うようにしている 例外の処理の仕方がまだまだ汚い fetch_title.rb require 'net/http' require 'net/https' require 'uri' require 'nkf' Net::HTTP.version_1_2 USER_AGENT = 'Mozilla/5.0 (Macintosh; …

イテレータを便利にするenum_for

ruby 1.8.7 からenumerator が組み込みで使えるようになった。enum_for がデフォルトで使える。 enum_for Enumerable に定義されているメソッドの多くはinclude 先のクラスのeach メソッドを使って実現されている。 例えばmap の実装は以下のようなイメージ…

Fork: Twitterのタイムラインを監視してキーワードにマッチしたらGrowlするRubyスクリプト

Twitterのタイムラインを監視してキーワードにマッチしたらGrowlするRubyスクリプト - 今日覚えたことが面白そうだったので、参考にして書いてみた。 機能 タイムラインを見てターミナルに表示 キーワードを設定して、キーワードにマッチしたつぶやきをGrowl…

ruby の再インストールからrails のインストール、テストまでを行うシェルスクリプト(作業メモ)

注:このシェルスクリプトは、僕の環境で動いたものです。汎用的には作られていません ruby 1.8.5 で開発されていたアプケーションがあって、今まで1.8.6 でいじっていたのですが、やはり環境はあわせようと思ってあわせました。その際のメモです。 手作業で…

autotest の導入方法

前々から使いたかったautotest を導入したので手順を記録します。OS はMac OS X(10.5.5), ruby は1.8.7です。 なお、参考にしたのは「まるごと Ruby! Vol.1(p.124~p.127)」です。 やること autotest のインストール aiutotest を使ってみる autotest のカ…

Linux の不要サービスを停止するruby スクリプト

ネタ元は不要サービス の停止 - chibilog++です。 サーバのセットアップをすると、OS のインストール後にやることとして、「不要なサービスの停止」があります。1つずつ、停止して、自動起動のリストから外すとかやるのは面倒なので、スクリプトでやってしま…

mixi api 使ってみたよ

今更ですか!?という感じもしますが、mixi for iPhoneから発掘されたmixi日記投稿用API « kuで紹介されていたAPI を使ってmixi に日記を投稿するruby スクリプトを書きました。 使い方 環境 ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-darwin9] gem 1.0.…

Mac のruby のirb で日本語入力をできるようにする

Leopard に最初から入っているruby のirb は日本語を入力できない 日本語を入力しようとRET を押すと、日本語が消える。Rails 使っている人には、script/console で日本語ができないので、結構辛い。 解決策1. ruby 1.8.7 を入れる 今回僕はこの方法でやりま…

& とブロック

初めてのRuby を読んでいて、& の挙動を正しく理解してなかったので整理。 & 演算子 & 演算子とは以下のようなやつ。 def hoge(&b) b.call end hoge{1 + 1} #=> 2 & をメソッド定義時に、引数の前に書くと、呼び出し側のブロックを表すProc オブジェクトが格…

『初めてのRuby』出版記念トークイベント に行ってきたまとめ

O'Reilly Village / オラの村: 『初めてのRuby』出版記念トークイベントのお知らせに行ってきました。 初めてのRuby の著者で、Ruby コミッタでリリースマネージャのYugui さんと、Java からRuby へ著者で、アジャイル開発で有名な角谷さんのトークショーで…

トランザクションブロックって便利

トランザクションブロックとは 「プログラミングRuby 第2版 言語編」に、トランザクションブロックというものがのっていました。 「プログラミングRuby 第2版 言語編」(p. 46) ブロックは、何からのトランザクション制御の下で実行する必要がある一連のコ…

Twitterに投稿するスクリプト

APIをさわったことがないので、練習にさわってみました。練習台はTwitter。 APIの仕様 [観] Twitter API 仕様書 (勝手に日本語訳シリーズ) 認証 認証 public_timeline の取得を除くすべての API で、BASIC認証を使用する。BASIC認証で使用するユーザ名はメー…

テスト駆動開発を教える際に、テストケースだけ渡すという方法をやってみた

本日会社のruby研修がありました。テーマは「テスト駆動開発」。その際に、id:yuum3がRubyKaigiで発表していた方法をやってみました。資料は以下のエントリーからDLできます。 Ruby 会議で発表しました。 - yuum3のお仕事日記 yuum3の発表では、テスト駆動開…

Googleモバイルのテストツールを使って広告を取ってくるrubyスクリプト

Hpricotの練習に作成しました。Googleはモバイル広告のテストツールをこちらで公開しています。これを使って、検索結果に表示される広告をとってきます。 scrape_google_adwords.rb #!/usr/local/env/ruby -Ku require 'uri' require 'rubygems' require 'hp…

irbでのアンダースコアが便利だ

RubyのStruct - 西尾泰和のはてなダイアリー irb(main):018:0> FooBar = Struct.new(:foo, :bar) => FooBar irb(main):019:0> FooBar.new(1, 2) => #<struct FooBar foo=1, bar=2> irb(main):020:0> _.foo => 1 なんだこのアンスコ? どうやら、直前に評価されたものを格納しておいている</struct>…

Hashによるオプション引数とActiveRecord::Base.extract_options_from_args!

以前、メソッドの引数としてHashを使うといいというエントリーを書きました。 Hash引数便利よね - Slow Dance その中で、特にオプション引数に対して有効ということを書きました。 今回は、オプション引数とActiveRecord::Base.extract_options_from_args!を…

Ruby 1.8.7 リリース

おぉー!Rails 2.1がリリースされて次はRuby 1.8.7ですか! いいっすねー熱いっすねー(*´艸`) Ruby 1.8.7リリース!! - ’(rubikitch wanna be (a . lisper))

Mochaが楽しそう

以前、テストの際にTimeオブジェクトの比較があると、1秒差で落ちるという問題に対して、エントリーを書きました。 テストで、Timeオブジェクト同士を比較するときのメモ - Slow Dance そしたら、同じようなことやっている人もいた。 Jay Fields' Thoughts:…

instance_evalとスコープ

メソッド名と同じローカル変数がある場合はローカル変数が優先される - ’(rubikitch wanna be (a . lisper)) binding - I like Ruby too. これはfooがすでにローカル変数として宣言されているからそっちが優先された話でしょう。 foo.instance_eval { foo } …