Ruby 需要sinatra/base时查找公用文件夹的问题

Ruby 需要sinatra/base时查找公用文件夹的问题,ruby,sinatra,haml,Ruby,Sinatra,Haml,我发现在我的Sinatra应用程序中,当我需要'Sinatra'时,我可以按预期访问我的公用文件夹,但当我需要'Sinatra/base'时,我不能。这是我的相关代码(直到我更改为/base): config.ru root = ::File.dirname(__FILE__) require ::File.join( root, 'app' ) run MyApp.new app.rb require 'sinatra' require 'sinatra/namespace' require

我发现在我的Sinatra应用程序中,当我
需要'Sinatra'
时,我可以按预期访问我的公用文件夹,但当我
需要'Sinatra/base'时,我不能。这是我的相关代码(直到我更改为
/base
):

config.ru

root = ::File.dirname(__FILE__)
require ::File.join( root, 'app' )
run MyApp.new
app.rb

require 'sinatra'
require 'sinatra/namespace'
require 'haml'

class MyApp < Sinatra::Application
  # ...
end

require_relative 'models/init'
require_relative 'helpers/init'
require_relative 'routes/init'

是的,我有正确的目录结构。正如我所说,它使用
require sinatra
工作。有人知道为什么会发生这种情况,以及我能做些什么来修复它吗?

requirement
Sinatra::Base
不会设置requirement
Sinatra
所做的任何默认设置。您需要自己将:public\u folder…
设置为合适的值,例如:

set :public_folder, 'public'

requising
Sinatra::Base
不会设置requising
Sinatra
所设置的任何默认值。您需要自己将:public\u folder…设置为合适的值,例如:

set :public_folder, 'public'

谢谢事实就是这样,我没有意识到这两种要求Sinatra的方法之间的区别。注意,在
:public
之后需要一个逗号。哎呀,很抱歉逗号-fixedIt解决了我的问题,非常感谢!顺便说一句,语法已更改为
set:public\u folder
谢谢!事实就是这样,我没有意识到这两种要求Sinatra的方法之间的区别。注意,在
:public
之后需要一个逗号。哎呀,很抱歉逗号-fixedIt解决了我的问题,非常感谢!顺便说一句,语法已更改为
set:public\u folder