Skip to content

Commit 9b8f4c7

Browse files
committed
Prepare v0.2.0 docs and packaging
1 parent 1bd983a commit 9b8f4c7

8 files changed

Lines changed: 119 additions & 68 deletions

File tree

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
## [Unreleased]
22

3+
## [0.2.0] - 2026-02-09
4+
5+
### Added
6+
7+
- `:year` schedules with `month:` and `day:` conditions
8+
9+
### Changed
10+
11+
- Schedule periods are now symbolic (`:hour`, `:day`, `:week`, `:month`, `:year`) instead of arbitrary `ActiveSupport::Duration` values
12+
- Schedule matching, naming, validation, and period boundary calculations were refactored into focused modules
13+
- Deduplication uses schedule boundaries (`period_start_at`) rather than sliding time windows
14+
- `week:` condition now supports ISO week parity only (`:odd`/`:even`)
15+
16+
### Fixed
17+
18+
- Handle DST transitions when calculating `period_start_at` (skip ambiguous/non-existent local ticks)
19+
- Documentation clarifications around weekday integers (`wday`), multi-tick schedules (ranges/arrays), and when deduplication applies
20+
321
## [0.1.0] - 2026-02-05
422

523
### Added

README.md

Lines changed: 94 additions & 64 deletions
Large diffs are not rendered by default.

app/models/feedkit/feed.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Feed < ActiveRecord::Base
99
validates :feed_type, presence: true
1010
validates :data, presence: true, unless: -> { data == {} }
1111

12-
scope :for_owner, ->(owner) { where(owner: owner) }
12+
scope :for_owner, ->(owner) { where(owner:) }
1313
scope :latest, -> { order(created_at: :desc) }
1414
scope :by_type, ->(type) { where(feed_type: type) }
1515
scope :recent, ->(limit = 50) { latest.limit(limit) }

feedkit.gemspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@ Gem::Specification.new do |spec|
3434
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
3535
spec.require_paths = ["lib"]
3636

37+
spec.add_dependency "activejob", ">= 7.0"
38+
spec.add_dependency "activerecord", ">= 7.0"
3739
spec.add_dependency "railties", ">= 7.0"
3840
end

lib/feedkit.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "active_support"
4+
require "active_support/time"
45

56
require_relative "feedkit/version"
67
require_relative "feedkit/configuration"

lib/feedkit/registry.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def due_at(time = Time.current)
4343

4444
dispatchable_generators.flat_map do |generator|
4545
generator.schedules_due(time).map do |schedule|
46-
{ generator: generator, period_name: schedule.period_name }
46+
{ generator:, period_name: schedule.period_name }
4747
end
4848
end
4949
end

lib/feedkit/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Feedkit
4-
VERSION = "0.1.0"
4+
VERSION = "0.2.0"
55
end

lib/generators/feedkit/templates/initializer.rb.tt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Feedkit.configure do |config|
77
# Association name for the feeds relationship (default: :feeds)
88
# config.association_name = :feeds
99

10-
# Paths to search for generator classes (default: ['app/generators/**/*.rb'])
10+
# Glob paths to load generator classes in development (default: ['app/generators/**/*.rb'])
1111
# config.generator_paths = ['app/generators/**/*.rb']
1212

1313
# Primary key type for owner_id (default: :bigint)

0 commit comments

Comments
 (0)