Also, there's another catch. Some people implementing this pattern
prefer to rollback the value for the search_path to the previous value
once the request is completed. In that case you'd want to use an around
filter with a begin-finally block.
But if you always set the search_path for all requests, then this is not
absolutely required for AR.
On 02-06-2014 14:07, Rodrigo Rosenfeld Rosas wrote:
For ActiveRecord it's okay to use a before filter rather than an
around one. But for Sequel you'd probably need to call
"with_connection {|c| ...}".
Since ActiveRecord will reserve the connection for the full request
cycle, you're okay with using a before filter as long as you don't
spawn new threads using the database in your request main thread.
Even if you're not using a multi-process server (like Unicorn) it
should just work fine in the conditions stated above.
Cheers.
On 02-06-2014 00:49, Reginaldo Junior wrote:
Yes. Actually I'm using a before filter and setting it per
requisition. I think it will work because I'm using Unicorn. But I'm
curious why are you suggesting an around filter, what should I do
after the action? I think I'm missing something.
Em domingo, 1 de junho de 2014 18h33min48s UTC-3, Rodrigo Rosenfeld
Rosas escreveu:
I guess you want to implement some kind of multi-tenant
application using PG separate schemas for each tenant.
In that case, if your application uses a single thread per
request you should be able to achieve that by using an around
filter to set the search path.
I think this is the easiest way to achieve what you want if I
guessed it correctly.
On 01-06-2014 18:14, Reginaldo Junior wrote:
Can I do this dinamically and is it thread-safe?
Em domingo, 1 de junho de 2014 17h48min27s UTC-3, Mohamed Wael
Khobalatte escreveu:
This is achievable by setting the table in the model Bar to
foo.bar, is that what you meant?
On Sun, Jun 1, 2014 at 9:14 PM, Reginaldo Junior
<[email protected]> wrote:
Hi. I was thinking in the possibility to set a namespace
for tables in AR queries, so instead of setting the
search path like this:
ActiveRecord::Base.connection.schema_search_path =
'foo, public'
We specify the schema in the query:
select * from foo.bar;
so it could be a thread-safe solution and work with
multi-thread environments and improve Rails support for
real multi-tenant apps using Postgres schemas. What do
you guys think?
--
You received this message because you are subscribed to the Google Groups "Ruby on
Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.