cardmagic / classifier

A general classifier module to allow Bayesian and LSI classifications.
Other
661 stars 122 forks source link

Fix race condition bug deleting categories #40

Closed cardmagic closed 3 months ago

cardmagic commented 3 months ago

Changes Overview

Thank you @dpetruha for catching this bug!

These changes primarily focus on updating the Ruby gem version, modifying the CI workflow, and improving the Bayesian classifier functionality. The main modifications include:

  1. Updating the Ruby versions tested in the CI workflow.
  2. Incrementing the gem version.
  3. Modifying the remove_category method in the Bayesian classifier.
  4. Adding new tests for the remove_category functionality.

Reason for Changes

The changes aim to update the gem's compatibility, improve its version tracking, and enhance the robustness of the Bayesian classifier's category removal feature.

Detailed Description

  1. CI Workflow Update - The .github/workflows/ruby.yml file has been modified to test fewer Ruby versions, now only including '2.7' and 'head'. This change likely aims to focus testing on the oldest supported version and the latest development version.

  2. Gem Version Update - The gem version has been incremented from 1.4.1 to 1.4.2 in the classifier.gemspec file. This indicates a minor update or bug fix release.

  3. Bayesian Classifier Improvement - The remove_category method in lib/classifier/bayes.rb has been modified to update the @total_words count before deleting the category data. This ensures that the total word count is accurately maintained even when categories are removed.

  4. New Tests - Three new tests have been added to test/bayes/bayesian_test.rb to verify the correct functionality of the remove_category method:

    • A test to ensure that category data is properly removed.
    • A test to confirm that the total word count is updated correctly.
    • A test to check that an error is raised when attempting to remove a non-existent category.