Rails 如何运行 rake 任务

发布于 2024-10-31 17:53:11 字数 363 浏览 0 评论 0原文

如何在终端/控制台中运行这个 rake 文件?

我的 statistik.rake 在 lib/tasks 中

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

How do I run this rake file in terminal/console?

my statistik.rake in lib/tasks

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

歌枕肩 2024-11-07 17:53:12

您尝试过rake reklamer:iqmedier吗?

我的自定义 rake 任务位于 lib 目录中,而不是 lib/tasks 中。不确定这是否重要。

Have you tried rake reklamer:iqmedier ?

My custom rake tasks are in the lib directory, not in lib/tasks. Not sure if that matters.

骄兵必败 2024-11-07 17:53:12

如果您不确定如何运行 rake 任务,请首先找出您有哪些任务,它还会列出运行这些任务的命令。

在终端上运行 rake --tasks 。

它将列出如下任务:

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

然后您可以使用以下命令运行任务: rake gobble:dev:prime 如所列。

If you aren't sure how to run a rake task, first find out first what tasks you have and it will also list the commands to run the tasks.

Run rake --tasks on the terminal.

It will list the tasks like the following:

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

You can then run your task with: rake gobble:dev:prime as listed.

野稚 2024-11-07 17:53:12

作为 https://stackoverflow.com/a/5641807/7262646https://stackoverflow.com/a/49400110/7262646描述

你必须添加

require 'rake'
Rake::Task.clear
YourAppName::Application.load_tasks

在文件的顶部。

YourAppName 来自config/applicaion.rb,它被定义为一个命名空间,如:

module YourAppName
  class Application < Rails::Application
  end
end

然后你可以用它

Rake::Task["task_name"].invoke

来调用你的任务。

As the https://stackoverflow.com/a/5641807/7262646 and https://stackoverflow.com/a/49400110/7262646 described

you have to add

require 'rake'
Rake::Task.clear
YourAppName::Application.load_tasks

on the top of the file.

YourAppName comes from config/applicaion.rb, which is defined as a namespace, such as:

module YourAppName
  class Application < Rails::Application
  end
end

and then you can use

Rake::Task["task_name"].invoke

to invoke your task.

哭了丶谁疼 2024-11-07 17:53:12

在 Rails 4.2 中,上述方法不起作用。

  1. 前往航站楼。
  2. 将目录更改为 rake 文件所在的位置。
  3. 运行 rake task_name。
  4. 在上述情况下,运行 rake iqmedier - 将仅运行 iqmedir 任务。
  5. 运行 rake euroads - 将仅运行 Euroads 任务。
  6. 要运行该文件中的所有任务,请在
    相同的文件并运行 rake all

    任务:全部=> [:iqmedier, :euroads, :mikkelsen, :orville ] do #这将在屏幕上打印所有任务 
    结尾
    

In rails 4.2 the above methods didn't work.

  1. Go to the Terminal.
  2. Change the directory to the location where your rake file is present.
  3. run rake task_name.
  4. In the above case, run rake iqmedier - will run only iqmedir task.
  5. run rake euroads - will run only the euroads task.
  6. To Run all the tasks in that file assign the following inside the
    same file and run rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
林空鹿饮溪 2024-11-07 17:53:11

您可以通过运行以下命令从 shell 运行 Rake 任务:

rake task_name

从 Ruby 运行(例如,在 Rails 控制台或另一个 Rake 任务中):

Rake::Task['task_name'].invoke

要使用单个任务在同一命名空间中运行多个任务,请在命名空间中创建以下新任务:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

You can run Rake tasks from your shell by running:

rake task_name

To run from from Ruby (e.g., in the Rails console or another Rake task):

Rake::Task['task_name'].invoke

To run multiple tasks in the same namespace with a single task, create the following new task in your namespace:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end
策马西风 2024-11-07 17:53:11
Rake::Task['reklamer:orville'].invoke

或者

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

or

Rake::Task['reklamer:orville'].invoke(args)
无声无音无过去 2024-11-07 17:53:11

有时您的 rake 任务不会加载到控制台中,在这种情况下您可以尝试以下命令

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

Sometimes Your rake tasks doesn't get loaded in console, In that case you can try the following commands

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文