如何在Sinatra内获得Puma港口

时间:2014-11-21 02:39:36

标签: sinatra puma

我有一些bash脚本start_dummy

#!/usr/bin/env bash

#killall puma
ulimit -s 16384
ofile=logs/access_`date +%F_%H%M%S`.log
RACK_ENV=production puma -b tcp://0.0.0.0:22522 2>&1 | tee $ofile

start_test

#!/usr/bin/env bash

#killall puma
ulimit -s 16384
ofile=logs/access_`date +%F_%H%M%S`.log
RACK_ENV=production puma -b tcp://0.0.0.0:22577 2>&1 | tee $ofile

当应用程序在不同端口上运行时,我想连接不同的数据库:

require 'sinatra'
# *snip* sinatra configuration

require 'data_mapper'
DataMapper::Model.raise_on_save_failure = true
if # __WHAT__ # when puma listen on 22577
  DataMapper.setup(:default, 'postgres://original@127.0.0.1/original')
else       # when puma listen on 22522
  DataMapper.setup(:default, 'postgres://dummy@127.0.0.1/dummy')
end 

我应该在__WHAT__上插入什么内容?

1 个答案:

答案 0 :(得分:3)

if request.port == 22577
    DataMapper.setup(:default, 'postgres://original@127.0.0.1/original')
else
    DataMapper.setup(:default, 'postgres://dummy@127.0.0.1/dummy')
end

更好的方法是将连接字符串存储在每个服务器可能不同的环境变量中:

DataMapper.setup(:default, ENV['DATABASE_URL'])