• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/132

Railsじゃない場合のやり方はsecondlifeさんのこちらの記事に書かれていますが、Railsでlibディレクトリ以下のファイルをautotestする場合には、さらにもう一ひねりしないといけないので、その方法を紹介します。

先に結論だけ書いておくと、RAILS_ROOT/.autotestに以下のように記述すればOK.

Autotest.add_hook :run do |autotest|
  class RailsAutotest < Autotest
    alias __tests_for_file tests_for_file
    def tests_for_file(filename)
      case filename
      when /^lib\/.*\.rb$/ then
        impl = File.basename(filename).gsub '_', '_?'
        impl.sub!(/\.rb$/, '_test.rb')
        @files.keys.select do |k|
          k =~ %r%^test/lib/#{ impl }$%
        end
      when /^test\/.*_test\.rb$/ then
        [filename]
      else
        __tests_for_file(filename)
      end
    end
  end
end
使い方は、lib/foo_bar.rb のテストをtest/lib/foo_bar_test.rbに書けばOK。 あとは普通にRailsでautotestを使うときとおんなじです。

autotestは、config/environment.rbの有無によって自動的にRailsアプリケーション であるかどうかを判別します。その場合、通常のAutotestクラスではなく、Autotestクラスから派生したRailsAutotestクラスが使われるので、こちらのクラスのtests_for_fileに手を加える必要があります。

また、わけありでconfig/environment.rbを削除しているような場合は、autotestの起動時に

$ autotest -rails
と、-railsオプションを指定することで明示的にRailsモードで起動できます。
関連記事
RailsのテストでRed Green Yellow
ZenTestのautotestがとても快適
Railsでデバッグをする7つの方法

<追記>

lib以下のファイルをテストするためのRakeタスク:

require 'rake'
require 'rake/testtask'

namespace :test do
  desc 'Test libs.'
  Rake::TestTask.new(:libs) do |t|
    t.pattern = File.join(RAILS_ROOT, 'test/lib/**/*_test.rb')
    t.verbose = true
  end
end

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/132

posted by Png genki on Tue 21 Nov 2006 at 14:29

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/131

時々忘れるので備忘録として書いておきます。

100系: 情報伝達のためのステータスコード
100 Continue: リクエストを受け付けたが処理が完了していない状態。
101 Switching Protocols: プロトコルを変更したことを通知。
102 Processing:
200系: 成功を表すステータスコード
200 OK: リクエストが成功した。
201 Created: リクエストが実行されてリソースが作成された。
202 Accepted: リクエストは受け入れられたが、処理は完了されていない。 処理の完了は保障されない。
203 Non-Authoritative Information:
204 No Content: 処理は成功したが、返す結果(body)は無い。
205 Reset Content:
206 Partial Content:
300系: リダイレクトに関するステータスコード
300 Multiple Choices:
301 Moved Permanently: 恒久的なリソースの移動。
302 Found:
303 See Other:
304 Not Modified:
305 Use Proxy: Locationで指定したProxyを通してアクセスすることを指示。
306 (Unused): 使われていない。将来のために予約されている。
307 Temporary Redirect: 一時的なリソースの移動。
400系: クライアント側のエラーに関するステータスコード
400 Bad Request: リクエストを理解できなかった。
401 Unauthorized: リソースにアクセスする権限が無い。
402 Payment Required: まだ使われていない。将来のために予約されている。
403 Forbidden: リクエストを理解したが、実行を拒否した。
404 Not Found: リソースが存在しない。
405 Method Not Allowed: 指定されたメソッドは許可されていない。
406 Not Acceptable:
407 Proxy Authentication Required:
408 Request Timeout:
409 Conflict:
410 Gone: 指定されたりソースは削除された。
411 Length Required: レスポンスの長さ(content-length)を指定する必要がある。
412 Precondition Failed:
413 Request Entity Too Large: リクエストが大きすぎる。
414 Request-URI Too Long: URIが長すぎる。
415 Unsupported Media Type:
416 Requested Range Not Satisfiable:
417 Expectation Failed:
500系: サーバ側のエラーに関するステータスコード
500 Internal Server Error: 内部エラーが発生した。
501 Not Implemented: 要求された機能は実装されていない。
502 Bad Gateway:
503 Service Unavailable: サーバは一時的に稼動していない状態である。
504 Gateway Timeout:
505 HTTP Version Not Supported: リクエストのHTTPバージョンをサポートしていない。
虫食いの部分を埋めました。サマリの抜けはもうちょっと時間ができたら後で書くかも。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/131

posted by Png genki on Tue 21 Nov 2006 at 02:59
Contents
autotestでRAILS_ROOT/lib以下のファイルをテストする
HTTPのステータスコードの意味
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ