A-identifies tenants via subdomain (ie acme.grokklab.com) B-implmeents tenant data seperation via Postgres schema's C-Uses Devise, CanCan and Rolify for authentication and authorization D-has kickass schema migration tasks!
-
git clone [email protected]:GrokkLab/10AnC.git
-
bundle install
-
create login role Tenancy in postgres
-
rake db:create
-
rake db:migrate
-
rake db:seed
-
That’s it! Login with [email protected]/please
Tenancy works just fine as a single tenant app, but maybe you need to support 2 or 3 or eleventeen different organizations. No problem. Tenancy comes with some easy-peasy rake tools to do just that.
Spose your new tenant is named ‘acme’, then…
rake tenant:reset TENANT_NAME=acme
This automatically creates the schema ‘acme’, migrates that schema to current state and then seeds that schema with data. Piece O Cake.
Tip: now that you’ve got multi-tenancy, you’ll need to add a subdomain. If you’re rockin’ some flavor of unix this will be as simple as adding entries into your /etc/hosts file. Something like this…
127.0.0.1 acme.grokklab.com 127.0.0.1 bnsf.grokklab.com etc...
Refresh your DNS cache (for macs -> dscacheutil -flushcache) and then point your browser at acme.grokklab.com and you are now looking at ACME’s web app.
Enjoy.