記事一覧はこちら

sassをコンパイル出来る単一jarファイルを作る方法

基本的には Sass, compass and JRuby in a single jar - SeanChenXi.com でいいんだけど、現時点(2015/12/09)で動かないのでメモ。 実行すると、こんな感じで何故かフルパスが入ってしまう。

>java -jar jcompass.jar -S compass create --help
io/console not supported; tty will not be manipulated
Errno::ENOENT: No such file or directory - C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!C:/gems/compass-core-1.0.3/VERSION
     read at org/jruby/RubyIO.java:3785
     read at org/jruby/RubyIO.java:3968
     Core at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-core-1.0.3/lib/compass/core/version.rb:10
  Compass at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-core-1.0.3/lib/compass/core/version.rb:4
   (root) at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-core-1.0.3/lib/compass/core/version.rb:3
  require at org/jruby/RubyKernel.java:1040
   (root) at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1
  require at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54
  require at org/jruby/RubyKernel.java:1040
   (root) at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-core-1.0.3/lib/compass/core.rb:1
   (root) at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1
     each at org/jruby/RubyArray.java:1613
  require at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54
  require at org/jruby/RubyKernel.java:1040
   (root) at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-1.0.3/lib/compass.rb:14
   (root) at C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/gems/compass-1.0.3/lib/compass.rb:4
   (root) at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1
  require at /C:/Users/hoge/AppData/Local/Temp/tmp_20151208Tue220735/jcompass/jcompass.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:54
     load at org/jruby/RubyKernel.java:1059
   (root) at uri:classloader:/bin/compass:23

C: でgrepしたけどよくわからんかったので古いバージョンを入れる。

http://www.jruby.org/download からjruby-complete-1.7.xx.jarを入れる。俺は1.7.13を入れた。 その状態で

java -jar scss.jar -S gem install -i gems sass -v 3.4.17 --no-document --no-format-executable
java -jar scss.jar -S gem install -i gems bourbon --no-document --no-format-executable
java -jar scss.jar -S gem install -i gems neat --no-document --no-format-executable
jar uf scss.jar -C gems .
java -jar scss.jar -S scss styles.scss

でよし。 のはず。最新版sassが3.4.19だからどっかでおかしくなったはず。jrubyでおかしいからプルリクエスト送ります!ってそれいいのかな。 File: SASS_CHANGELOG — Sass Documentation sassのchangelog。結構頻繁に更新してる。出来れば最新版を使いたい。 jruby-complete-1.7.13-sass一通りファイル。無断転載。

と思ったけどjarを実行するフルパスに日本語があると死ぬ。マジか~今時それか~