web-dev-qa-db-ja.com

Rails rakeタスクの実行方法

このレーキファイルをターミナル/コンソールで実行するにはどうすればよいですか?

lib/tasksのstatistik.rake

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end
78
Rails beginner

RailsコンソールでRakeタスクを実行するのではなく、代わりにターミナル/コマンドプロンプトで実行する必要があります

rake task_name

本当にmust RubyでRakeタスクを実行すると、次のことができるはずです。

Rake::Task['task_name'].invoke

しかし、それは通常、Rakeタスク自体で別のタスクを実行するためにのみ行われます。

単一のタスクで同じネームスペースで複数のタスクを実行するには、ネームスペースに次の新しいタスクを作成します。

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville ] do
  # This will run after all those tasks have run
end
109
Andrew Marshall
Rake::Task['reklamer:orville'].invoke

または

Rake::Task['reklamer:orville'].invoke(args)
23
Luke W

rake reklamer:iqmedierを試しましたか?

私のカスタムrakeタスクは、lib/tasksではなく、libディレクトリにあります。それが重要かどうかわかりません。

20
CharlieMezak

時々、rakeタスクがコンソールにロードされません。その場合、次のコマンドを試すことができます

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke
8
Prem

Rails 4.2では、上記の方法は機能しませんでした。

  1. ターミナルに移動します。
  2. ディレクトリを、rakeファイルが存在する場所に変更します。
  3. rake task_nameを実行します。
  4. 上記の場合、rake iqmedierを実行します-iqmedirタスクのみを実行します。
  5. rake euroadsを実行-euroadsタスクのみを実行します。
  6. そのファイル内のすべてのタスクを実行するには、同じファイル内で次を割り当て、rake allを実行します

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
1
hari

Rakeタスクの実行方法がわからない場合は、まず自分のタスクを確認してください。タスクを実行するコマンドもリストされます。

ターミナルでrake --tasksを実行します。

次のようなタスクがリストされます。

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

次に、リストのrake gobble:dev:primeを使用してタスクを実行できます。

1
Ruto Collins

ここに、私が役に立つと思うrakeタスクの実行に関する非常に良いチュートリアルがあります。

http://jasonseifer.com/2010/04/06/rake-tutorial

0