Thanks for the reply!
I don't think ENV['my_var'] will work in this case. I definitely need to
allow different users to submit requests at the same time. Here is what I am
doing now:
controller:
ctl_file = 'db/etl/trans.ctl'
usr_ctl_file = "db/etl/trans[#{current_user.id.to_s}].ctl"
File.copy(ctl_file, usr_ctl_file)
puts 'Current user is ' + current_user.id.to_s + ' (controller)'
ETL::Engine.realtime_activity = true
ETL::Engine.process(usr_ctl_file)
ctl:
#parse the ctl file name and get the user id
u = __FILE__.scan(/\[[0-9]+\]/)[0].gsub(/[\[\]]/,"").to_i
puts 'Current user is: ' + u.to_s + ' (CTL file)'
It "works", but it isn't complete. I still need to set up the input and
temporary files to include the user id too. I also need to clean up all
these extra files.
This approach seems very crude. I was hoping that I could start the etl by
just calling a method such as MyCtl.start(user_id). (I don't mean this as a
criticism. I am far too new to ActiveWarehouse to criticize any design
decisions.)
Thanks for the help!
Paul
On Dec 29, 2007 5:05 AM, Thibaut Barrère <[EMAIL PROTECTED]> wrote:
> Hi Paul,
>
> > I am thinking that passing an argument/parameter would be the best way
> to do
> > this.
>
> the easiest way to pass variables to a ctl file is through
> ENV['myvar'] ; see
>
> http://rubyforge.org/pipermail/activewarehouse-discuss/2007-October/000184.html
> for a previous discussion on this topic.
>
> > Any suggestions?
>
> Yep - take care of concurrency issues if multiple users achieve a
> request at the same time, or things won't scale properly. One solution
> could be to:
> - do the processing for all users as part of a nightly process
> - and just achieve a request to the database, filtering by user_id
>
> Thibaut
> --
> http://evolvingworker : tools for a better day
>
--
Ezk. 36
_______________________________________________
Activewarehouse-discuss mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/activewarehouse-discuss