2

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-rJRubyの に相当するものは何ですか? 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

何か案が ?

4

1 に答える 1