我在一个小型的sinatra应用程序中工作,我想让它获取一个json文件供以后使用。 使用浏览器,我可以正常访问json,也可以访问irb:
1.9.2p320 :001 > require 'open-uri'
=> true
1.9.2p320 :002 > metrics = open "http://foo-bar.com:8085/metrics/index.json"
=> #<File:/tmp/open-uri20130529-12715-1upc3bm>
1.9.2p320 :003 > metrics.read
=> "[\"carbon.agents.io-a.avgUpdateTime\", \"carbon.agents.io-a.cache.overflow\", \"carbon.agents.io-a.cache.queries\", \"carbon.agents.io-a.cache.queues\", \"carbon.agents.io-a.cache.size\", \"carbon.agents.io-a.committedPoints\", \"carbon.agents.io-a.cpuUsage\", \"carbon.agents.io-a.creates\", \"carbon.agents.io-a.errors\", \"carbon.agents.io-a.memUsage\" ...
它会返回所需的文件。
但是当我尝试从sinatra_app.rb做同样的事情时:
get '/json' do
@all_metrics = open @graphite_all_metrics
erb :json
end
或
get '/json' do
@all_metrics = Net::HTTP.get_response(URI @graphite_all_metrics)
erb :json
end
返回502错误的网关错误。 有什么帮助吗?
我如何得到@graphite_all_metrics:
@graphite_base = "http://foo-bar.com:8085/"
@graphite_all_metrics = [@graphite_base, "/metrics/index.json"].join
答案 0 :(得分:0)
您的join
@graphite_all_metrics = [@graphite_base, "/metrics/index.json"].join
正在为网址添加双斜杠。使用
@graphite_all_metrics = File.join(@graphite_base, "/metrics/index.json")
或者只是从示例中删除一个斜杠。
大多数浏览器/程序都会修复双斜杠错误,但服务器设置可能会出现问题。
答案 1 :(得分:0)
解决。这是一个配置错误的多域dns。没有红宝石。