Skip to content
Snippets Groups Projects
  • Paul Cantrell's avatar
    76bc7c63
    Prevent rake task crash when BATCH not specified · 76bc7c63
    Paul Cantrell authored
    In Rails 5, `rake geocode:all` crashes:
    
    ```
    $ rake geocode:all CLASS=Whatzit
    rake aborted!
    ArgumentError: comparison of Fixnum with nil failed
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:217:in `<'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:217:in `block in in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:198:in `loop'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:198:in `in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:120:in `find_in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:58:in `find_each'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/geocoder-1.2.2/lib/tasks/geocoder.rake:11:in `block (2 levels) in <top (required)>'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
    /Users/paul/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
    /Users/paul/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'
    Tasks: TOP => geocode:all
    (See full trace by running task with --trace)
    ```
    
    The problem seems to be that `find_each` used to default the `batch:` param when it was explicitly set to nil, but now passes an explicit nil on through.
    
    This patch fixes the issue by defaulting the batch size in the rake task.
    76bc7c63
    History
    Prevent rake task crash when BATCH not specified
    Paul Cantrell authored
    In Rails 5, `rake geocode:all` crashes:
    
    ```
    $ rake geocode:all CLASS=Whatzit
    rake aborted!
    ArgumentError: comparison of Fixnum with nil failed
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:217:in `<'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:217:in `block in in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:198:in `loop'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:198:in `in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:120:in `find_in_batches'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/activerecord-5.0.0/lib/active_record/relation/batches.rb:58:in `find_each'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/geocoder-1.2.2/lib/tasks/geocoder.rake:11:in `block (2 levels) in <top (required)>'
    /Users/paul/.rvm/gems/ruby-2.2.2/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
    /Users/paul/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
    /Users/paul/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'
    Tasks: TOP => geocode:all
    (See full trace by running task with --trace)
    ```
    
    The problem seems to be that `find_each` used to default the `batch:` param when it was explicitly set to nil, but now passes an explicit nil on through.
    
    This patch fixes the issue by defaulting the batch size in the rake task.