ActiveRecord does not skip the Base constant! rail deployment error 3.2.9 jruby 1.7.2 for weblogic 10.3

Running this issue while deploying a Rails 3.2 project to Weblogic 10.3 and finding an easy answer.

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) 

The environment is as follows: JRuby 1.7.2, JRockit 1.6, Rails 3.2.9, Warbler

I am deploying a base project of 2 models plus a developer, and this error occurs when I view it in a browser. Has anyone seen this before? This is my first assignment with JRuby.

Editing:

Adding my last failed attempt. Notice I tried jruby, jruby-jars for 1.6.8, 1.7.0, 1.7.2 and did not succeed. here is my gem file and warbler configuration:

 #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 

And Warbler Config (using 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 
+6
source share
2 answers

This seems to be a jRuby bug: http://jira.codehaus.org/browse/JRUBY-6705

+1
source

I recently had a conversation with a colleague who also ran into a similar problem by deploying Jenkins to Weblogic. There is a detailed record of what you SHOULD do if you decide to deploy JRuby to Weblogic. In my case, I moved to JBoss and suggested that you do the same. If you need to deploy weblogic, this link describes the necessary requirements to ensure that Weblogic preloads all the necessary libraries.

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

If your only option is weblogic, I would highly recommend checking out a simple configuration test before developing your project with the assumption that it will work.

Here is a snippet:

Weblogic 12+. Adding this file to your project called: 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> 

And in previous versions there is another important hack to get weblogic in order to correctly decrypt your banks and dependencies. In particular, for this question, since I work on 10.3.X below .4, here are the steps.

Old Weblogic Servers

To fix the problems of the loader of the Weblogic class, we need to create an EAR file and put the weblogic-application.xml directives in it. 1. Create a directory for the story of the contents of the ear with the following structure (use your war instead of Jenkins): Root_folder /

  META-INF/ application.xml weblogic-application.xml jenkins.war 

Weblogic needs this because (unlike JBoss, Tomcat, Jetty, etc.) Weblogic will not load the JAR in the WAR before WebLogic installs the JAR, and usually the resulting error is that there is an old version of Ant 1.7 in areas, instead of Ant 1.8.x, as Jenkins wants. There is also a conflict with stax-api-1.0.1.jar for the specified javax.xml package.

Here is a simple application.xml that will work

 <?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> 

Update your files by creating a new EAR file Install, then expand

Note. If you should check this out, please comment here if this works. I will not accept the answer until I check; since I moved to JBoss for a clean deployment.

0
source

All Articles