Tag: rake task

新手:’rake -T’时出现错误信息

我正在为我的项目使用Ruby Enterprise Edition 。 当我通过运行命令rake -T检查所有rake任务时 ,我收到以下错误消息: You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this. 错误消息暗示我可以使用bundle exec来解决问题,但我不确定如何? 那么,如何摆脱这个错误信息? – – – – – – – – – – – – – – – 更多 – – – – – – – – – – ——– […]

Rails – 使用rake任务更新属性。 需要帮助排除模型方法代码

我正在尝试使用每晚运行的rake任务(使用Heroku Scheduler)并在满足某些特定条件时更新某些属性。 关于应用程序的一点逻辑: 该应用程序允许用户在一年的时间内“接受挑战”并阅读一周的书。 这很简单:用户注册,创建他们将在第一周阅读的第一本书,然后可以输入他们下周要阅读的内容。 在他们将下周的书排成队之后,这个表格将被隐藏,直到他们的第一本书出版7天。 此时,排队的书被移动到列表的顶部并标记为“当前正在阅读”,而之前的“当前正在阅读”的书则向下移动到列表中的第二个位置。 如果用户没有“排队”一本书,如果自最新的“当前阅读”书籍创建起7天后,系统将自动创建一本书。 我需要一些建议 我目前所困的地方是,如果自上次“当前阅读”书籍创建以来已经过了7天,那么书籍就会更新属性。 下面是我的书模型,方法update_queue是在rake任务期间调用的内容。 运行rake任务当前没有错误并正确循环代码,但它不会更改任何属性值。 所以我确定update_queue方法中的代码在某些地方不正确,我很乐意帮助您解决原因。 我如何测试这个是通过添加一本书然后手动将我的系统日期更改为提前8天。 非常野蛮,但我没有为这个应用程序编写的测试套件,这是最简单的方法为我做:) class Book {:reading => 1}} } scope :latest_first, lambda { {:order => “created_at DESC”} } def move_from_queue_to_reading self.update_attributes(:queued => false, :reading => 1); end def move_from_reading_to_list self.update_attributes(:reading => 0); end def update_queue days_gone = (Date.today – Date.parse(Book.where(:reading => 1).last.created_at.to_s)).to_i # […]

有多个参数的rake任务 – 我卡住了

rake任务本身: desc “This task creates a new user” task :create_user, [:email, :password] => :environment do |t, args| trole = Role.find_by_name(‘translator’) User.create( :email => args.email, :password => args.password, :password_confirmation => args.password, :role_id => trole.id) end 电话: rake create_user[user@host.com,password] 输出: rake aborted! Don’t know how to build task ‘create_user’ 我真的卡住了。 我在StackOverflow上找到的所有建议,即使在这里,都没有涵盖两个参数的情况,或者过时/不起作用。 请帮忙!

在活动开始前一小时触发的最佳方式

我有许多Appointment模型,它们在一天的不同时间开始,在:00,:15,:30,:45 。 我想在事件开始前1小时触发代码发送提醒。 使用后台工作程序触发此操作的最佳方法是什么? 我正在使用发条gem,所以我可以安排Sidekiq工人。

从父rake调用多个任务是否为每个任务加载环境

如果我有一个耙子调用多个其他耙子。 一旦我发起父母耙 rake myapp:main 然后在rake中调用完成将为每个任务加载环境,或者在运行rake myapp:main时只执行一次活动? namespace :myapp do desc “Main Run” task :main => :environment do Rake::Task[‘myapp:task1’].invoke Rake::Task[‘myapp:task2’].invoke end task :task1 => :environment do # Does the first task end task :task2 => :environment do # Does the second task end end

DB的自定义rake任务:找不到表

我有一个自定义rake任务,它创建一个包含各种情况数据的开发DB。 核心看起来像这样: namespace :db do task setup_seed: :environment do Rake::Task[‘db:drop’].invoke Rake::Task[‘db:create’].invoke Rake::Task[‘db:schema:load’].invoke Rake::Task[‘db:migrate’].invoke Rake::Task[‘db:test:prepare’].invoke Rake::Task[‘db:seed’].invoke end end 一切运行正常,直到db:seed被调用,因为它抛出了表不存在的错误。 这是我的seed.rb : puts Rails.env # => development puts Article.count # rake aborted! # Mysql2::Error: Table ‘app_test.articles’ doesn’t exist: SHOW FULL FIELDS FROM `articles` # /usr/src/app/db/seeds.rb:2:in `’ # /usr/src/app/Rakefile:16:in `block (2 levels) in ‘ # Tasks: TOP => […]

在调用Rake任务时设置多个环境变量

我可以调用Rake任务并设置一个像这样的环境变量: $ ONE=1 rake temp:both 但是我如何设置两个环境变量? 这不起作用: $ ONE=1 TWO=2 rake temp:both 这有效,但令人困惑的是: $ ONE=1 rake temp:both TWO=2 如何在调用rake之前传递多个env?

Rails在特定时间段内执行Cron Job或Rake任务

我想在特定时间段内执行某项任务。 让我们说我想每半小时在早上6点到9点之间执行cronjob或一些rake任务。 所以脚本将执行6,6:30,7,7:30 ……并且最后是9。 你能不能给我一些建议,告诉我如何用Rails做到这一点。 不要告诉我安排6,6:30,7 ..时间段的个人任务。 ANS 我发现最简单的方法是每当gem使用并添加cronjob时间如下。 every ‘*/30 6-9 * * *’ do runner “Model.method” end

如何在Rails中使用随时触发rake任务

我正在写一个Rake任务。 我想在每个月的每个星期天晚上11点触发它。 如何使用Ruby on Rails中的Whenever gem来安排这个? 我在以下位置执行rake任务:app / lib / tasks / my_task.rake task :create_entries => :environment do puts “Hello” end

测试rake任务中定义的方法

我想测试rake任务中定义的方法。 耙文件 #lib/tasks/simple_task.rake namespace :xyz do task :simple_task => :environment do begin if task_needs_to_run? puts “Lets run this…” #some code which I don’t wish to test … end end end def task_needs_to_run? # code that needs testing return 2 > 1 end end 现在,我想测试这个方法, task_needs_to_run? 在测试文件中我该怎么做? 补充说明:我理想的是也希望在rake任务中测试另一个私有方法……但我可以稍后再担心。