Javaソフトでコンパスファイルを動的に「コンパイル」する必要があります。したがって、stackoverflow で見つかった説明に従って、次の手順を実行しました。
- JRuby (1.7.3) を入手し、jruby.jar とバイナリ (gem、rake ...) への PATH を構成し、Java から Ruby スクリプトを起動する方法を学びます。
次のコマンド ラインを使用して、コンパスと依存関係の gem をローカル ディレクトリに取得します。
gem install -i ./compass compass
=>だから、ディレクトリ
./compass/
を含むbin, cache,doc, gems & specifications
ディレクトリを取得します。次のコマンド ラインを使用して、gem を jar に入れます (JRuby が gem の代わりに jar を「必要とする」ことを避けるために、gem とは異なる jar 名を使用することを検討してください)。
jar cf compass-lib.jar -C compass .
ローカル ディレクトリにテスト スクリプト
test.rb
を記述して、jar をテストします。を含む :require 'compass' Compass.add_configuration( { :project_path => '.', :sass_path => 'styles/scss', :css_path => 'styles/css' }, 'custom' # A name for the configuration, can be anything you want ) Compass.compiler.compile('test.scss', 'test.css')
次のコマンド ラインを使用して、JRuby でこのスクリプトを実行します。
jruby -I . -rcompass-lib.jar test.rb
そして、このエラーを取得します...
Unable to load Sass. Please install it with one of the following commands: gem install sass --pre LoadError: no such file to load -- jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/s ass-3.2.8/lib/sass/../sass require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/sass-3.2.8/lib/sass/ver sion.rb:5 require at org/jruby/RubyKernel.java:1027 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 require at org/jruby/RubyKernel.java:1027 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/sass-3.2.8/lib/sass.rb: 9 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:60 (root) at jar:file:C:/jruby-1.7.3/lib/jruby.jar!/gems/compass-0.12.2/lib/comp ass/dependencies.rb:6 each at org/jruby/RubyArray.java:1613 (root) at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:1 require at org/jruby/RubyKernel.java:1027 require at c:/jruby-1.7.3/lib/ruby/shared/rubygems/custom_require.rb:36 (root) at test.rb:1
問題のアイデアと、おそらく解決策のアイデア? ;)事前に感謝します。
[更新 #1]
Jörg W Mittag の明らかな提案の後、エラーは消えました。ありがとう;) 今、scssファイルが見つからないだけなので、「通常の問題」です;)
[更新 #2]
コンパスを使用して IRB で成功を収めたので、次はテストを Java に置き換えます。そこで、Rubyスクリプトを実行するためにJavaでいくつかの行を書き、絶対パスのみを使用して初めて問題を回避しました。
InputStream myFile = ISRessources.getFile("C:/Path/To/My/test.rb");
new ScriptingContainer().runScriptlet(myFile, "test.rb");
しかし...私の「ロード」方法はcompass-lib.jar
?-r
JRubyの に相当するものは何ですか? java ビルド パスの外部 jar に compass-lib.jar を追加するために、jruby.jar に gem を含めようとしましたが、どちらも機能しません。
LoadError: no such file to load -- compass
require at org/jruby/RubyKernel.java:1027
(root) at test.rb:1
何か案が ?