class SiteFramework::Middleware
Rack middleware class of `site_framework` which is responsible for loading
- Domain
-
model instance and [Site] model instance and putting them on
`Rails.application`.
Public Class Methods
new(app)
click to toggle source
Middleware
initializer method which gets the `app` from previous middleware
# File lib/site_framework/middleware.rb, line 9 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/site_framework/middleware.rb, line 13 def call(env) # Create a method called domain which will return the current domain # name Rails.application.send :define_singleton_method, 'domain_name' do env['SERVER_NAME'] end # Create `fetch_domain` method on `Rails.application` # only if it didn't already define. unless Rails.application.respond_to? :fetch_domain Rails.application.send :define_singleton_method, 'fetch_domain' do if defined? ActiveRecord Domain.find_by(nam: Rails.application.domain_name) elsif defined? Mongoid Site.where('domains.name' => Rails.application.domain_name).domains.first end end end Rails.application.send :define_singleton_method, 'site' do site = nil unless Rails.application.domain.nil? site = Rails.application.domain.site end site end Rails.application @app.call(env) end