2013-09-05 3 views
0

J'ai développé une application Rails multi-tenancy en utilisant la technique de Railscast # 388 Multitenancy with Scopes.Rails Portée multi-tenancy sur Heroku

Cela fonctionne très bien sur mon iMac local utilisant POW. Mais, je n'ai pas réussi à le faire fonctionner sur Heroku. Lorsque l'application démarre, j'obtiens immédiatement un écran d'erreur.

L'erreur des journaux est:

2013-09-05T14:54:43.374240+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/relation/finder_methods.rb:310:in `find_with_ids': Couldn't find Tenant without an ID (ActiveRecord::RecordNotFound) 

Ceci est le code application_controller.rb:

around_filter :scope_current_tenant 

private 

def current_tenant 
    Tenant.find_by_subdomain! request.subdomain 
end 
helper_method :current_tenant 

def scope_current_tenant 
    Tenant.current_id = current_tenant.id 
    yield 
ensure 
    Tenant.current_id = nil 
end 

Je le domaine urls fonctionne correctement. Mais, juste au cas où, j'ai aussi essayé de changer le code à ceci (pour le forcer à un locataire spécifique). Cela fonctionne également très bien sur mon iMac local:

def current_tenant 
    Tenant.find_by_subdomain! 'ame' 
end 

Mon problème principal est que je n'ai aucune idée de comment déboguer ceci.

Merci pour votre aide!

MISE À JOUR 1

Je reçois le texte suivant à partir du journal quand je lance locale:

10:31:05 web.1 | Processing by HomeController#index as HTML 
10:31:05 web.1 | Creating scope :page. Overwriting existing method Tenant.page. 
10:31:05 web.1 | Tenant Load (0.7ms) SELECT "tenants".* FROM "tenants" WHERE "tenants"."subdomain" = 'ame' LIMIT 1 
10:31:05 web.1 | Completed 401 Unauthorized in 75ms 
+1

Avez-vous considéré ActsAsTenant - https://github.com/ErwinM/acts_as_tenant - il fait ce que Ryan a fait dans Railscast # 388 et plus encore. Fonctionne sur Heroku sans problème. – nmott

+0

Je ne savais pas à ce sujet. Je vais regarder dedans. Merci! – Reddirt

Répondre

0

Pensez à utiliser ActsAsTenant gem. Il fournit une approche fondée sur les applications multi-locataires. Il permet une certaine flexibilité dans l'attribution du locataire dans chaque demande, vise à s'assurer que tous les modèles dépendant du locataire incluent un locataire et peut garantir l'unicité des attributs au sein d'un locataire. Tout ce que Railscast # 388 inclut plus plus.

Le petit bijou fonctionne sur Heroku sans problème ..