我試圖嵌入的JRuby在WebLogic應用沒有運氣運行SASS /指南針;-( 這是搞什麼名堂完成至今:使用內嵌GEMS Weblogic上
安裝SASS /指南針GEMS:
java -jar jruby-complete-1.7.10.jar -S gem install -i . compass --no-rdoc --no-ri
創建一個包含所有的寶石罐子
jar uf jruby-complete-1.7.10.jar -C sass-compass .
檢查新JRuby的完整-1.7.10.jar包含了所有的寶石:
java -jar jruby-complete-1.7.10.jar -S gem list *** LOCAL GEMS *** bouncy-castle-java (1.5.0147) chunky_png (1.2.9) compass (0.12.2) fssm (0.2.10) jruby-openssl (0.9.3) json (1.8.0 java) krypt (0.0.1) krypt-core (0.0.1 universal-java) krypt-provider-jdk (0.0.1) rake (10.1.0) rdoc (4.0.1) sass (3.2.14)
到目前爲止,一切都很好,我確認我的新超級JRuby的完整,1.7.10.jar包含青菜和指南針寶石
進入weblogic的(Weblogic的11 - 甲骨文10.3.6)
- 我創建了一個Web應用程序與使用JRuby的編譯SASS /指南針CSS,並把它在EAR內,一個servlet
部署耳朵所以結構是這樣的:
MyEAR |-APP-INF | |-classes | |-lib | |-jruby-complete-1.7.10.jar <- my jruby jar that contains sass/compass gems |-META-INF |-MyWAR |-META-INF |-WEB-INF |-classes | |-MyServlet.class <- the servlet that compiles sass |-lib |-web.xml
當我調用servlet編譯一些青菜/指南針CSS,我得到以下錯誤:
LoadError: no such file to load -- sass/plugin
require at org/jruby/RubyKernel.java:1083
require at classpath:/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
(根) at:2
爲了編譯我的sass/compass風格,我必須運行下面的ruby腳本:
require 'rubygems'
require 'sass/plugin'
require 'sass/engine'
source = '...the scss code....'
engine = Sass::Engine.new(source,{ :syntax => :scss, :compass => {:css_dir => '/styles',:js_dir => '/scripts',images_dir => '/images'} })
result = engine.render
所以在我的servlet我使用JRuby的,如:
ScriptingContainer rubyEngine = new ScriptingContainer(LocalContextScope.CONCURRENT);
String rubyScript = ...
final StringWriter rawScript = new StringWriter();
rawScript.append(rubyScript);
rubyScript.flush();
String compiledCSS = rubyEngine.runScriptlet(theScript)
.toString();
**沒有運氣**我得到了LoadError:沒有這樣的文件來加載 - 青菜/插件
於是,我就設置在LOAD_PATH這樣的:
List<String> paths = new ArrayList<String>();
paths.add("classpath:/gems/sass-3.2.14/lib");
rubyEngine .setLoadPaths(paths);
**沒有運氣,無論是**
¿什麼想法?
在此先感謝
可能你也許嘗試運行SASS /指南針時,一個問題是什麼'$ LOAD_PATH'(以及'$ GEM_HOME '和/或'$ GEM_PATH')實際上會在你的ruby腳本中查看'require'rubygems'' ...也是.ear得到擴展與否(可能是在.ear歸檔中訪問路徑的問題)? – kares
謝謝@kares我有一個「有趣」的時間試圖讓sass /指南針在weblogic的嵌入式jruby下運行。 最後,我設法啓動並運行了...我在答案中解釋瞭解決方案,以便更好地記錄 – futuretelematics