2013-02-01 10 views
6

Uruchomiono ten problem podczas wdrażania projektu Rails 3.2 do Weblogic 10.3 i szukałem łatwej odpowiedzi.ActiveRecord nie brakuje stałej bazy! błąd wdrażania szyn 3.2.9 jruby 1.7.2 do weblogic 10.3

org.jruby.exceptions.RaiseException: (NameError) ActiveRecord is not missing constant Base! 
at RUBY.load_missing_constant(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:494) 
at RUBY.const_missing(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:192) 
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) 
at RUBY.const_missing(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:190) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/meta_search-1.1.3/lib/meta_search.rb:55) 
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1027) 
at ActiveSupport::Dependencies::Loadable.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251) 
at ActiveSupport::Dependencies::Loadable.load_dependency(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236) 
at ActiveSupport::Dependencies::Loadable.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activeadmin-0.5.0/lib/active_admin.rb:1) 
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1027) 
at ActiveSupport::Dependencies::Loadable.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251) 
at ActiveSupport::Dependencies::Loadable.load_dependency(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236) 
at ActiveSupport::Dependencies::Loadable.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activeadmin-0.5.0/lib/active_admin.rb:1) 
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1027) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activeadmin-0.5.0/lib/activeadmin.rb:1) 
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/activeadmin-0.5.0/lib/activeadmin.rb:1) 
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/bundler-1.2.3/lib/bundler/runtime.rb:1) 
at RUBY.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/bundler-1.2.3/lib/bundler/runtime.rb:68) 
at RUBY.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/bundler-1.2.3/lib/bundler/runtime.rb:66) 
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1027) 
at RUBY.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/bundler-1.2.3/lib/bundler/runtime.rb:55) 
at org.jruby.RubyKernel.require(org/jruby/RubyKernel.java:1027) 
at RUBY.require(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/gems/gems/bundler-1.2.3/lib/bundler.rb:128) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/config/application.rb:13) 
at RUBY.(root)(<app_deploy_dir>/<app_name>/mfey8c/war/WEB-INF/config/environment.rb:1) 

Środowisko wygląda następująco: JRuby 1.7.2, 1.6 JRockit, Rails 3.2.9, Warbler

wdrożyć podstawowy 2 Model Plus opracować projekt użytkownika i ten błąd występuje, kiedy przejść do niej w przeglądarce. Czy ktoś to widział wcześniej? To moja pierwsza przygoda z JRuby.

Edytowanie:

Dodanie mojej ostatniej nieudanej próby. Uwaga, próbowałem jruby, jornokręty dla 1.6.8, 1.7.0, 1.7.2 i nie odniosłem sukcesu. tutaj jest mój Gem plików i konfiguracja Lasówka:

#source 'https://rubygems.org' 
source "http://bundler-api.herokuapp.com" 

gem 'rails', '<3.3' 

# Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' 


gem 'savon' 

#gem 'jruby-openssl' 
gem 'json' 
#gem 'ffi', '~>1.0.9' 
#gem 'sqlite3' 
gem 'rake', "=10.0.2" 
gem 'activerecord-oracle_enhanced-adapter', "~> 1.4.0" 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '<3.3' 
    gem 'coffee-rails', '<3.3' 

    # See https://github.com/sstephenson/execjs#readme for more supported runtimes 
    #gem 'therubyrhino' 
    #gem 'therubyracer' 
    #gem 'libv8' 

    gem 'uglifier', '>= 1.0.3' 
end 

platforms :jruby do 
    group :assets do 
    gem 'therubyrhino' 
    end 

    group :development, :test do 
    gem 'ruby-debug' 
    gem 'activerecord-jdbcsqlite3-adapter', "~> 1.2.5" 
    gem 'warbler' 
    end 


    gem 'jruby-jars', "1.7.0" 
    gem 'jruby-openssl', :require => false 
end 

platforms :ruby do 
    group :assets do 
    gem 'therubyracer' 
    gem 'libv8' 
    end 

    group :development, :test do 
    gem 'debugger' 
    gem 'sqlite3' 
    end 

    gem 'ruby-oci8', '~> 2.1.0' # requires oracle client 
end 

gem 'jquery-rails' 
gem 'devise' 
gem 'activeadmin' 
gem 'rb-readline' 
gem 'validates_timeliness', '~> 3.0' 
gem 'wash_out'#, :path => "~/Desktop/code/wash_out" 

# To use ActiveModel has_secure_password 
# gem 'bcrypt-ruby', '~> 3.0.0' 

# To use Jbuilder templates for JSON 
# gem 'jbuilder' 

# Use unicorn as the app server 
# gem 'unicorn':path 

# Deploy with Capistrano 
# gem 'capistrano' 

# To use debugger 
# gem 'uby-debug' 

group :development do 

end 

group :test do 
    gem 'cucumber-rails', :require => false 
    #gem 'cucumber', :require => false 
    gem 'shoulda-matchers' 
    gem 'json_spec' 
    gem 'vcr' 
    gem 'fakeweb' 
    gem 'database_cleaner' 
    gem 'launchy' 
    gem 'webrat' 
    gem 'json_spec' 
    #gem 'capybara' 
    #gem 'mocha' 
end 

group :development, :test do 
    #gem 'activerecord-sqlite3-adapter', :platform => :ruby 
    #gem 'activerecord-jdbc-sqlite3-adapter', :platform => :jruby 
    gem 'rspec-rails' 
    gem 'factory_girl_rails', "~> 4.0" 
end 

I Lasówka Config (Korzystanie warble War):

class Warbler::Jar 
    def replace_compiled_ruby_files(config, compiled_ruby_files) 
    config.excludes += compiled_ruby_files 
    compiled_ruby_files.each do |ruby_source| 
     files[apply_pathmaps(config, ruby_source, :application)] = StringIO.new("load __FILE__.sub(/\.rb$/, '.class')") 
    end 
    end 
end 

Warbler::Config.new do |config| 
    config.dirs = %w(app config lib log vendor tmp) 
    config.webxml.jruby.compat.version = "1.9" 
end 

Odpowiedz

1

To wydaje się być jruby bug: http://jira.codehaus.org/browse/JRUBY-6705

+0

Czy możesz zaproponować obejście tego problemu? Ten problem został naprawiony w wersji 1.7.0 w czerwcu. Próbowałem 1.7.2, 1.7.1, 1.7.0, 1.6.8 i nie wydaje się być naprawiony. Błąd związany z błędem wydaje się być dokładny, a mój opis precyzyjnie, ale bez dużego doświadczenia w jRuby, nie mogę wykonać diagnostyki, aby zgłosić błąd jRuby. –

+0

Czy możesz zaktualizować swój pakiet? Domyślny Gemfile Railsów jest do niczego, zmień 'gem' rail ',' ~> 3.2.x'' na 'gem 'rails', '<3.3'', dzięki czemu uzyskasz poprawki błędów. To samo dotyczy szyn typu "sass-rails" i "coffee-rails". ActiveSupport 3.2.9 jest nieco przestarzały, obecna wersja to 3.2.11. – ckruse

+0

Nie kontynuuj aktualizacji pakietu. Próbowałem już 1.6.8 -> 1.7.2 i wszystko pomiędzy. Czy są jakieś konkretne informacje lub wskazówki dotyczące zawężenia konkretnego błędu, ponieważ ten cały komunikat o błędzie jest bardzo niejasny. –

0

Miałem rozmawiałem niedawno z kolegą, który również natknął się na podobny problem podczas wdrażania Jenkinsa do Weblogic. Istnieje szczegółowy opis tego, co powinieneś zrobić, jeśli zdecydujesz się wdrożyć JRuby do Weblogic. W moim przypadku przeniosłem się do JBoss i sugeruję, abyś zrobił to samo. Jeśli musisz wdrożyć w weblogic, ten link opisuje niezbędne wymagania, aby zapewnić, że Weblogic załaduje wszystkie niezbędne biblioteki.

https://wiki.jenkins-ci.org/display/JENKINS/Weblogic

Jeśli jedyną opcją jest WebLogic, to bardzo polecam wilgoć prosty test konfiguracji przed rozwija swój projekt przy założeniu, że będzie działać.

Oto fragment:

Weblogic 12+. Dodanie tego do pliku w projekcie o nazwie: weblogic.xml

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd"> 
    <wls:weblogic-version>12.1.1</wls:weblogic-version> 
    <wls:context-root>jenkins</wls:context-root> 
    <wls:container-descriptor> 
     <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> 
    </wls:container-descriptor> 
</wls:weblogic-web-app> 

A w poprzednich wersjach istnieje jakiś ważniejszy hackage dostać WebLogic prawidłowo odszyfrować swoje słoiki i zależności. W szczególności dla tego pytania, ponieważ mam wersję 10.3.X niższą niż .4, oto kroki.

serwery Starsze Weblogic

Aby rozwiązać problemy ładującego klasy WebLogic, musimy zbudować plik EAR i umieścić dyrektyw WebLogic-application.xml do niego. 1. Utwórz katalog do historii zawartość uszu, o następującej strukturze (używać wojnę zamiast Jenkins): ROOT_Folder/

META-INF/ 
     application.xml 
     weblogic-application.xml 
    jenkins.war 
  1. upuść jenkins.war do ROOT_Folder

  2. Utwórz katalog META-INF

  3. utworzyć następujące pliki XML w tym katalogu META_INF (aplikacja weblogic.XML)

    http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://www.bea.com/ns/weblogic/weblogic-applicationhttp://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd „>

    webapp.encoding.default UTF-8

    org.apache. javax.xml.stream.

Weblogic potrzebuje tego, ponieważ (w przeciwieństwie do JBoss, Tomcat, Jetty et. al) Weblogic nie załaduje plików JAR w WAR przed instalowanymi przez Weblogic plikami JAR, a najczęściej wynikającym z tego błędem jest to, że istnieje stara wersja Ant 1.7 w zasięgu, zamiast Ant 1.8.x, jak chce Jenkins. Istnieje również konflikt ze stax-api-1.0.1.jar dla wymienionego pakietu javax.xml.

Oto prosty application.xml że zadziała

<?xml version="1.0" encoding="UTF-8"?> 

<application xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" 
version="5"> 

<module id="jenkins"> 
<web> 
<web-uri>jenkins.war</web-uri> 
<context-root>/jenkins</context-root> 
</web> 
</module> 
</application> 

Rezip plików, dzięki czemu nowy plik EAR zainstalować, a następnie wdrożyć

Uwaga: Jeśli trzeba to sprawdzić, a następnie proszę tutaj skomentować, czy to działa. Nie przyjmę odpowiedzi, dopóki nie otrzymam potwierdzenia; odkąd przeniosłem się do JBossa na czystą instalację.

Powiązane problemy