为什么 jruby 可以require 'susy'
在我的指南针 config.rb 中找到,但@import 'susy'
在 *.scss 文件中会产生问题:
[java] error Web Content/common/sass/base/foundation_de_DE.scss (Line 9: File to import not found or unreadable: susy.
[java] Load paths:
[java] <removed>/Web Content/common/sass
我现有的应用程序想开始在前端使用响应式设计。但是,在所有开发人员的机器、集成环境、性能环境和生产环境上安装 ruby / compass 会扼杀主动权。
根据这个问题和这个简化的教程,我使用我们当前的 Ant build.xml 来使用 jRuby 制作一些目标。
jar 中的 gems技巧,这样我就不需要到处安装 ruby:每个最新下载的 jruby-complete-1.6.8.jar jruby 自 2013.03.20 起有相对路径问题
java -jar jruby-complete-1.6.8.jar -S gem install -i ./susy susy
jar uf jruby-complete-1.6.8.jar -C susy .
java -jar jruby-complete-1.6.8.jar -S gem list
构建过程中使用的 ant 目标:
<target name="compass.compile">
<java classname="org.jruby.Main" fork="true" failonerror="true" classpathref="jruby.classpath">
<arg line="${basedir}/compile.rb ${basedir} compile ${basedir}"/>
</java>
</target>
当用户保存 scss 文件时,基于 Eclipse 的 IDE 用于“自动编译”的 ant 目标。 拥有 Eclipse 'auto-build' scss 文件的说明(从第 5 步开始)
<target name="compass.dev">
<path id="jruby.classpath">
<fileset dir="../../../release/lib/arch/jruby">
<include name="jruby-complete.jar"/>
</fileset>
</path>
<java classname="org.jruby.Main" fork="true" failonerror="true" classpathref="jruby.classpath">
<arg line="${basedir}/compile.rb ${basedir} compile ${basedir}"/>
</java>
</target>
最后,这是 ant 目标使用的 'compile.rb':
Dir.entries(ARGV[0]).each do |lib|
$LOAD_PATH.unshift "#{ARGV[0]}/#{lib}/lib"
end
require 'rubygems'
require 'compass'
require 'susy'
require 'compass/exec'
exit Compass::Exec::SubCommandUI.new([ARGV[1], ARGV[2], "-q"]).run!
以及指南针使用的 config.rb:
# Require any additional compass plugins here.
# Set this to the root of your project when deployed:
require 'susy'
http_path = "./Web Content/"
css_dir = "./Web Content/common/sass-output-css/"
sass_dir = "./Web Content/common/sass/"
add_import_path "./Web Content/sass"
images_dir = "./Web Content/common/images/"
javascripts_dir = "./Web Content/common/js/widgets"
# To enable relative paths to assets via compass helper functions. Uncomment:
#relative_assets = true
最后,尝试在 scss 文件中使用 susy:
@import 'reset';
@import 'utilities';
@import 'baseColorVariables';
@import 'font';
@import 'susy';
$total-columns: 12;
$column-width: 4em;
$gutter-width: 1em;
$grid-padding: 1em;
.magic-container { @include container; }