Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby机架更换端口_Ruby On Rails_Ruby_Sinatra_Rack - Fatal编程技术网

Ruby on rails Ruby机架更换端口

Ruby on rails Ruby机架更换端口,ruby-on-rails,ruby,sinatra,rack,Ruby On Rails,Ruby,Sinatra,Rack,我有一个Ruby web API,使用Rack,config.ru文件如下所示: #\ -p 8080 -o 0 run App::API bundle exec rackup -p 8000 它工作得很好,但如果我想使用rackup参数更改web服务器的端口,它将无法工作。config.ru中的第一行参数似乎覆盖了命令行参数。我在机架文档中找不到解释这种行为的任何内容 问题是,如果我像这样执行Rack server: #\ -p 8080 -o 0 run App::API bund

我有一个Ruby web API,使用Rack,
config.ru
文件如下所示:

#\ -p 8080 -o 0

run App::API
bundle exec rackup -p 8000
它工作得很好,但如果我想使用
rackup
参数更改web服务器的端口,它将无法工作。
config.ru
中的第一行参数似乎覆盖了命令行参数。我在机架文档中找不到解释这种行为的任何内容

问题是,如果我像这样执行Rack server:

#\ -p 8080 -o 0

run App::API
bundle exec rackup -p 8000

我希望它绑定到端口
8000
,但它仍然绑定到端口
8080
。如何在不更改
config.ru
文件的情况下更改端口?

因此,我决定提交一个拉入请求,请求Rack来修复这种奇怪的行为。在阅读代码时,我意识到一些非常奇怪的事情,代码应该按照我的预期工作:|

它支持命令行参数而不是配置文件(
config.ru
)! 深入研究代码提交发现,这些更改尚未合并到任何稳定的版本中(
1.6.4
)。实际上是2.0.0.alpha版本。这显然还没有准备好生产

以下是提交:


所以答案是:在1.x版本中这是不可能的,我要么更改
config.ru
,要么忘记这一点:(

你说得对,第一行改变了它。如果你想在保留默认值的同时定制东西,为什么不使用另一个没有第一行的
.ru
文件,并使用该文件调用rackup?Hoang Phan,说得对,这很有意义。也许我应该明确地说,在我的问题中,我不想触摸或更改pro一点也不。它实际上是在Docker图像中打包的,所以我想在启动应用程序时在不改变原始图像的情况下覆盖设置。但看起来我没有太多选择:(顺便说一句,这里有一个反对票。你介意告诉我为什么你反对吗?