【发布时间】:2013-03-11 02:04:15
【问题描述】:
为什么 jruby 可以在我的 compass config.rb 中找到 require 'susy',但在 *.scss 文件中的 @import 'susy' 会产生问题:
[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 会扼杀主动权。
根据这个question 和这个simplified tutorial,我使用我们当前的Ant build.xml 来使用jRuby 制作一些目标。
gems in a jar 技巧,这样我就不需要到处安装 ruby: 根据latest jruby has relative path issue as of 2013.03.20下载了jruby-complete-1.6.8.jar
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 目标。 Instructions to have Eclipse 'auto-build' scss files (start at step #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; }
【问题讨论】:
标签: eclipse ant jruby compass-sass susy-compass