This is just a signpost.

Does anyone know other tools?

See Also

posted by Png takiuchi on Thu 6 Mar 2008 at 22:15

RaPT については以前 「RaPT: Railsプラグイン管理ツール」 で紹介しましたが、 手短にRaPTを使ってRailsプラグインを使う方法をまとめておきます。

インストール

   1  # gem install rapt

プラグインをインストール

RAILS_ROOTで以下を実行。

   1  $ rapt install http://repo.pragprog.com/svn/Public/plugins/annotate_models

プラグインをアップデート

まさにこの為にRaptを使う価値があるという代物。

   1  $ rapt update annotate_models

便利です。

posted by Png genki on Thu 6 Mar 2008 at 14:57 with 2 comments

プラグインを作るのに手間取ったのでメモ。
ARに機能を追加させるようなプラグインのテストを書く際、AR派生クラスをnewしてメソッドを呼び動作を確かめたりしたくなります(私の場合、privateメソッドを呼びたくなった)。でもテストのためだけにテーブルを作るのはばからしい。でMockを使う方法、ARのテスト用Mockの登場です。

ポイントとしては、MockBaseで一旦ARを派生させてから、MockBaseを派生させたクラスを作るのがミソです。そうすることで他のテストに影響を与えないようにすることができます(tips from takiuchi)。

あともう一つ、environment.rbをズズーっとロードすることでRails全体を読み込むことができます。それによってARを使えるようになります。

   1  #acts_as_notifiable_test.rb
   2  begin
   3    require File.dirname(__FILE__) + '/../../../../config/environment'
   4  rescue LoadError
   5    require 'rubygems'
   6    gem 'activerecord'
   7    require 'active_record'
   8  end
   9  
  10  class MockBase < ActiveRecord::Base; end
  11  MockBase.class_eval do
  12    alias_method :save, :valid?
  13    def self.columns() @columns ||= []; end
  14  
  15    def self.column(name, sql_type = nil, default = nil, null = true)
  16      columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type, null)
  17    end
  18  end
  19  
  20  class MockModel < MockBase
  21    acts_as_notifiable :callback => :after_create, :message => "hello", :recipients => "test@gmail.com"
  22  end
  23  
  24  class ActsAsNotifiableTest < Test::Unit::TestCase
  25    def test_option_message_string
  26      assert_equal "hello", MockModel.new.instance_eval{jabber_message}
  27    end

Reference

posted by Png satoko on Thu 6 Mar 2008 at 10:57

自分用メモ。

  • Object#instance_evalを使う
  • インスタンスに対してでないとだめ
    • NG: Object.instance_eval
    • OK: Object.new.instance_eval

Example

   1  class Post
   2    private 
   3    def title; "My blog"; end
   4  end

   1  p = Post.new
   2  p.instance_eval(title)
   3  # => "My blog"

Reference

http://doc.loveruby.net/refm/api/view/method/Object/i/instance_eval

posted by Png satoko on Thu 6 Mar 2008 at 10:24

はじめまして。 合同会社S21Gで経理を担当している瀧内真理です。 これまでは日陰の身だったのですが、このたびブログデビューをすることとなりました。 社員二人のようなプログラムの知識はまったくありませんので、技術者の皆さんには興味がないかもしれませんが、経理に興味のある方の参考になれば嬉しく思います。

去年から簿記をはじめて、S21Gの創立の手続きを行い、各種届出をしました。 何もかもが初めてのことで、戸惑うことばかりでしたが、何とかこれまで大きなトラブルもなく進めていくことができました。 もうすぐ決算期を迎え、さらに慌しくなりそうです。その辺りの現在進行形の話や、簿記の話などを中心に書いていきたいと思います。 簿記に関しては人に教えられるようなところにはいませんが、勉強したことと、実際の経理との違いなどをご紹介していければと思っています。

つたない文章になるかと思いますが、よろしくお願いいたします。

posted by Png mari on Thu 6 Mar 2008 at 07:51

Redmineを使っていて、Issueの追加/変更通知がGTalkで来たらうれしいかもと思って作りました:acts_as_notifiable。

NOTE:

Repository

http://svn.s21g.com/public/rails/plugins/acts_as_notifiable/

Redmineに組み込む

  1. XMPP4Rをインストール: http://xmpp4r.rubyforge.org/

       1  $sudo gem install xmpp4r
    

  2. プラグインをインストール

  3. 設定ファイルを作成: #{RAILS_ROOT}/config/acts_as_notifiable.yml
       1  #{RAILS_ROOT}/config/acts_as_notifiable.yml
       2  to:
       3    recipients: you@gmail.com me@gmail.com
       4  from:
       5    id: your_notify_account@gmail.com
       6    password: pass
       7    connect: talk.google.com
    
  4. モデルにacts_as_notifiableを追加
       1  class Issue
       2    acts_as_notifiable :message => Proc.new {|o| "[#{o.project.name}:#{o.class.name}##{o.id}]#{o.status.name}:#{o.subject}\n #{o.journals.last.notes unless o.journals.blank?}"}
    
  5. サーバ再起動

NOTE: 通知を受け取るIM側でyour_notify_account@gmail.comを追加するの忘れないように!

posted by Png satoko on Thu 6 Mar 2008 at 05:29

In my company, we're using a Redmine. And I thought it would be more useful if I could receive some activities(Like creating/updating Issue) via GTalk. Thus I created acts_as_notifiable.

NOTE:

Repository

http://svn.s21g.com/public/rails/plugins/acts_as_notifiable/

To work with Redmine

  1. Install XMPP4R: http://xmpp4r.rubyforge.org/

       1  $sudo gem install xmpp4r
    

  2. Install plugin

  3. Create file: #{RAILS_ROOT}/config/acts_as_notifiable.yml
       1  #{RAILS_ROOT}/config/acts_as_notifiable.yml
       2  to:
       3    recipients: you@gmail.com me@gmail.com
       4  from:
       5    id: your_notify_account@gmail.com
       6    password: pass
       7    connect: talk.google.com
    
  4. Add acts_as_notifiable to the Model class
       1  class Issue
       2    acts_as_notifiable :message => Proc.new {|o| "[#{o.project.name}:#{o.class.name}##{o.id}]#{o.status.name}:#{o.subject}\n #{o.journals.last.notes unless o.journals.blank?}"}
    
  5. restart server

NOTE: Don't forget to add your_notify_account@gmail.com to your IM client!

posted by Png hibi on Wed 5 Mar 2008 at 16:54

Rails-2.0から、FunctionalTest用のテストクラスの基底クラスは、 Test::Unit::TestCaseからActionController::TestCase に変わりました。 それに伴って、テストクラス内にsetupメソッドやteardown メソッドを書いても実行されなくなっています。

Rails 2.0.2のファンクショナルテスト機構が壊れている件・謝罪と訂正Comments

今日は久しぶりにRails 2.0.2を使い、久しぶりに付属のファンクショナルテスト機構を使っていたのですが、そこでひどいバグに遭遇しました。

FunctionalTestではsetupteardownを使う機会がなかったので 今まであまり気になってなかったですが、確かに使ってる人からすると 困る問題ですね。 バグだとして、パッチが採用されたら直るんだろうけど、 2ヶ月間放置されてる状況からすると、setupteardown を使わない方向が「Convention」になっていくという事なのかな。

See Also

posted by Png genki on Wed 5 Mar 2008 at 12:24

Ebbは以前にも紹介しましたが (ポストMongrel時代のWebサーバ参照)、 Thinより高速といわれている軽量・高速なWebサーバです。

Ebb aims to be a small and fast web server specifically for hosting web frameworks like Rails, Merb, and in the future Django.

こちらでも紹介されています。

Ebb: C-Powered Web Server That Uses Rack - Faster than Mongrel and Thin

非常に興味深いですね。 ということで、ちょっと使ってみました。 先日からgemインストールできるようになったので、 いつものように

   1  # gem install ebb

でインストールできます。 ただし、EbbはRuby拡張でglib2のヘッダファイルに依存しているため、 あらかじめそちらもインストールしておく必要があります。 以下はDebianの場合。

   1  # apt-get install libglib2.0-dev

インストールが完了したら、RAILS_ROOTで以下のようなMongrel ライクなコマンドを実行すると、Ebbが立ち上がります。

   1  % ebb_rails start 

また、ebb_railsコマンドのオプションは以下の通り

   1  Usage: ebb_rails [options] start|stop
   2  
   3  Server options:
   4    -p, --port PORT      use PORT (default: 3000)
   5    -e, --env ENV        Rails environment
   6                         (default: development)
   7    -c, --chdir PATH     Rails root dir
   8                         (default: current dir)
   9    -d, --daemonize      Daemonize
  10    -l, --log-file FILE  File to redirect output
  11    -P, --pid-file FILE  File to store PID
  12    -t, --timeout SEC    Request or command timeout in sec
  13                         (default: 60)
  14  
  15  Common options:
  16    -h, --help           Show this message
  17    -v, --version        Show version

とりあえず、単純なアプリケーションでテストした限りでは、 問題なく動いている模様です。 楽しみなプロジェクトですね。

See Also

posted by Png genki on Wed 5 Mar 2008 at 08:56

参加者の皆様、お疲れ様でした。 おかげ様で非常に面白い話が聞けました。 特に梅澤さん、質問ばかりですみませんでした。 梅澤さんのお陰で勉強会の体をなしていたといっても過言ではないと思います。 ありがとうございました。

確かに動き続けるプログラムを語る上でSmalltalkは避けて通れない、 大変参考にすべきものですね。 GemStone の話がとても興味深かったです。あと GLASS も。Smalltalk+マルチユーザ環境が僕が求めていたものなのかもしれません。 マルチユーザ環境を実現する過程で、他にあげた要素が必然的に 必要になってくる気がしますし。

惜しむらくは、マルチユーザっぽいSmalltalkの処理系で、 フリーで使える環境がないということですね。 しかしなんにしても、Smalltalk面白いなあ。

See Also

posted by Png genki on Wed 5 Mar 2008 at 00:46 with 4 comments