ここでいくつかの構成ファイルで何か間違ったことがあるかどうかはわかりません。を実行するrackup -D
と、次のようになります。
File.expand_path(__FILE__)
実際に返品します/file.rb
。File.dirname
そして、どういうわけか追加すると が返されます/
。/
そのため、プロジェクトディレクトリではなくディレクトリを検索しようとするため、ファイル読み込みコードはすべて機能しませんでした。
-D
オプションを削除すると、これは発生しません。フルパスを返します/home/blablabla/stuff/file.rb
サンプルコード:
test.rb:
require 'rubygems' if RUBY_VERSION <= '1.8.7'
require 'sinatra'
get '/expdir' do
File.expand_path(File.dirname(__FILE__))
end
get '/exp' do
File.expand_path(__FILE__)
end
get '/file' do
__FILE__
end
get '/dirname' do
File.dirname(__FILE__)
end
get '/dir' do
Dir.entries(File.expand_path(File.dirname(__FILE__))).to_s
end
config.ru:
require 'test.rb'
run Sinatra::Application
で実行しrackup -p 4567
、正しい値が返されるのを確認しました。で実行しrackup -p 4567 -D
、間違った値を返すことを確認しました。