Alt alan adı aracılığıyla bir kiracıyı yükleyen ve bazı varsayılan ayarları uygulayan bir parça Raf ara parçam var. Middleware, hoş değil, yeterince iyi iş yapar. Ancak, app içinde bir istisna atıldığında, middleware tam yığın izini "yakalar". Tuzak dediğimde, beklenen yığın izini gizler.Raf aracı "yığın yakalama" yığın izlemesi
İşte bir örnek.
ben şöyle bir bir kontrolör eylem istisna atan ediyorum:
def index
throw "Exception in a Rails controller action"
@taxonomies = Spree::Taxonomy.all
end
Sen yığın izleme bu konuma başvuruda olacağını beklenir ama öyle değil. Bunun yerine, ara katmandaki bir satıra başvurulur.
Completed 500 Internal Server Error in 139ms
UncaughtThrowError (uncaught throw "Exception in a Rails controller action"):
lib/tenant_manager/middleware/loader.rb:42:in `call'
Bu neden oluyor? Daha önce böyle bir şey gördün mü?
# lib/tenant_manager/middleware/loader.rb
module TenantManager
module Middleware
class Loader
# Middleware to detect an tenant via subdomain early in
# the request process
#
# Usage:
# # config/application.rb
# config.middleware.use TenantManager::Middleware::Loader
#
# A scaled down version of https://github.com/radar/houser
def initialize(app)
@app = app
end
def call(env)
domain_parts = env['HTTP_HOST'].split('.')
if domain_parts.length > 2
subdomain = domain_parts.first
tenant = Leafer::Tenant.find_by_database(subdomain)
if tenant
ENV['CURRENT_TENANT_ID'] = tenant.id.to_s
ENV['RAILS_CACHE_ID'] = tenant.database
Spree::Image.change_paths tenant.database
Apartment::Tenant.process(tenant.database) do
country = Spree::Country.find_by_name('United States')
Spree.config do |config|
config.default_country_id = country.id if country.present?
config.track_inventory_levels = false
end
Spree::Auth::Config.set(:registration_step => false)
end
end
else
ENV['CURRENT_TENANT_ID'] = nil
ENV['RAILS_CACHE_ID'] = ""
end
@app.call(env)
end
end
end
end
ben yakut 2.2.0p0
ve rails 4.1.8
çalıştırıyorum: Burada
Bunun için ağları aradım ama bir şey bulamadım çünkü muhtemelen doğru şey için çıraklık yapmıyorum.
Bunun neden olduğu ve neyi yanlış yaptığım hakkındaki düşünceler nelerdir?
Şerefe!