如何在 Sinatra 应用程序中使用 rails-autoprefixer?
how to use rails-autoprefixer in Sinatra app?
我无法使自动前缀工作。它被调用,但在我的 css 代码中没有结果。
这里有 Sinatra 应用的说明 - https://github.com/ai/autoprefixer-rails
application.rb
class Application < Sinatra::Base
# Load path and gems/bundler
$LOAD_PATH << File.expand_path(File.dirname(__FILE__))
require "bundler"
Bundler.require
register Sinatra::AssetPipeline
assets = Sprockets::Environment.new
AutoprefixerRails.install(assets)
### other
# Actual Rails Assets integration, everything else is Sprockets
if defined?(RailsAssets)
RailsAssets.load_paths.each do |path|
settings.sprockets.append_path(path)
end
end
end
我查看了 gem 来源并找到了这样的例子:
@assets = Sprockets::Environment.new
@assets.append_path(@dir.join('app/app/assets/stylesheets'))
AutoprefixerRails.install(@assets, browsers: ['chrome 25'])
或
@dir = Pathname(__FILE__).dirname
@css = @dir.join('app/app/assets/stylesheets/test.css').read
AutoprefixerRails.process(@css)
从表面上看,Sprockets 配置不正确。
Sprockets::Enviroment
获取一个块,使用该块到
资产需要配置。这是我使用的文件夹结构
这个例子:
├── app.rb
├── assets
│ ├── some_more_styles.css
│ └── styles.css
└── views
└── index.erb
以下是我配置 Sprockets 环境的方式:
# app.rb
require 'autoprefixer-rails'
assets = Sprockets::Environment.new do |env|
# This ensures sprockets can find the CSS files
env.append_path "assets"
end
AutoprefixerRails.install(assets)
还有一个步骤可以让 Sprockets 与 Sinatra 一起工作。每个
资产需要手动路由。例如,如果 index.erb
有
<link>
标签试图加载路径 /assets/styles.css
中的文件,
如果该路由未在中定义,则该路由将导致 404 Not Found 错误
app.rb
。为避免这些 404,请像这样定义路由:
# app.rb
get '/assets/*' do
# The env["PATH_INFO"] results in the string '/assets/styles.css' in
# our example. We need to remove the '/assets' part since Sprockets
# will take care of appending it when invoked on the next line.
env["PATH_INFO"].sub!("/assets", "")
assets.call(env)
end
我已将完整代码上传至
https://gist.github.com/kgrz/5caf63f827e5a6181597cefae484a515 为你
参考。这又基于 Sinatra Recipes 上的文章
链轮
我无法使自动前缀工作。它被调用,但在我的 css 代码中没有结果。
这里有 Sinatra 应用的说明 - https://github.com/ai/autoprefixer-rails
application.rb
class Application < Sinatra::Base
# Load path and gems/bundler
$LOAD_PATH << File.expand_path(File.dirname(__FILE__))
require "bundler"
Bundler.require
register Sinatra::AssetPipeline
assets = Sprockets::Environment.new
AutoprefixerRails.install(assets)
### other
# Actual Rails Assets integration, everything else is Sprockets
if defined?(RailsAssets)
RailsAssets.load_paths.each do |path|
settings.sprockets.append_path(path)
end
end
end
我查看了 gem 来源并找到了这样的例子:
@assets = Sprockets::Environment.new
@assets.append_path(@dir.join('app/app/assets/stylesheets'))
AutoprefixerRails.install(@assets, browsers: ['chrome 25'])
或
@dir = Pathname(__FILE__).dirname
@css = @dir.join('app/app/assets/stylesheets/test.css').read
AutoprefixerRails.process(@css)
从表面上看,Sprockets 配置不正确。
Sprockets::Enviroment
获取一个块,使用该块到
资产需要配置。这是我使用的文件夹结构
这个例子:
├── app.rb
├── assets
│ ├── some_more_styles.css
│ └── styles.css
└── views
└── index.erb
以下是我配置 Sprockets 环境的方式:
# app.rb
require 'autoprefixer-rails'
assets = Sprockets::Environment.new do |env|
# This ensures sprockets can find the CSS files
env.append_path "assets"
end
AutoprefixerRails.install(assets)
还有一个步骤可以让 Sprockets 与 Sinatra 一起工作。每个
资产需要手动路由。例如,如果 index.erb
有
<link>
标签试图加载路径 /assets/styles.css
中的文件,
如果该路由未在中定义,则该路由将导致 404 Not Found 错误
app.rb
。为避免这些 404,请像这样定义路由:
# app.rb
get '/assets/*' do
# The env["PATH_INFO"] results in the string '/assets/styles.css' in
# our example. We need to remove the '/assets' part since Sprockets
# will take care of appending it when invoked on the next line.
env["PATH_INFO"].sub!("/assets", "")
assets.call(env)
end
我已将完整代码上传至 https://gist.github.com/kgrz/5caf63f827e5a6181597cefae484a515 为你 参考。这又基于 Sinatra Recipes 上的文章 链轮