Спасибо за рассвет за это время! С тех пор я понял это, но забыл, что я написал здесь об этом.
У меня есть пользовательский Р.Б. файл, который я ссылаться, когда я бег дерзости через командную строку - как так:
sass --update sass:css -r file_mod.rb
в file_mod.rb, у меня есть следующая рубиновая функция, которая делает трюк:
require 'sass'
module GETMODINT
def file_url(staticFilePath,staticHost,filePath)
assert_type filePath, :String
filePath = filePath.value #get string value of literal
staticFilePath = staticFilePath.value
staticHost = staticHost.value
modtime = File.mtime(filePath).to_i
#Sass::Script::Number.new(modtime)
fileBaseName = File.basename filePath, '.*'
fileDir = File.dirname(filePath).sub(staticFilePath,'')
fileExt = File.extname(filePath)
path = "url('#{staticHost}#{fileDir}/#{fileBaseName}.#{modtime}#{fileExt}')"
return Sass::Script::String.new(path)
end
Sass::Script::Functions.declare :modInt, [:filePath]
end
module Sass::Script::Functions
include GETMODINT
end
Затем в Sass Mixin, я просто сослаться на функцию FILE_URL, передавая ей параметры, необходимые для построения результата:
@mixin backgroundImage($path, $position:0 0, $repeat:no-repeat) {
background: {
image:file_url($staticFilePath,$staticHost,$path);
position:$position;
repeat:$repeat;
}
}
В моем случае я использую его для создания пути изображения css. Должна быть легко изменена в соответствии с другими целями.
похоже, что это действительно возможно, определяя пользовательскую функцию sass: http://www.seancolombo.com/2010/07/28/how-to-make-and-use-a-custom-sass-function/но я вообще не знаком с Ruby. Я бы предпочел не указывать пользовательскую функцию через командную строку и вместо этого продолжать использовать команду SASS watch. – elleeott
Вы правы, избегая строк запроса - их можно игнорировать (http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/). Если вы используете рубин и предположительно рельсы, используете ли вы v3? Конвейер ресурсов Rails делает все для вас, если не тогда, то могут быть полезны звездочки. Когда вы помещаете ссылку на изображение, вы используете image-url(), а не url(), поэтому путь вычисляется – Dawn