我不确定我在某些配置文件中是否做错了什么。当我运行时rackup -D
,这样做:
File.expand_path(__FILE__)
实际上返回/file.rb
。并File.dirname
以某种方式添加返回/
。所以现在我所有的文件加载代码都不起作用,因为它试图在/
目录中查找,而不是在项目目录中查找。
-D
如果我删除该选项,则不会发生这种情况。它返回完整路径/home/blablabla/stuff/file.rb
示例代码:
测试.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
配置.ru:
require 'test.rb'
run Sinatra::Application
执行它rackup -p 4567
并观察它返回正确的值。执行它rackup -p 4567 -D
并观察它返回错误的值。