如何配置Sinatra以接受更多选项参数?

问题描述 投票:0回答:1

我正在使用 Sinatra 作为在本地主机上运行的桌面应用程序。当我启动它时,我想向它传递一个像这样的选项

ruby mysinatra.rb -first_name="My Name"
但是,我不断收到无效选项错误。我想我明白了,因为 Sinatra 本身接受端口等选项。例如,当我运行
ruby mysinatra.rb -h
时,我得到的输出(见下文)是 Sinatra 接受的所有选项。

注意:要传入的选项在每次应用程序运行时都会发生变化,因此它必须很方便。它不能被硬编码到文件中。

这是运行的输出

ruby mysinatra.rb

Usage: main [options]
    -p port                          set the port (default is 4567)
    -s server                        specify rack server/handler
    -q                               turn on quiet mode (default is off)
    -x                               turn on the mutex lock (default is off)
    -e env                           set the environment (default is development)
    -o addr                          set the host (default is (env == 'development' ? 'localhost' : '0.0.0.0'))
ruby sinatra
1个回答
0
投票

有两种方法:

  1. require
    Sinatra 库之前解析选项。确保从 ARGV 中删除您的任何个人选项字符串,以便常规 Sinatra 选项仍然有效(如果这是您的偏好)。

  2. Sinatra 使用 Ruby

    optparse
    库进行自己的选项处理。该库接受字符串
    --
    来指定选项结束。因此你可以这样做:

    ruby sinatra.rb -- --first_name="My Name"
    

    如果你现在看 ARGV,它会看起来像这样:

    ["--", "--first_name=My Name"]
    

    从这里您可以实现您喜欢的任何 ARGV 选项处理。

© www.soinside.com 2019 - 2024. All rights reserved.