在将 Rails 3.2 项目部署到 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)
环境如下所示:JRuby 1.7.2、JRockit 1.6、Rails 3.2.9、Warbler
我部署了基本 2 模型加上设计用户项目,当我在浏览器中浏览它时会发生此错误。有没有人见过这个?这是我第一次使用 JRuby。
编辑:
添加我最近失败的尝试。请注意,我已经为 1.6.8、1.7.0、1.7.2 尝试过 jruby、jruby-jars 并且没有成功。这是我的 Gem File 和 Warbler 配置:
#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
和 Warbler Config(使用 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