INNER CODE UNIT · Ruby
self
cenit-io/cenit · config/application.rb:256
def self.setup_build_in(apps)
apps.each do |app|
app_module = app.app_module
puts "Setting up #{app_module}..."
app.tenant.switch do
app_module.setups.each do |setup_block|
# Keep app builder state deterministic per app/setup run and recover once from stale IDs.
app_module.instance_variable_set(:@app_id, app.id)
begin
app_module.instance_eval(&setup_block)
rescue Mongoid::Errors::DocumentNotFound => e
fallback_app = Cenit::BuildInApp.where(namespace: app.namespace, name: app.name).first
if fallback_app
puts "Recovering stale build-in app reference for #{app_module}: #{e.message}"
app_module.instance_variable_set(:@app_id, fallback_app.id)
app_module.instance_eval(&setup_block)
else
raise