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

5uzkadbs  于 11个月前  发布在  Ruby
关注(0)|答案(1)|浏览(121)

我正在使用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'))

字符串

8cdiaqws

8cdiaqws1#

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

  1. Sinatra使用Ruby optparse库进行自己的选项处理。该库接受字符串--来指定选项的结束。因此,您可以这样做:
ruby sinatra.rb -- --first_name="My Name"

字符串
如果你现在看ARGV,它看起来像这样:

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


从这里你可以做任何你喜欢的ARGV选项处理。

相关问题