以下代码在IRB(Interactive Ruby Shell)中正常工作: 要求'普罗米修斯/客户'
import {MainScreenNavigator, NavTest} from './path/to/App.js';
2.4.0:018>加载' test.rb' 输出:123.0 =>真正 2.4.0:019>
但是,当我将相同的代码放入我的Ruby on Rails控制器时,第二次用户使用该应用程序时,会返回以下错误: 未定义的方法`set'为零:NilClass
当我做错时,有人可以告诉我吗?谢谢。
prometheus = Prometheus::Client.registry
begin
@requests = prometheus.gauge(:demo, 'Random number selected for this users turn.')
rescue Prometheus::Client::Registry::AlreadyRegisteredError => e
end
@requests.set({name: "test"}, 123)
test = @requests.get name: "test"
puts 'output: ' + test.to_s
答案 0 :(得分:1)
因为@requests
参数没有:demo
。
当ORM在db中找不到任何信息时,它返回nil
(NilClass
)
你正试图这样做:
@requests.set({name: "test"}, 123)
它被解释为:
nil.set({name: "test"}, 123)
@requests
name
属性更改为test
,似乎:demo
不是test
,或者可能是您应用的其他部分您&# 39;重新替换/删除数据库中的数据:@requests = prometheus.gauge(:demo, 'Random number selected for this users turn.')
返回nil
解决方案:
在代码级别添加此修复程序以避免此类不可预测的情况(检查nil
):
unless @requests.nil?
@requests.set({name: "test"}, 123)
test = @requests.get name: "test"
end