0

rakeを使用してタスクを実行するRails2.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
...
4

1 に答える 1

1

はい、Windowsに関連しています。Windowsでは、レーキの場所はのようなもの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
于 2012-07-10T21:09:43.107 に答える