如何使用冻结的字符串文字启动 Rack 应用程序?

Oes*_*ste 4 ruby rack ruby-2.3

我正在尝试使用新的 ruby​​ 功能在 ruby​​ 2.3 下运行我们的应用程序,以便在全局范围内打开自动冻结字符串。 (Ruby 2.3) 这通常是通过在启动时将参数传递给 ruby​​ 脚本来完成的,如下所示:

ruby --enable-frozen-string-literal ruby_code_file.rb
Run Code Online (Sandbox Code Playgroud)

不幸的是,我们的应用程序是使用 rackup 启动的,我尝试了以下命令:

rackup --enable-frozen-string-literal
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。我如何将该参数传递给 Rack?

Jor*_*ing 6

不幸的rubyrackup,您不能为to传递参数。然而,rackup真的,真的很简单:

#!/usr/bin/env ruby

require "rack"
Rack::Server.start
Run Code Online (Sandbox Code Playgroud)

那么,最简​​单的解决方案是在您的项目中复制此文件(例如,bin/frozen_rackup),但将第一行更改为:

#!/usr/bin/env ruby --enable-frozen-string-literal
Run Code Online (Sandbox Code Playgroud)

然后确保文件是可执行的 ( chmod u+x bin/frozen_rackup) 并运行bin/frozen_rackup而不是rackup.

PS 我猜这--enable-frozen-string-literal不适用于您的脚本所需的宝石,因为它会破坏很多宝石,但我还没有测试过这个和 YMMV。