call rake系统找不到指定的文件

时间:2012-07-10 20:51:44

标签: ruby-on-rails ruby rake

我正在使用rake运行任务来使用Rails 2.3.2应用程序。

这是我的代码的一部分:

 application_controller.rb

 def call_rake(task, options = {})
    options[:rails_env] ||= Rails.env
    args = options.map { |n, v| "#{n.to_s.upcase}='#{v}'" }
    system "/usr/bin/rake #{task} #{args.join(' ')} start"
  end

运行该行时:

system "/usr/bin/rake #{task} #{args.join(' ')} start"

它没有执行任务并说:

The system cannot find the file specified.

我在Windows上运行它已经不得不改变&首先,这是Windows相关还是我遗漏了什么?

其他一些代码:

forbidden_file.rake

desc "Process CSV file"
task :process_file => :environment do
  forbidden_file = ForbiddenFile.find(ENV["csv"])
  forbidden_file.upload_file
end

控制器

...
call_rake :process_file, :csv => params[:files]
redirect_to forbidden_files_url
...

1 个答案:

答案 0 :(得分:1)

是与Windows相关,在Windows rake位置类似于c:\ruby\ruby192\bin\rake。 如果您想要独立于平台,请不要使用绝对路径来调用命令。

从控制器使用中运行任务:

%x[rake name_task]

或其他方式:

require 'rake'

Rake::Task.clear #clears tasks loaded in dev mode
YourApplicationName::Application.load_tasks # put your application name

class RakeController < ApplicationController

  def call_rake(task, options = {})
    Rake::Task[task].reenable # if you going to invoke the same task second time.
    Rake::Task[task].invoke(options)
  end

end