为什么 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; }