使用Rack选择性加载

时间:2013-06-19 11:41:26

标签: ruby sinatra rack

我是一个完整的菜鸟架。我有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

请告诉我,我做同样的比喻是否错误。如果没有,有人可以帮我一个代码,可以帮助我实现相同的行为。我没有得到足够的教程。

另请告诉我机架是否是正确的工具。

1 个答案:

答案 0 :(得分: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的请求并告诉我们你的目标你认为最好的实现(考虑到你真的不知道什么是最好的,否则你就不会请问;)也许你会得到一个更好的答案