0

我是一个完整的菜鸟。我有 2 个 sinatra 类 engine_a.rb 和 engine_b.rb

想要使用 ru 文件传递​​ rackoptions,例如

$ rackup config.ru -O engine=a

我想使用类似于以下的机架进行选择性加载

require 'engine_a'
require 'engine_b'

if rackoption == a
  run eng_a.new
else if rackoption == b
  run eng_b.new
end

请告诉我,如果我做同样的类比是错误的。如果没有,有人可以帮助我编写可以帮助我实现相同行为的代码。我没有得到足够的关于这些的教程。

也让我知道机架是否是正确的工具。

4

1 回答 1

0

@padde 提出了一个很好的观点,您需要向我们提供更多信息。但是,有选择地运行事物的一种简单方法是使用环境变量。明显的经典用途是在生产中运行一些东西,在开发中运行一些东西等,例如

if ENV["RACK_ENV"] == "production"
  # do this
elsif ENV["RACK_ENV"] == "staging"
 # do something almost the same
else
 # do something quite different
end

Rack 通常会为您设置这些变量,但您可以使用不同的变量,如果您想从命令行运行它,您可以使用env MYVAR=1 bin/rackup config.ru.

考虑@padde 的请求并告诉我们您的目标而不是您认为最好的实现(考虑到您并不真正知道什么是最好的,否则您不会问;)也许您会得到更好的答案

于 2013-06-19T15:37:47.050 回答