我正在开发一个模块化的Sinatra应用程序。我用独角兽。应用程序需要一些数据库等的初始设置,我在哪里做呢?
我的config.ru:
require './main.rb'
disable :run #disable internal webserver
run App.new我的配置文件:
web: unicorn -p 8080 -c ./unicorn.rb我的unicorn.rb:
worker_processes 4
timeout 30设置发生在main.rb中的某个地方。
发布于 2012-10-11 14:46:10
理想情况下,在您的应用程序之外,作为在unicorn启动之前运行的东西。
您可以将main.rb的设置部分放在unicorn.rb的顶部。
发布于 2014-06-11 15:07:13
ActiveRecord
如果您选择使用ActiveRecord作为ORM,则可以在您的Unicorn before_fork钩子中添加类似下面这样的内容。这将关闭与数据库的所有现有连接。
before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end并将其添加到after_fork钩子中。这将在每个独角兽分支之后建立新的连接。
after_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
endDataMapper
如果你使用DataMapper,你可以在你的before_fork钩子中添加类似这样的东西。这一次,您将使用Ruby来处理连接-- DataObjects是一个gem,它用更标准的接口重写了现有的DataObjects数据库驱动程序。DataMapper在内部使用DataObjects来管理与数据库连接。释放连接后,DataMapper将在需要时重新连接。
before_fork do |server, worker|
DataObjects::Pooling.pools.each do |pool|
pool.dispose
end
endhttps://stackoverflow.com/questions/12833636
复制相似问题