sinatra - 如何在不带 Rack 文件的情况下将Sprockets与Sinatra一起使用?

标签 sinatra rack sprockets

我正在编写一个库,该库具有通过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/

相关文章:

Ruby/Sinatra - 已经初始化常量 WFKV_

ruby - 使用流在 sinatra 中转发文件下载

ruby - `<module:Templates>':使用 Sinatra/Unicorn 的未初始化常量 Tilt::CompileSite (NameError)

ruby - Sinatra/Thin 运行且无法使用 Ctrl-C 停止

ruby-on-rails - 访问 rescue_from 中的参数

ruby - 在 Sinatra 中间件中访问 session

javascript - rails 4 : Is it necessary to explicitly enable Sprockets for Asset Pipeline?

ruby-on-rails - Rails Metal (& Rack) 是实现高流量 Web 服务 api 的好方法吗?

html - Sprockets::FileNotFound...找不到 css 文件

javascript - 在 Rails 4 中使用 Sprockets 和 Turbolinks 时如何异步加载 javascript