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

Pau*_*fer 1 ruby haml sinatra

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

config.ru

root = ::File.dirname(__FILE__)
require ::File.join( root, 'app' )
run MyApp.new
Run Code Online (Sandbox Code Playgroud)

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'
Run Code Online (Sandbox Code Playgroud)

script.haml

%script(type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js")
%script(type="text/javascript" src="/js/table.js")
%link(rel="stylesheet" type="text/css" href="/css/table.css")
Run Code Online (Sandbox Code Playgroud)

是的,我有正确的目录结构.就像我说的,它有效require sinatra.任何人都知道为什么会发生这种情况以及我能做些什么来解决它?

Ian*_*son 11

要求Sinatra::Base不设置任何的默认配置设置,要求Sinatra做.您set :public_folder ...自己需要达到合适的价值,例如:

set :public_folder, 'public'
Run Code Online (Sandbox Code Playgroud)

  • 它解决了我的问题,非常感谢你!顺便说一句,语法已改为`set:public_folder` (5认同)