服务器在 Rails Ruby 中的本地主机上不可用,响应代码为 403 & RuntimeError

Server not available on localhost with response code 403 & RuntimeError in Ruby on Rails

在 open_uri.rb 和 server_manage.rb 中更改代理设置后,我终于设法在代理服务器后面安装了 neo4j。 Neo4j 服务器在端口 7000 上 运行(它在浏览器中打开)但是当我输入时:

$rails generate scaffold post title body

错误:

/.rvm/gems/ruby-2.2.3/gems/neo4j-core-5.1.6/lib/neo4j-server/cypher_session.rb:51:in `open': Server not available on  http://localhost:7000 (response code 403) (RuntimeError)

我该怎么办? 感谢您的帮助!!

 $ ruby --version
 ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

 $ rails --version
 Rails 4.2.2

403 可能意味着您的 Neo4j 身份验证凭据有误。有关详细信息,请参阅 http://neo4jrb.readthedocs.org/en/5.1.x/Setup.html#rails-configuration,但基本上,将类似这样的内容添加到 application.rb 可能会成功:

config.neo4j.session_options = { basic_auth: { username: 'foo', password: 'bar'} }

此外,由于您提到需要有关代理的帮助,您可以添加一个 initialize 键来设置它。

init = { proxy: { uri: 'http://myproxy', user: 'username', password: 'password' }}
auth = { username: 'neo4j', password: 'pwhere'}
config.neo4j.session_options = { basic_auth: auth, initialize: init }

我的猜测 - 代理问题。您的浏览器和代码中的行为可能有所不同(因为它们是 2 个不同的环境)。

要检查您的数据库到底发生了什么,您应该尝试从命令行手动向 Neo4j 发出请求。

使用 curl 的示例:

# if auth enabled
curl -i --user username:password http://localhost:7000/db/data/
# if auth disabled
curl -i http://localhost:7000/db/data/

这将为您提供更多关于究竟是什么不起作用的详细信息。

您还可以 assemble 基本的 ruby 脚本,它将发出 HTTP 请求,以检查您在这种情况下收到的响应。