views/admin/index.html.erb
次のように作成したボタンがあるビューがあります...
ビュー/管理者/index.html.erb
<%= button_to 'Manual Scrape', {:controller => "jobs", :action => "create", :job_type => "StatsAll"}, :method=>:post, :class => "btn btn-primary" %>
controllers/jobs_controller.rb
def create
call_rake :import_records, :job_type => params[:job_type]
flash[:notice] = "Import is executing..."
end
コントローラー/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(' ')} --trace >> #{Rails.root}/log/rake.log &"
end
ボタンをクリックすると、現在のビューのままにしviews/admin/index.html.erb
たいと思います。ジョブビューがなく、それが必要だとは思わないためです(誰かがそうでなければ私を納得させるかもしれません...)。私がやろうとしているのは、ボタンをクリックしてから、そのビューでボタンをjobs_controller.rb
、必要に応じてジョブを強制終了するために別のアクションを呼び出すボタンに変更することです。それ以外の場合は、完了するまで実行されます。
ただし、現在、ジョブビューを見つけようとしていますが、そこにはありません。どうすればこれを修正できますか?
注: Railscast #127 のコードの一部を使用して、バックグラウンド タスクを実行する方法を確認しました。