Ruby 使用Sinatra中的AssetPack访问请求对象
我正在使用Sinatra应用程序处理公共资产。因为该应用程序在网站上作为可嵌入广告工作,所以我需要声明css资产为绝对。这是我当前的代码:Ruby 使用Sinatra中的AssetPack访问请求对象,ruby,sinatra,sinatra-assetpack,Ruby,Sinatra,Sinatra Assetpack,我正在使用Sinatra应用程序处理公共资产。因为该应用程序在网站上作为可嵌入广告工作,所以我需要声明css资产为绝对。这是我当前的代码: require 'rubygems' require 'sinatra' require 'rack' require 'sinatra/assetpack' class Ads < Sinatra::Application assets { css :mybanner, "http://#{request.host_with_port
require 'rubygems'
require 'sinatra'
require 'rack'
require 'sinatra/assetpack'
class Ads < Sinatra::Application
assets {
css :mybanner, "http://#{request.host_with_port}/css/styling.css", [
"http://#{request.host_with_port}/css/styling.css"
]
}
我不确定为什么请求不起作用。有什么想法吗?据我所知,AssetPack在服务器启动时构建资产。
显然,请求
对象当时不可用
以下是我的建议:
class Ads < Sinatra::Application
host_with_port = ENV['HOST_WITH_PORT']
assets {
css :mybanner, "http://#{host_with_port}/css/styling.css", [
"http://#{host_with_port}/css/styling.css"
]
}
end
类广告
您需要使用_PORT
环境变量设置一个
HOST_,但对每个站点只执行一次 据我所知,AssetPack在服务器启动时构建资产。显然,
请求
对象当时不可用
以下是我的建议:
class Ads < Sinatra::Application
host_with_port = ENV['HOST_WITH_PORT']
assets {
css :mybanner, "http://#{host_with_port}/css/styling.css", [
"http://#{host_with_port}/css/styling.css"
]
}
end
类广告
您需要使用_PORT环境变量设置一个HOST_,但对每个站点只执行一次 它不起作用,因为您在Sinatra应用程序范围之外调用它。如果您注意,您会看到它是从
Sinatra::AssetPack::Options
实例调用的。它不起作用,因为您是从Sinatra应用程序范围之外调用它的。如果注意,您会看到它是从Sinatra::AssetPack::Options
实例调用的。