我正在尝试使用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.
答案 0 :(得分:3)
解决方案是在warble.conf
文件中包含必需的gem。
Warbler::Config.new do |config|
config.features = %w(FEATURE)
config.features = %w(gemjar)
config.gems["elasticsearch"]
end+