首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在unicorn启动之前设置我的数据库,并执行4次?(因为我有4个工人)

如何在unicorn启动之前设置我的数据库,并执行4次?(因为我有4个工人)
EN

Stack Overflow用户
提问于 2012-10-11 14:40:45
回答 2查看 204关注 0票数 2

我正在开发一个模块化的Sinatra应用程序。我用独角兽。应用程序需要一些数据库等的初始设置,我在哪里做呢?

我的config.ru:

代码语言:javascript
复制
require './main.rb'

disable :run #disable internal webserver

run App.new

我的配置文件:

代码语言:javascript
复制
web: unicorn -p 8080 -c ./unicorn.rb

我的unicorn.rb:

代码语言:javascript
复制
worker_processes 4
timeout 30

设置发生在main.rb中的某个地方。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 14:46:10

理想情况下,在您的应用程序之外,作为在unicorn启动之前运行的东西。

您可以将main.rb的设置部分放在unicorn.rb的顶部。

票数 1
EN

Stack Overflow用户

发布于 2014-06-11 15:07:13

ActiveRecord

如果您选择使用ActiveRecord作为ORM,则可以在您的Unicorn before_fork钩子中添加类似下面这样的内容。这将关闭与数据库的所有现有连接。

代码语言:javascript
复制
before_fork do |server, worker|
  defined?(ActiveRecord::Base) and
   ActiveRecord::Base.connection.disconnect!
end

并将其添加到after_fork钩子中。这将在每个独角兽分支之后建立新的连接。

代码语言:javascript
复制
after_fork do |server, worker|
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end

DataMapper

如果你使用DataMapper,你可以在你的before_fork钩子中添加类似这样的东西。这一次,您将使用Ruby来处理连接-- DataObjects是一个gem,它用更标准的接口重写了现有的DataObjects数据库驱动程序。DataMapper在内部使用DataObjects来管理与数据库连接。释放连接后,DataMapper将在需要时重新连接。

代码语言:javascript
复制
before_fork do |server, worker|
  DataObjects::Pooling.pools.each do |pool|
    pool.dispose
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12833636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档