如何使用冻结的字符串文字启动 Rack 应用程序?
How to start Rack application with frozen string literals?
我正在尝试 运行 我们的应用程序在 ruby 2.3 下使用新的 ruby 功能在全局启用自动冻结字符串。 (Ruby 2.3) 这通常是通过在启动时将参数传递给 ruby 脚本来完成的,如下所示:
ruby --enable-frozen-string-literal ruby_code_file.rb
不幸的是,我们的应用程序是使用 rackup 启动的,我尝试了以下命令:
rackup --enable-frozen-string-literal
但这似乎不起作用。我如何将该参数传递给 Rack?
很遗憾,您无法将 ruby
的参数传递给 rackup
。但是,rackup
真的非常简单:
#!/usr/bin/env ruby
require "rack"
Rack::Server.start
然后,最简单的解决方案是在您的项目中复制此文件(例如 bin/frozen_rackup
),但将第一行更改为:
#!/usr/bin/env ruby --enable-frozen-string-literal
然后确保文件是可执行的 (chmod u+x bin/frozen_rackup
) 并且 运行 bin/frozen_rackup
而不是 rackup
.
P.S。我猜 --enable-frozen-string-literal
不适用于您的脚本所需的宝石,因为它会破坏很多宝石,但我还没有测试过这个和 YMMV。
我正在尝试 运行 我们的应用程序在 ruby 2.3 下使用新的 ruby 功能在全局启用自动冻结字符串。 (Ruby 2.3) 这通常是通过在启动时将参数传递给 ruby 脚本来完成的,如下所示:
ruby --enable-frozen-string-literal ruby_code_file.rb
不幸的是,我们的应用程序是使用 rackup 启动的,我尝试了以下命令:
rackup --enable-frozen-string-literal
但这似乎不起作用。我如何将该参数传递给 Rack?
很遗憾,您无法将 ruby
的参数传递给 rackup
。但是,rackup
真的非常简单:
#!/usr/bin/env ruby
require "rack"
Rack::Server.start
然后,最简单的解决方案是在您的项目中复制此文件(例如 bin/frozen_rackup
),但将第一行更改为:
#!/usr/bin/env ruby --enable-frozen-string-literal
然后确保文件是可执行的 (chmod u+x bin/frozen_rackup
) 并且 运行 bin/frozen_rackup
而不是 rackup
.
P.S。我猜 --enable-frozen-string-literal
不适用于您的脚本所需的宝石,因为它会破坏很多宝石,但我还没有测试过这个和 YMMV。