2013-02-01 16 views
6

Chạy vào vấn đề này trong khi triển khai dự án Rails 3.2 lên Weblogic 10.3 và đang tìm kiếm câu trả lời dễ dàng.ActiveRecord không bị thiếu Base cơ bản! lỗi triển khai đường ray 3.2.9 jruby 1.7.2 đến 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) 

Môi trường trông như thế này: JRuby 1.7.2, JRockit 1.6, Rails 3.2.9, Chim chích

tôi triển khai các mô hình cơ bản 2 cộng đưa ra dự án sử dụng và lỗi này xảy ra khi tôi duyệt đến nó trong trình duyệt. Có ai thấy điều này trước đây không? Đây là lần đầu tiên tôi bắt đầu với JRuby.

Chỉnh sửa:

Thêm lần thử thất bại mới nhất của tôi. lưu ý, tôi đã thử jruby, jruby-jars cho 1.6.8, 1.7.0, 1.7.2 và đã không thành công. đây là tập tin của tôi Gem và cấu hình chim chích:

#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 

Và Chim chích Config (Sử dụng tiếng líu lo 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 

Trả lời

1

này có vẻ là một lỗi JRuby: http://jira.codehaus.org/browse/JRUBY-6705

+0

Bạn có thể đề xuất cách giải quyết khác không? Vấn đề này khẳng định trong 1.7.0 trở lại vào tháng Sáu. Tôi đã thử 1.7.2, 1.7.1, 1.7.0, 1.6.8 và nó dường như không cố định. Các lỗi liên quan có vẻ là chính xác và mô tả của tôi một cách chính xác, nhưng không có nhiều kinh nghiệm trong jRuby, tôi không thể làm chẩn đoán để thậm chí báo cáo một lỗi jRuby. –

+0

Bạn có thể cập nhật gói của mình không? Gemfile mặc định của Rails hút một chút, thay đổi 'gem' rails ',' ~> 3.2.x'' thành 'gem 'ray', '<3.3'' để bạn có được bản phát hành bugfix. Tương tự cho 'sass-rails' và' coffee-rails'. ActiveSupport 3.2.9 hơi lỗi thời, phiên bản hiện tại là 3.2.11. – ckruse

+0

Không đi vào cập nhật gói. Tôi đã thử 1.6.8 -> 1.7.2 và tất cả mọi thứ ở giữa. Có bất kỳ thông tin cụ thể hoặc hướng dẫn về thu hẹp trong các lỗi cụ thể như toàn bộ thông báo lỗi này là rất mơ hồ. –

0

Tôi đã có một cuộc trò chuyện gần đây với một đồng nghiệp cũng gặp phải vấn đề tương tự trong khi triển khai Jenkins cho Weblogic. Có một bản ghi chi tiết về những gì bạn PHẢI làm nếu bạn quyết định triển khai JRuby đến Weblogic. Trong trường hợp của tôi, tôi chuyển sang JBoss và đề nghị bạn làm như vậy. Nếu bạn phải triển khai lên weblogic, liên kết này mô tả các yêu cầu cần thiết để đảm bảo rằng Weblogic tải trước tất cả các thư viện cần thiết.

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

Nếu lựa chọn duy nhất của bạn là WebLogic, sau đó tôi muốn khuyên bạn nên in thử một bài kiểm tra cấu hình đơn giản trước khi triển khai dự án của bạn với một giả định rằng nó sẽ làm việc.

Đây là đoạn mã:

Weblogic 12+. Thêm tệp này vào một tệp trong dự án của bạn được gọi là: 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> 

Và trong các phiên bản trước có một số lỗi quan trọng hơn để có được weblogic để giải mã các lọ và phụ thuộc của bạn. Cụ thể cho câu hỏi này, vì tôi đang chạy trên 10.3.X Thấp hơn .4, dưới đây là các bước.

máy chủ cũ WebLogic

Để khắc phục vấn đề lớp loader WebLogic, chúng ta cần phải xây dựng một tập tin EAR và đưa các chỉ thị WebLogic-application.xml vào nó. 1. Tạo một thư mục để câu chuyện về nội dung tai, với cấu trúc sau (sử dụng chiến tranh của bạn thay vì Jenkins): ROOT_Folder/

META-INF/ 
     application.xml 
     weblogic-application.xml 
    jenkins.war 
  1. thả jenkins.war vào ROOT_Folder

  2. tạo thư mục META-INF

  3. tạo các tệp XML sau trong thư mục META_INF đó (ứng dụng 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 cần điều này vì (không giống như JBoss, Tomcat, Jetty et. al) Weblogic sẽ không tải các JAR trong WAR trước khi các JAR được cài đặt trên Weblogic, và thường là lỗi kết quả là có một phiên bản cũ của Ant 1.7 trong phạm vi, thay vì Ant 1.8.x như Jenkins muốn. Cũng có xung đột với stax-api-1.0.1.jar cho gói javax.xml được liệt kê.

Đây là một application.xml đơn giản mà sẽ làm việc

<?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 tập tin của bạn, làm cho bạn EAR file mới Cài đặt, sau đó triển khai

Lưu ý: Nếu bạn phải kiểm tra điều này, sau đó xin vui lòng bình luận ở đây về việc liệu điều này hoạt động. Tôi sẽ không chấp nhận câu trả lời cho đến khi tôi xác nhận; kể từ khi tôi chuyển sang JBoss để triển khai sạch sẽ.