使用rackup时未找到Sinatra静态资产

pic*_*rdo 10 ruby configuration sinatra

我有一个简单的Sinatra应用程序,使用模块化样式进行配置.当我rackup -p 4567按照自述文件中的建议使用应用程序启动应用程序时,不会提供公用文件夹中的静态资源.但是当我开始使用时,shotgun ./config.ru -p 4567他们就会得到服务.为什么会这样?这可能发生在生产中吗?

这是我的代码:

# config.ru
require 'rubygems'
require 'bundler'
require 'sinatra'
require 'jammit'

Bundler.require
Jammit.package!


require File.expand_path('./stick.rb')
run Stick
Run Code Online (Sandbox Code Playgroud)

这是应用程序ruby文件

require 'sinatra/base'

class Stick < Sinatra::Base
  get '/' do
    haml :index
  end
end
Run Code Online (Sandbox Code Playgroud)

tex*_*xel 16

看起来这个有两个很好的答案(现有的都没有为我工作).

首先,在config.ru文件中,您可以包含以下内容:

# Replace the directory names to taste
use Rack::Static, :urls => ['/stylesheets', '/javascripts'], :root => 'public'
Run Code Online (Sandbox Code Playgroud)

或者,如果您通过rackup运行应用程序,则该:static选项false默认设置为.您可以通过以下咒语解决此问题:

class MyApp < Sinatra::Base
  set :static, true
  # ...
end
Run Code Online (Sandbox Code Playgroud)

  • 来自[Sinatra docs](http://www.sinatrarb.com/configuration.html#__enabledisable_static_file_routes):`静态设置在公共目录存在时默认启用.第二种方法没有帮助我运行Thin . (4认同)