我有一个自定义插件的问题,不知道该去哪里。
我正在构建一个自定义的Logstash输出插件来构建我们的Neo4j模型。使用Logstash中包含的jruby从外部运行代码,我可以创建到服务器的会话。如果作为插件运行,我最终会出现一个未定义的方法错误。
undefined method graph_db' for #<Neo4j::Server::CypherSession:0x3922b0a5>
http://pastebin.com/kV5rHxpF
/opt/logstash/bin/logstash version
logstash 2.1.1
Neo4j社区版本2.3.1
Ruby Gem(使用具有类似行为的早期版本进行了测试)neo4j-6.0.4
我可以用下面的插件代码生成错误。
require "logstash/outputs/base"
require "logstash/namespace"
require 'neo4j'
class LogStash::Outputs::neo4jGraph < LogStash::Outputs::Base
config_name "neo4jgraph"
def register
@session = Neo4j::Session.open(:server_db,"http://localhost:7474", basic_auth: { username: "", password: "" })
end
def receive(event)
end
end
我能找到什么想法或方向吗?
谢谢!
因为您使用的是jRuby,所以neo4j-core
gem假设您希望使用嵌入式模式而不是服务器模式。我们应该找到更好的方法来解决这个问题,但目前如果您使用值为true
的WITHOUT_NEO4J_EMBEDDED
环境变量,它应该加载正确的文件并解决您的问题。
编辑:
仅供参考,我提出了一个提取请求,希望这能更容易:https://github.com/neo4jrb/neo4j-core/pull/244