gpt4 book ai didi

ruby - 如何在 unicorn 启动之前设置我的数据库并执行 4 次? (因为我有4个 worker )

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:04 28 4
gpt4 key购买 nike

我正在开发一个模块化的 Sinatra 应用程序。我用 unicorn 。该应用程序需要对数据库等进行一些初始设置,我应该在哪里进行设置?

我的配置.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 的某处。

最佳答案

事件记录

如果您使用 ActiveRecord作为您选择的 ORM,您可以将这样的东西添加到您的 Unicorn before_fork钩。这将关闭与您的数据库的所有现有连接。

before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end

并将其添加到 after_fork钩。这将在每个 unicorn fork 后建立新的连接。

after_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end

数据映射器

如果你使用 DataMapper ,您可以将类似的内容添加到您的 before_fork钩。这次您将使用 DataObjects处理连接 - DataObjects是一个 gem,它用更标准的接口(interface)重写现有的 Ruby 数据库驱动程序。 DataObjectsDataMapper 内部使用管理与数据库的连接。处理连接后DataMapper将在需要时重新连接。

before_fork do |server, worker|
DataObjects::Pooling.pools.each do |pool|
pool.dispose
end
end

关于ruby - 如何在 unicorn 启动之前设置我的数据库并执行 4 次? (因为我有4个 worker ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12833636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com