我无法使autoprefixer工作。它被调用,但没有导致我的css代码。
这里有关于Sinatra app的说明 - 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
我查看了宝石源并找到了这样的例子:
@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)
答案 0 :(得分:1)
从外观上看,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 article on Sprockets