2011-07-17 5 views
1

私はプロジェクトのためシナトラに切り替えてきた、と私のプロジェクトだけである:Sinatraアプリケーションを読み込んで実行するプロセスは何ですか?

/lib 
/test 
config.ru 
Gemfile 

私が持っている私のconfig.ruファイルで:

require 'rubygems' 
require 'bundler' 

Bundler.setup unless File.exists?(File.expand_path('../.bundle/environment', __FILE__)) 
Bundler.require(:default) 

Dir.glob File.dirname(__FILE__) + '/lib/*.rb', &method(:require) 

run HandHistoryParser 

それをロードするようだ、とrackupを実行していますエラーなしでサーバーを開始します。私は、ライブラリを必要とすることはできないんだけど、いくつかの理由で

in `<main>': uninitialized constant Object::HandHistoryParser (NameError) 

:しかし、私は、出力をテストするための簡単なテストスクリプトを持っている、とスクリプトは

@file_reader = HandHistoryParser::FileReader.new("bulk_hands") 

ようHandHistoryParserを作成するとき、私はこのエラーを取得しますファイルは、両方ともirbで動作しますが、次のものが必要です。

require './lib/hand_history_parser' 
require '../../lib/hand_history_parser 

私は何が欠けていますか?

答えて

0

これはスコープの問題である可能性があるというエラーメッセージが表示されます。 inと同様に、モジュールとクラスの定数は定義されていますが、main/globalスコープ以外に設定されています。あなたは私たちが私見ラック/テスト右

を使用している テストスクリプトで何を意味しています...

Dir[__FILE__ + '/../lib/*.rb'] { |file| require file } 
+1

Dir文とブロックの間に.eachが必要ですか? – bluescrubbie

+0

うん、それは確かに失われています。 –

0

待ち:

Dir.glob File.dirname(__FILE__) + '/lib/*.rb', &method(:require) 

へ:

この変更してみてください あなたの主なアプリケーションクラスがconfig.ruから独立して起動できる場合は、sinatraアプリはもっと​​テストに優しいでしょう

テストファイルに 'rack/test'と 'app.rb'だけを指定できるようにする

関連する問題