melhor / mais elegante maneira de compartilhar objetos entre uma pilha de aplicativos / middlewares montados em rac
Qual é o melhor idioma para compartilhar um objeto entre aplicativos / middlewares montados em rac
or exemplo, este config.ru possui dois aplicativos Sinatra mapeados para diferentes pontos de extremidade:
class App1 < Sinatra::Base
# ...
end
class App2 < Sinatra::Base
# ...
end
map '/app1' do
run App1
end
map '/app2' do
run App2
end
gora, se esses dois aplicativos precisarem compartilhar um objeto, seja um conector de banco de dados ou qualquer outro objeto, qual seria o melhor idioma para iss
Eu vejo basicamente duas opções:
1- Crie uma constante no nível config.ru e simplesmente consulte essa constante nos aplicativos. Por exemplo
SHARED_OBJECT = "hello world"
class App1 < Sinatra::Base
get '/' do
SHARED_OBJECT
end
end
class App2 < Sinatra::Base
get '/' do
SHARED_OBJECT
end
end
map '/app1' do
run App1
end
map '/app2' do
run App2
end
2- Crie um objeto singleton no nível config.ru e use-o nos aplicativos. Por exemplo
class SharedObject
include Singleton
def test
@test ||= "hello world"
end
end
class App1 < Sinatra::Base
get '/' do
SharedObject.instance.test
end
end
class App2 < Sinatra::Base
get '/' do
SharedObject.instance.test
end
end
map '/app1' do
run App1
end
map '/app2' do
run App2
end
Comentários / sugestões?
Colin