使用Elastic Search gem运行jruby应用程序。

时间:2018-08-17 12:30:36

标签: ruby-on-rails tomcat elasticsearch jruby warbler

我正在尝试使用jruby生成Rails项目的编译应用程序并将其托管在Tomcat server上。 编译后,我正在努力与elasticsearch建立连接。

以下是我已采取的步骤:

  • 已安装Jruby-9.2.0.0
  • 创建了一个jruby on rails应用程序
  • 包含的宝石文件

    gem 'rails', '~> 5.2.1' gem 'listen' gem 'activerecord-jdbcmysql-adapter' gem 'therubyrhino' gem 'java' gem 'ruby-debug', '~> 0.10.6' gem 'elasticsearch' gem 'warbler'

  • warble.conf包含

    Warbler::Config.new do |config| config.features = %w(FEATURE) config.features = %w(gemjar) end

  • 控制器包含:

    def index $es_client = Elasticsearch::Client.new log: true products = $es_client.search index: 'production-products' render json: products end

  • 在项目文件夹中运行warble compiled war命令以创建.war文件

当我直接使用rails s运行应用程序时,它可以正常工作。

但是当我编译应用程序并在Tomcat服务器上运行时,出现以下错误

Internal Server Error (500)
Request Method:     GET
Request URL:    http://localhost:8080/blog/
java.lang.NullPointerException
You're seeing this error because you use    JRuby::Rack::ErrorApp::ShowStatus.

1 个答案:

答案 0 :(得分:3)

解决方案是在warble.conf文件中包含必需的gem。

Warbler::Config.new do |config|
  config.features = %w(FEATURE)
  config.features = %w(gemjar)
  config.gems["elasticsearch"]
end+