我正在编写一个库,该库具有通过Thor启动的嵌入式Sinatra应用程序。我想在Sprockets::Environment
和/css
上挂载/js
实例,并将主应用程序映射到/
。在Rack::URLMap
文件中使用config.ru
会很容易,但是在这种情况下没有一个,因为我使用Sinatra::Application.run!
以编程方式启动Sinatra应用程序。我怎样才能做到这一点?
最佳答案
实际上,这并不难。您所需要做的就是将Sprockets::Environment
实例分配给Sinatra配置变量,并定义一些路径来查找您感兴趣的 Assets 。
这是一个基本示例:
require "sass"
require "haml"
require "erubis"
require "sinatra"
require "sprockets"
set :assets, Sprockets::Environment.new
# Configure sprockets
settings.assets.append_path "app/javascripts"
settings.assets.append_path "app/stylesheets"
# For compressed JS and CSS output
require "yui/compressor"
settings.assets.js_compressor = YUI::JavaScriptCompressor.new
settings.assets.css_compressor = YUI::CssCompressor.new
get "/" do
haml :index
end
get "/javascripts/:file.js" do
content_type "application/javascript"
settings.assets["#{params[:file]}.js"]
end
get "/stylesheets/:file.css" do
content_type "text/css"
settings.assets["#{params[:file]}.css"]
end
扣人心弦!
关于sinatra - 如何在不带 Rack 文件的情况下将Sprockets与Sinatra一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10576422/