在app中获取机架映射目录

时间:2012-11-05 08:27:10

标签: ruby sinatra passenger rack

说我有一个config.ru,如:

map '/foo' do
  run MyApp
end

和Sinatra应用程序一样:

class MyApp < Sinatra::Base
  use Rack::Session::File, key: 'rack.session', domain: 'my.domain.com', path: '/foo', expire_after: 86400 * 14, secret: 'mysecret'
end

如何使MyApp与哪个请求目录(在这种情况下为/foo)进行访问无关?我发现request.script_name包含此目录,但我无法将其用于path:语句的use Rack::Session::File参数,因为从乘客启动应用程序时尚未定义它,但仅限于请求稍后会发送到应用程序。

1 个答案:

答案 0 :(得分:1)

不幸的是,即使是肮脏的黑客也是不可能的。

所以我认为可以通过两种不同的方式来做:

  1. 外部配置文件,例如routes.yml(config.ru使用它 map语句,用于在url中发现此类前缀的应用程序;
  2. 环境变量(我选择了这个,因为它很容易在Heroku上配置。