Question

Can you call a class method from a rakefile (scheduler.rake)?

I am using the Heroku Scheduler add-on and wrote a task that calls a class method but I receive an error when I run 'heroku run rake auto_start_games'

Connecting to database specified by DATABASE_URL
rake aborted!
compared with non class/module

Here is my task code:

task :auto_start_games => :environment do  
 all_Active_Games = Game.where(:game_active => 1)
 not_flag = all_Active_Games > 0
 started_games = []

 unless all_Active_Games.length == 0
   all_Active_Games.each do |x|
   if x.players >= 2 
    x.winning_structure = 1 if x.players < 3
    Comments.gameStartComment(x.id)
    Game.gameHasStartedPush(x)
    x.game_initialized = 1 
    x.was_recently_initiated = 1
    started_games << x.id
  else 
    Game.addDaytoStartandEnd(x.id)
    Comment.gamePostponedComment(x.id)
  end
 end
end
puts "started games #{started_games}"

end
Was it helpful?

Solution

When you invoke Rake, you can pass the --trace flag to it. This should give you a backtrace, which I suspect is going to tell you the error is on the line not_flag = all_Active_Games > 0, because all_Active_Games is an ActiveRecord relation, but you're trying to compare it to the integer 0. Bascially, you have a type error. In a static language, this wouldn't even compile.

It would also be good to also fix your indentation, choose more descriptive variable names (x -> game)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top