Run rake tasks from the controller


#1

Hello,

How can I run rake tasks from the controller and send extra params to
it too? Thanks,

Elías


#2

Why do you run rake tasks in the controller? controllers are not really
good to execute rake tasks. move it into the model and call it from the
controller.

Elias O. wrote:

Hello,

How can I run rake tasks from the controller and send extra params to
it too? Thanks,

El�as


#3

Good,

But how can I call a rake task from the model, and send some extra
params to it?

Thanks,

Elías


#4

For example with BJ, so the webserver is no permanently in use…

  • Bj.submit “cmd.exe /c rake kipf:convert_movie id=#{id}” in windows
  • Bj.submit “system rake kipf:convert_movie id=#{id}” in linux (not
    sure)

Elias O. wrote:

Good,

But how can I call a rake task from the model, and send some extra
params to it?

Thanks,

El�as


#5

Maybe is good to explain what I am trying to do a little more. I want
to create a directory (folder) for a particular user when he/she
creates an account in my website. That will be the folder were all the
things he/she uploads will be stored. So I want to run a rake task
that will create the user folder once he registers. So the idea is to
have a rake task on an observer and pass the user business name that
will be used to name the folder.

I hope I explained myself.

Thanks


#6

Great, great stuff, thanks a lot guys! I was thinking about using the
ftools, but doubt overcame me. I’m never too sure which approach I
must take. Thanks again for your input.


#7

But why do you not use the ‘ftools’ of ruby? so you can forgot the rake
task.

Create a folder:
FileUtils.mkdir_p ‘name’

Destroy a folder:
FileUtils.rm_rf(path)

With after_save you can call the method who use .mkdir and with
after_destroy .rm_rf…

for example:
after_save :create_folder
after_destroy :destroy_folder

private
def create_folder
FileUtils.mkdir_p ‘name’
end

def destroy_folder
FileUtils.rm_rf(path)
end

Elias O. wrote:

Maybe is good to explain what I am trying to do a little more. I want
to create a directory (folder) for a particular user when he/she
creates an account in my website. That will be the folder were all the
things he/she uploads will be stored. So I want to run a rake task
that will create the user folder once he registers. So the idea is to
have a rake task on an observer and pass the user business name that
will be used to name the folder.

I hope I explained myself.

Thanks


#8

I ran this approach to FAILSAFE the file creation. What do you guys
think:

def create_directory
  FileUtils.mkdir_p RAILS_ROOT+"/public/#{self.name}"
  unless File.directory?(RAILS_ROOT+"/public/#{self.name}")
    raise "#{self.name} folder couldn't be created"
  end
end