2013-02-01 11 views
6

Rails 3.2プロジェクトをWeblogic 10.3にデプロイする際にこの問題にぶつかり、簡単な答えを探していました。ActiveRecordに定数Baseがありません。 3.2.9 jruby 1.7.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、ムシクイ

は、私は基本的な2モデルを展開プラスユーザープロジェクトを考案し、私はそれを参照する場合、このエラーが発生しますブラウザで誰もこれを見たことがありますか?これはJRubyの最初のスティントです。

編集:

最新の失敗した試みを追加しています。注:私はjruby、jruby-jarsを1.6.8,1.7.0,1.7.2で試してみましたが、成功しませんでした。ここに私の宝石ファイルやムシクイの構成は次のとおりです。

#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 

そして(さえずり戦争を使用して)ムシクイ設定:

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 

答えて

1

これは、JRubyのバグのようです:http://jira.codehaus.org/browse/JRUBY-6705

+0

回避策を提案できますか?この問題は、6月に1.7.0に修正されました。私は1.7.2,1.7.1,1.7.0,1.6.8を試しましたが、修正されていないようです。バグは正確で正確な記述になっていますが、jRubyの経験があまりないため、jRubyのバグを報告するために診断を行うことはできません。 –

+0

バンドルをアップデートできますか? RailsのデフォルトのGemfileは 'gem 'rails'、 '〜> 3.2.x''を' gem' rails '、' <3.3''に変更してバグ修正リリースを入手します。 'sass-rails'と' coffee-rails'と同じです。 ActiveSupport 3.2.9は多少古く、現在のバージョンは3.2.11です。 – ckruse

+0

バンドルの更新は行っていません。私は1.6.8 - > 1.7.2とその間のすべてを試しました。このエラーメッセージ全体が非常に曖昧であるため、特定のエラーについて絞り込むための具体的な情報やガイダンスはありますか? –

0

私が持っていましたWeblogicにJenkinsを配備している間に同様の問題に遭遇した同僚と最近会話しています。 JRubyをWeblogicにデプロイすることを決定した場合、あなたがしなければならないことの詳細な書き方があります。私の場合、私はJBossに移動し、同じことをお勧めします。 weblogicにデプロイする必要がある場合、このリンクでは、Weblogicが必要なすべてのライブラリを事前にロードするために必要な要件について説明しています。

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

あなたの唯一のオプションは、WebLogicであれば、私は非常にそれが動作することを想定して、プロジェクトを開発する前に、簡単な構成のテストを校正お勧めします。

スニペット:

Weblogic 12+呼ばれるプロジェクト内のファイルにこれを追加する: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> 

と以前のバージョンで正しくお使いのjarファイルとの依存関係を解読するようにWebLogicを得るためにいくつかのより重要なhackageがあります。特にこの質問のために、私は10.3.Xより下の.4より下に走っているので、ここに手順があります。

古いWebLogicサーバー

は、WebLogicのクラスローダの問題を修正するには、我々は、EARファイルを作成し、その中には、weblogic-application.xmlのディレクティブを配置する必要があります。 1.(代わりに、ジェンキンスのあなたの戦争を使用)次の構造で、話に耳内容をディレクトリを作成します。 ROOT_Folder/

META-INF/ 
     application.xml 
     weblogic-application.xml 
    jenkins.war 
  1. はROOT_Folder

  2. にjenkins.warをドロップ

    META-INFディレクトリを作成します

  3. そのMETA_INFディレクトリ(weblogic-application)で次のXMLファイルを作成します。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ではこれが必要です(JBoss、Tomcat、Jettyとは異なります)。 WeblogicはWeblogicがJARをインストールする前にWAR内のJARをロードしません。通常は、Jenkinsが望むAnt 1.8.xではなく、古いバージョンのAnt 1.7が存在します。リストされているjavax.xmlパッケージのstax-api-1.0.1.jarとの競合もあります。そして、あなたはこれをテストしなければならない場合:ここ

注意を展開、その後、新しいEARファイル インストールすること、あなたのファイルRezip

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

に動作しますシンプルなapplication.xmlにありますこれがうまくいくかどうかは、ここでコメントしてください。私は妥当性が確認されるまで答えを受け入れません。クリーンなデプロイメントのためにJBossに移ってからです。

関連する問題