2013-07-31 2 views
1

Tomcat에서 호스트 할 WAR 파일로 컴파일/패키지하려는 Ruby on Rails 응용 프로그램이 있습니다. 찾을 수있는 모든 관련 정보를 추가했지만 WAR에는 JRuby가 아닌 버전의 보석 만 포함 된 것으로 보입니다. 결과적으로 Tomcat에서 "activerecord-jdbc-adapter를 찾을 수 없음"과 같은 GemNotFound 예외가 발생합니다. WAR 파일을 7-zip으로 열면/WEB-INF/gems/gems 아래에 JRuby 또는 Java 보석이 표시되지 않습니다.Warbler는 Java/JRuby gem을 패키지하지 않습니까?

Warbler는 오류나 경고를보고하지 않으며, WAR에는 이러한 보석을 제외하고 필요한 모든 것이 포함되어있는 것으로 보입니다.

(이 경량, 내부 응용 프로그램이기 때문에, 나는 sqlite가 보석을 설명하는 ... 지금은 sqlite가 사용하고 있습니다. DB를 프로젝트 외부에 저장하고 database.yml을 파일로 구성되어 있습니다.)

내 Gemfile에서 관련 조각 : 나는 또한 명시 적으로 포함 시도

if defined?(JRUBY_VERSION) 
    gem 'jdbc-sqlite3' 
    gem 'activerecord-jdbc-adapter' 
    gem 'activerecord-jdbcsqlite3-adapter' 
    gem 'jruby-openssl' 
    gem 'jruby-rack' 
else 
    gem 'sqlite3' 
end 

/를 warble.rb 파일에서 이러한 보석 제외 : 재미있는 SID로

config.gems -= ["sqlite3"] 

config.gems += [ 
    "jdbc-sqlite3", 
    "activerecord-jdbc-adapter", 
    "activerecord-jdbcsqlite3-adapter", 
    "jruby-openssl", 
    "jruby-rack", 
    "warbler" 
] 

을 e, JRuby gem을 요구하기 위해 Gemfile을 수정하면 jruby -S bundle install은 정상적으로 작동하지만 warble은 보석이 JRuby에서만 사용된다는 오류를 표시합니다. 반면 JRuby (jruby -S warble) 내에서 실행하려고하면 다음과 같이 표시됩니다.

warble aborted!

로드 해당 파일 - jruby_pageant은

어떻게 내가 JRuby를 보석을 원하는 지저귀는 확신 할 수 있습니까?

편집 :

가 나는 또한 in this blog post를 설명한대로 gemfile에 플랫폼을 지정했지만,이 스택 오버플로를하는 진동음이 발생합니다.

platforms :jruby do 
    gem 'jdbc-sqlite3' 
    gem 'activerecord-jdbc-adapter', :require => false 
    gem 'activerecord-jdbcsqlite3-adapter', :require => false 
    gem 'jruby-openssl' 
    gem 'jruby-rack' 
end 
platforms :ruby do 
    gem 'sqlite3' 
end 

버전 :

  • 루비 1.9.3
  • JRuby를 1.7.4
  • 솔새 1.3.8

답변

0

그래서 그것이 내가 없어진 것을 밝혀 jruby-pageant 보석. 번들에 추가 한 후에는 jruby -S warble이 예상 된 출력을 생성했습니다.