タグ

ブックマーク / keita-yamaguchi.hatenadiary.org (8)

  • ブロックの self を差し替えたい、という話 - ¬¬日常日記

    Selfish では Self を真似るため(当の目的は delegation を行なうため)にメソッドをオブジェクトとして持つ必要があります。Self のメソッドオブジェクトはコードにおける暗黙の self の差し替えが可能です。でもなぜそうした目的のためにわざわざ Selfish::MethodObject なんて作ったの?それは Ruby 標準の ::Method のインスタンスじゃダメなの?と思った方もおられることでしょう。 ダメです!というのも、Method オブジェクトはそもそも new して簡単に作れるものじゃないという点で苦しいわけです。でもそれだったら、Module#define_method 使えばいいんじゃないのかな? c = Class.new c.instance_eval do define_method(:sum){|x, y| x + y} end c.n

    ブロックの self を差し替えたい、という話 - ¬¬日常日記
    walf443
    walf443 2008/08/18
  • DelegateClass に起因するスペックテスト問題 - ¬¬日常日記

    私の大好きな Bacon さん(一応 RSpec クローンですけど、記法が色々違うので注意して下さい)で DelegateClass を使って定義したクラスのオブジェクトの振舞いを定めていて気付きました。RSpec についても同様の状況ですので、DelegateClass を使う場合には注意しましょう。次のような例をご覧下さい。 require "delegate" class A; end class B < DelegateClass(A) def initialize super(A.new) end end describe "class B" do it 'should be kind of B' do B.new.kind_of?(B).should.true B.new.should.kind_of B end end さて、このスペックテストの結果はどうなるでしょうか。B

    DelegateClass に起因するスペックテスト問題 - ¬¬日常日記
    walf443
    walf443 2008/08/03
    奇遇にもこのまえ丁度この問題になやまされたw
  • 新しいRubyGemレポジトリの GitHub RubyGems が登場しました - ¬¬日常日記

    GitHub RubyGems: http://gems.github.com/ 新しい RubyGem レポジトリとして GitHub RubyGems が登場しました。これまで RubyGem を広く配布する簡単な方法は RubyForge を利用することでしたが、今後は GitHub も有力な手段になりそうです。GitHub RubyGems の特徴は、各gitレポジトリから直接 gem を生成するので、GitHub の利用者ならば誰でも簡単に gem を公開出来ることです。もちろんフォークしたレポジトリからもgemが生成されます。各々のgem名は次のようになります。 <github_user_name>-<project_name> GitHub RubyGems から gem をインストールするには 最初に次のコマンドでレポジトリを登録します。 % sudo gem source

    新しいRubyGemレポジトリの GitHub RubyGems が登場しました - ¬¬日常日記
  • とっても優しい github の使い方 - ¬¬日常日記

    最近ホントにRubyの人々の間でgit流行ってますよね。私はdarcsっこなのですが、これだけ周囲で流行られるとさすがに危機感を感じます。しかも最近はgithubやらgitouriousやらのやたらと便利なサイトが出現し、ましてRubyForgeまでもがgitを採用とのことですから、これはもうなんとかしておきたいところです。というわけで、今更ながらgitを覚える口実として、とっても便利なgithubを使ってみることにしました。 http://github.com/ そこでせっかくですからgithubの使い方をメモしておこうと思います。これを読んで皆さんも一緒にgithubで遊びませんか? そもそもgithubとは何モノ? github はgitレポジトリを公開してくれるサイトです。出来ることは大体のところ次のような事です。 作者はレポジトリを作成して公開できます 他の人はレポジトリをフォー

    とっても優しい github の使い方 - ¬¬日常日記
  • Ditz はとても素晴らしいと思います! - ¬¬日常日記

    つい先日、Rubyで書かれたDitzという分散型のITS(Issue Tracking System)がリリースされたようです。 http://ditz.rubyforge.org/ 上のサイトをご覧になれば分かるかと思いますが、基的にコンソールベースです。最近はtracとかredmineとかwebベースのITSが流行っているので、この時点でやや意表をつかれた感がありますが、驚くべきはその管理方法。ditzがやっていることは単純に手元のbugs.yamlを編集し、後はbugs.yamlをdarcsとかgitとかの分散型のバージョン管理システムを使って皆で共有という丸投げ方式。こうなると、じゃあbugs.yamlの内容に衝突が起きたらどうするの?とすぐに思うわけですが、その場合は普通にbugs.yamlを手作業で編集してね、という清々しい割り切り方をとっています。 ditzの利点は以下のよ

    Ditz はとても素晴らしいと思います! - ¬¬日常日記
    walf443
    walf443 2008/04/05
    YAMLベースのITS
  • とっても便利な Kernel#acquire, __DIR__ - ¬¬日常日記

    Ramazeさんのとっても便利な Kernel#acquire を紹介してみたいと思います。acquire は簡単に言えば require のようなものですが、require とは違って次のようにして複数のライブラリを一気に呼び出すことが出来ます。 acquire 'lib/**/*' これで ./lib 以下にある拡張子 .rb, .so なライブラリがごそっと読み込まれます。ちょっと便利だと思いませんか?もちろんこういうのが気持ち悪いと思う人は普通に require すれば良いだけですから安心して下さい。Ramazeさんは、Rails における ActiveSupport や Waves における AutoCode のようなオートロードを行なわないので、そういう点で簡単お手軽にライブラリをロードしてくれる acquire の存在価値はあると思います。 また Kernel#__DIR__

    とっても便利な Kernel#acquire, __DIR__ - ¬¬日常日記
    walf443
    walf443 2008/03/25
    他のは欲しいとは思わないけど、頻度的にKernel#__DIR__はそれだけ提供してくれるgemがあってもいいなぁ(大してコード書かなくてもできるけど
  • RubyWaves における AutoCode について - ¬¬日常日記

    RubyWavesは結構面白いですよね。そんなわけで目玉機能のひとつであるAutoCodeがどのようなものか調べてみました。 まず最初に断っておくと、AutoCodeは普通にRubyのライブラリなので、RubyWaves以外にも使えます。なので、これは素晴しい!と思ったら誰でも使えるわけです。偉い! さて、AutoCodeは次のようなライブラリです。README(version 0.9.2 のもの)から引用します。 Autocode makes it relatively easy to automatically (re)load or even generate classes and modules on the fly. You can use it like this: require 'autocode' module Application extend Autoload a

    RubyWaves における AutoCode について - ¬¬日常日記
    walf443
    walf443 2008/03/17
    autocodeというgemの解説
  • rubyforgeがとても便利 - ¬¬日常日記

    ruby-tumblrで初めてrubyforgeを使ってみたわけですが、そのあまりの便利さに吃驚ですよ。今更ですか?ひょっとして、もう皆さん当然使っているわけなんですか?まぁ私は流行は遅れて乗るタイプだから、今更かも知れないrubyforgeの便利さと使い方をまとめておこうと思います。書いておかないと忘れちゃうしね。 なお、今回私がrubyforgeを使うにあたって参考にしたのは以下の記事です。 川o・-・)<2nd life:RubyGems パッケージの作り方 - rubyforge 登録まで eto.com/d:RubyGemsパッケージを作る これは非常によくまとまっていますので、読めば大抵のことはうまく行きます。よって私が書くべきことはほとんどありませんから、ポイントと諸注意だけをまとめておきます。 rubyforgeに登録したらまずやること rubyforgeへの登録方法は上記

    rubyforgeがとても便利 - ¬¬日常日記
    walf443
    walf443 2007/09/04
    公開鍵の登録は見逃してた
  • 1