正常に動作するweb.rbファイルがあります。すべてのrequireファイルを1つのrequires.rbファイルに移動し、すべての.rbファイルからこのファイルを呼び出し、呼び出し元のファイル名に基づいて条件を使用して、必要なものを要求したいと思いました。
'require pp'、'ruby-growl'でテストしたところ、問題なく動作しました。require sinatra
ただし、が別のファイルにある場合、sinatraはロードされません。
require sinatra
別のファイルに入れることはできますか?または、一般的に、別のファイルで要求することはできますか?
を使用して
- ルビー1.8.7(2010-08-16パッチレベル302)[i386-mingw32]
- シナトラ(1.3.2)
宝石1.3.7
dosウィンドウからスクリプトを実行する
ruby script_name.rb
私のrequires.rbの最初の行は以下のとおりです。web.rbを実行すると、「Webの読み込みに必要です」というテキストが表示されます。すべての.rbファイルに「rubygems」が必要であることに注意してください。`require' sinatra'とコメントすると、エラーメッセージ' web.rb:17:uninitialized constant Rack(NameError)'が表示されます。requireがコメント化されていない場合、rubyは画面にメッセージが表示されずに終了し、エラーメッセージも表示されません。
called_from=caller[0].split(":")[0]
puts "loading web 'requires' for file: #{called_from} ..." if (["web"].any?{|s| called_from[s]})
require "c:\\edutester\\others\\settings.rb"
require 'rubygems'
require 'sinatra' if (["web"].any?{|s| called_from[s]})
アップデート
テストケースを簡略化しました。2つのファイルがあります。test.rbのみを使用し、ファイルでrequireする場合。すべてが正常に動作します。test_require.rbファイルを使用すると、「読み込み中」のテキストが表示され、test.rbの完了に1秒ほどかかるため、何かが読み込まれている、または何かが処理中であると言えます。
test.rb
#require "c:\\edutester\\playground\\test_require.rb"
require 'rubygems'
require 'sinatra'
get '/' do
"yes"
end
およびtest_require.rb
puts "loading..."
require 'rubygems'
require 'sinatra'
シナトラはロードされません=私はいつものことをしません
== Sinatra/1.3.2 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
ブラウザからWebサーバーにアクセスできません。そして、メッセージはまったくありません。うーん、空の行が1つあります