From cb95facc55b839c9b9f446e3efa451854b7e86bf Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Mon, 9 Dec 2024 12:33:17 -0500 Subject: [PATCH 01/14] YNGJ-1058: Aether Observatory 0.0.1 --- packages/aether_observatory/.rubocop.yml | 7 + packages/aether_observatory/Gemfile | 7 + packages/aether_observatory/Rakefile | 26 ++ .../aether_observatory.gemspec | 44 +++ .../doc/dependency_decisions.yml | 3 + packages/aether_observatory/docs/CHANGELOG.md | 3 + packages/aether_observatory/docs/README.md | 368 ++++++++++++++++++ .../lib/aether_observatory.rb | 15 + .../lib/aether_observatory/README.md | 318 +++++++++++++++ .../lib/aether_observatory/configuration.rb | 11 + .../lib/aether_observatory/event_base.rb | 66 ++++ .../lib/aether_observatory/observer_base.rb | 106 +++++ .../lib/aether_observatory/version.rb | 5 + packages/aether_observatory/mkdocs.yml | 6 + .../aether_observatory/event_base_spec.rb | 131 +++++++ .../aether_observatory/observer_base_spec.rb | 113 ++++++ .../aether_observatory/spec/spec_helper.rb | 57 +++ 17 files changed, 1286 insertions(+) create mode 100644 packages/aether_observatory/.rubocop.yml create mode 100644 packages/aether_observatory/Gemfile create mode 100644 packages/aether_observatory/Rakefile create mode 100644 packages/aether_observatory/aether_observatory.gemspec create mode 100644 packages/aether_observatory/doc/dependency_decisions.yml create mode 100644 packages/aether_observatory/docs/CHANGELOG.md create mode 100644 packages/aether_observatory/docs/README.md create mode 100644 packages/aether_observatory/lib/aether_observatory.rb create mode 100644 packages/aether_observatory/lib/aether_observatory/README.md create mode 100644 packages/aether_observatory/lib/aether_observatory/configuration.rb create mode 100644 packages/aether_observatory/lib/aether_observatory/event_base.rb create mode 100644 packages/aether_observatory/lib/aether_observatory/observer_base.rb create mode 100644 packages/aether_observatory/lib/aether_observatory/version.rb create mode 100644 packages/aether_observatory/mkdocs.yml create mode 100644 packages/aether_observatory/spec/aether_observatory/event_base_spec.rb create mode 100644 packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb create mode 100644 packages/aether_observatory/spec/spec_helper.rb diff --git a/packages/aether_observatory/.rubocop.yml b/packages/aether_observatory/.rubocop.yml new file mode 100644 index 00000000..90cd42df --- /dev/null +++ b/packages/aether_observatory/.rubocop.yml @@ -0,0 +1,7 @@ +require: + - rubocop-powerhome + + +Metrics/MethodLength: + Exclude: + - spec/**/*_spec.rb \ No newline at end of file diff --git a/packages/aether_observatory/Gemfile b/packages/aether_observatory/Gemfile new file mode 100644 index 00000000..b24b97bb --- /dev/null +++ b/packages/aether_observatory/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gemspec + +gem "rubocop-powerhome", path: "../rubocop-powerhome" diff --git a/packages/aether_observatory/Rakefile b/packages/aether_observatory/Rakefile new file mode 100644 index 00000000..3b11eaa3 --- /dev/null +++ b/packages/aether_observatory/Rakefile @@ -0,0 +1,26 @@ +#!/usr/bin/env rake + +# frozen_string_literal: true + +begin + require "bundler/setup" +rescue LoadError + puts "You must `gem install bundler` and `bundle install` to run rake tasks" +end +Bundler::GemHelper.install_tasks + +require "rspec/core/rake_task" +RSpec::Core::RakeTask.new(:spec) + +require "rubocop/rake_task" +RuboCop::RakeTask.new(:rubocop) + +require "yard" +YARD::Rake::YardocTask.new do |t| + t.files = ["lib/**/*.rb"] + t.options = [ + "--no-private", + ] +end + +task default: %i[rubocop spec] diff --git a/packages/aether_observatory/aether_observatory.gemspec b/packages/aether_observatory/aether_observatory.gemspec new file mode 100644 index 00000000..bd6ccbb4 --- /dev/null +++ b/packages/aether_observatory/aether_observatory.gemspec @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require_relative "lib/aether_observatory/version" + +Gem::Specification.new do |spec| + spec.name = "aether_observatory" + spec.version = AetherObservatory::VERSION + spec.authors = ["Terry Finn", "Justin Stanczak"] + spec.email = ["terry.finn@powerhrg.com", "justin.stanczak@powerhrg.com"] + + spec.summary = "Aether Observatory" + spec.description = "Aether Observatory provides an event broadcast system." + spec.homepage = "https://github.com/powerhome/power-tools" + spec.license = "MIT" + spec.required_ruby_version = ">= 3.0" + + spec.metadata["rubygems_mfa_required"] = "true" + spec.metadata["homepage_uri"] = spec.homepage + spec.metadata["source_code_uri"] = spec.homepage + spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/packages/aether_observatory/docs/CHANGELOG.md" + + # Specify which files should be added to the gem when it is released. + # The `git ls-files -z` loads the files in the RubyGem that have been added into git. + spec.files = Dir.chdir(__dir__) do + `git ls-files -z`.split("\x0").reject do |f| + (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)}) + end + end + spec.require_paths = ["lib"] + + spec.add_dependency "activemodel", "~> 6.0", ">= 6.0.6.1" + spec.add_dependency "activesupport", "~> 6.0", ">= 6.0.6.1" + spec.add_development_dependency "appraisal", "~> 2.5.0" + + spec.add_development_dependency "bundler", "~> 2.1" + spec.add_development_dependency "license_finder", "~> 7.0" + spec.add_development_dependency "pry", ">= 0.14" + spec.add_development_dependency "pry-byebug", "3.10.1" + spec.add_development_dependency "rake", "~> 13.0" + spec.add_development_dependency "rspec", "~> 3.0" + spec.add_development_dependency "simplecov", "0.15.1" + spec.add_development_dependency "yard", "0.9.21" + spec.metadata["rubygems_mfa_required"] = "true" +end diff --git a/packages/aether_observatory/doc/dependency_decisions.yml b/packages/aether_observatory/doc/dependency_decisions.yml new file mode 100644 index 00000000..f734baa9 --- /dev/null +++ b/packages/aether_observatory/doc/dependency_decisions.yml @@ -0,0 +1,3 @@ +--- +- - :inherit_from + - https://raw.githubusercontent.com/powerhome/oss-guide/master/license_rules.yml diff --git a/packages/aether_observatory/docs/CHANGELOG.md b/packages/aether_observatory/docs/CHANGELOG.md new file mode 100644 index 00000000..f85bf0c3 --- /dev/null +++ b/packages/aether_observatory/docs/CHANGELOG.md @@ -0,0 +1,3 @@ +## [0.0.1] - 2024-12-06 + +- Extracts AetherObservatory from Talkbox engine. \ No newline at end of file diff --git a/packages/aether_observatory/docs/README.md b/packages/aether_observatory/docs/README.md new file mode 100644 index 00000000..d31a64f2 --- /dev/null +++ b/packages/aether_observatory/docs/README.md @@ -0,0 +1,368 @@ +# AetherObservatory Guide + +In this guide we are going to walk through example code to illustrate the +usage of the `AetherObservatory::`. When finished you will have a class to +create events and a class that subscribes to those events. + +#### Table of Contents +- [Creating Events](#creating-events) +- [Creating an Observer and Subscribing to Events](#creating-an-observer-and-subscribing-to-events) +- [Sending an Event to your Observer](#sending-an-event-to-your-observer) +- [Stopping Observers](#stopping-observers) +- [Using Dynamic Event Names](#using-dynamic-event-names) +- [Multiple Event Topics](#multiple-event-topics) + +## Creating Events + +To begin create an `ApplicationEvent` class that extends the +`AetherObservatory::EventBase` class. Next configure a prefix for event +names using `event_prefix`. This is optional, but encouraged to help prevent +naming collisions with other domains. Every domain event we define as a +sub-class to the `ApplicationEvent` will inherit this prefix. + +```ruby +module AetherObservatory + module Examples + class ApplicationEvent < AetherObservatory::EventBase + event_prefix 'talkbox' + end + end +end +``` + +Next we create an event class called `ExampleEvent` that extends our +`ApplicationEvent`. In this class we define the topic we would like our +event sent to using the `event_name` method. Lastly we will define our +data using the `attribute` method. + +```ruby +module AetherObservatory + module Examples + class ExampleEvent < AetherObservatory::Examples::ApplicationEvent + event_name 'example1' + + attribute :message + attribute :timestamp, default: -> { Time.current } + end + end +end +``` + +Now we have a class to create new events. Each time you create a new event, +it will be sent to each topic you added via the `event_name` method. + +```ruby +AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +``` + +Running the command above will display a log message like you see below. + +```irb +irb(main):018:0> AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +[AetherObservatory::Examples::ExampleEvent] Create event for topic: [talkbox.example1] +=> nil +irb(main):019:0> +``` + +Now that we have an `ExampleEvent` class to create events we need to create +an observer to listen for those events. + +
+ Top +
+ +## Creating an Observer and Subscribing to Events + +Our new event class `ExampleEvent` creates a new event on the +`talkbox.example1` topic so this is the topic we need to create a observer for. + +We start by creating another class called `ExampleObserver` that extends +the `AetherObservatory::ObserverBase` class. Next we use the `subscribe_to` +method to register this observer to the topic `talkbox.example1`. We also +need to define a `process` method that will be called each time your observer +receives an event. In this `process` method you have access to `event_payload` +and `event_name` objects for your own logic. + +```ruby +module AetherObservatory + module Examples + class ExampleObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.example1' + + def process + puts <<-EVENT + ************************************ + Event processed: + Name: #{event_name.inspect} + Message: #{event_payload.message} + Timestamp: #{event_payload.timestamp} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` +Now that we have a new observer named `ExampleObserver`, we will need to +start our observer before it will process any events. Observers default +to `stopped`, so we need to call `start` on each observer before they will +recieve events. Inside an initilizer is the recommended location to start +your observers. + +```ruby +AetherObservatory::Examples::ExampleObserver.start +``` + +
+ Top +
+ +## Sending an Event to your Observer + +Now that you have all your classes created you can send events to your +observer via the `create` method. + +```ruby +AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +``` + +Calling create on your `ExampleEvent` class will trigger the `process` +method in the `ExampleObserver` class. You should see the following logged +output. + +```irb +irb(main):040:0> AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') + ************************************ + Event processed: + Name: "talkbox.example1" + Message: hello world + Timestamp: 2024-05-23 15:17:16 UTC + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="hello world">, "timestamp"=>#, @name="timestamp", @value_before_type_cast=#, @type=#, @original_attribute=nil, @memoized_value_before_type_cast=Thu, 23 May 2024 15:17:16.082153128 UTC +00:00, @value=Thu, 23 May 2024 15:17:16.082153128 UTC +00:00>}>> + ************************************ +[AetherObservatory::Examples::ExampleEvent] Create event for topic: [talkbox.example1] +=> nil +``` + +
+ Top +
+ +## Stopping Observers + +To stop your observer from processing events you can call the `stop` method +on your observer class. This stops only that observer class from processing +events. + +```ruby +AetherObservatory::Examples::ExampleObserver.stop +``` + +
+ Top +
+ +## Using Dynamic Event Names + +Create a new class called `RandomEvent` that extends `ApplicationEvent`. +Then pass a block to the `event_name` method. This allows you to dynamiclly +select your topic at the time of event creation. + +*Note: [ApplicationEvent](#creating-events) class was created at the +beginning of this guide.* + +```ruby +module AetherObservatory + module Examples + class RandomEvent < AetherObservatory::Examples::ApplicationEvent + event_name { select_a_topic_at_random } + + attribute :message + + private + + def select_a_topic_at_random + %w(test support customer).sample + end + end + end +end +``` + +You can now create a few events with your new class using the `create` +method of that class. + +```ruby +AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +``` + +As you can see from the following output a random event name is selected +each time you call `create`. + +```irb +irb(main):078:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.support] +=> nil +irb(main):079:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.test] +=> nil +irb(main):080:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.support] +=> nil +irb(main):081:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.customer] +=> nil +``` + +
+ Top +
+ +## Multiple Event Topics + +In this example we are going to create an event class that sends events to +two different topics based on the `level` attribute from the event class. +We are also going to make two observer classes that subscribe to different +events based on their role in the system. + +*Note: [ApplicationEvent](#creating-events) class was created at the +beginning of this guide.* + +We first create the `TalkboxCallQueueEvent` class. This class will send each +event to the `talkbox.call_queues.events.all` topic and to the `level` scoped +topic. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallQueueEvent < AetherObservatory::Examples::ApplicationEvent + event_name 'call_queues.events.all' + event_name { "call_queues.events.#{level}" } + + attribute :level, default: 'info' + end + end +end +``` + +The new `TalkboxCallQueueEvent` class will send all events to the `all` +topic. However the events will also be sent to their specific event `level` +scoped topic. This allows us to have one observer logging call history and +a second observer that handles events with the scoped `level` or error for +topic `talkbox.call_queues.events.error`. + +Next we need to create a new class called `TalkboxCallHistoryObserver`. This +observer will subscribe to the `talkbox.call_queues.events.all` topic. This +classes function is to record all call queue events. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallHistoryObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.call_queues.events.all' + + delegate :level, to: :event_payload + + def process + puts <<-EVENT + ************************************ + Event processed: + Name: #{event_name.inspect} + Level: #{event_payload.level} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` + +Next we need a class called `TalkboxCallErrorObserver`. This class only +subscribes to the `talkbox.call_queues.events.error` topic. It only cares +about `error` level events and nothing else. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallErrorObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.call_queues.events.error' + + def process + puts <<-EVENT + ************************************ + Error Event processed: + Name: #{event_name.inspect} + Level: #{event_payload.level} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` + +We need to be sure to start our new observers before they will recieve +any events. + +```ruby +AetherObservatory::Examples::TalkboxCallHistoryObserver.start +AetherObservatory::Examples::TalkboxCallErrorObserver.start +``` + +Finally we are ready to create a new event and see what happens. First we +create an event with a default level. + +```ruby +AetherObservatory::Examples::TalkboxCallQueueEvent.create +``` + +Running the create with no parameters will have a default level of `info`. +You will see the following output. + +```irb +irb(main):058:0> AetherObservatory::Examples::TalkboxCallQueueEvent.create + ************************************ + Event processed: + Name: "talkbox.call_queues.events.all" + Level: info + Event Payload: ##, @original_attribute=nil, @value="info">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.all] +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.info] +=> nil +``` + +Next we will try creating a new event but this time we set the `level` +to `error`. + +```ruby +AetherObservatory::Examples::TalkboxCallQueueEvent.create(level: 'error') +``` + +As you can see from the output, setting the `level` to `error` will send +an event to both classes. + +```irb +irb(main):059:0> AetherObservatory::Examples::TalkboxCallQueueEvent.create(level: 'error') + ************************************ + Event processed: + Name: "talkbox.call_queues.events.all" + Level: error + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="error">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.all] + ************************************ + Error Event processed: + Name: "talkbox.call_queues.events.error" + Level: error + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="error">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.error] +=> nil +``` + +
+ Top +
diff --git a/packages/aether_observatory/lib/aether_observatory.rb b/packages/aether_observatory/lib/aether_observatory.rb new file mode 100644 index 00000000..0db94ca4 --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require "active_support/all" +require "aether_observatory/configuration" + +module AetherObservatory + mattr_accessor :configuration, default: Configuration + + class << self + delegate :configure, :config, to: :configuration + end +end + +require "aether_observatory/event_base" +require "aether_observatory/observer_base" diff --git a/packages/aether_observatory/lib/aether_observatory/README.md b/packages/aether_observatory/lib/aether_observatory/README.md new file mode 100644 index 00000000..49a392b1 --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory/README.md @@ -0,0 +1,318 @@ +# AetherObservatory Guide + +In this guide we are going to walk through example code to illustrate the usage of the `AetherObservatory::`. When finished you will have a class to create events and a class that subscribes to those events. + +#### Table of Contents +- [Creating Events](#creating-events) +- [Creating an Observer and Subscribing to Events](#creating-an-observer-and-subscribing-to-events) +- [Sending an Event to your Observer](#sending-an-event-to-your-observer) +- [Stopping Observers](#stopping-observers) +- [Using Dynamic Event Names](#using-dynamic-event-names) +- [Multiple Event Topics](#multiple-event-topics) + +## Creating Events + +To begin create an `ApplicationEvent` class that extends the `AetherObservatory::EventBase` class. Next configure a prefix for event names using `event_prefix`. This is optional, but encouraged to help prevent naming collisions with other domains. Every domain event we define as a sub-class to the `ApplicationEvent` will inherit this prefix. + +```ruby +module AetherObservatory + module Examples + class ApplicationEvent < AetherObservatory::EventBase + event_prefix 'talkbox' + end + end +end +``` + +Next we create an event class called `ExampleEvent` that extends our `ApplicationEvent`. In this class we define the topic we would like our event sent to using the `event_name` method. Lastly we will define our data using the `attribute` method. + +```ruby +module AetherObservatory + module Examples + class ExampleEvent < AetherObservatory::Examples::ApplicationEvent + event_name 'example1' + + attribute :message + attribute :timestamp, default: -> { Time.current } + end + end +end +``` + +Now we have a class to create new events. Each time you create a new event, it will be sent to each topic you added via the `event_name` method. + +```ruby +AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +``` + +Running the command above will display a log message like you see below. + +```irb +irb(main):018:0> AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +[AetherObservatory::Examples::ExampleEvent] Create event for topic: [talkbox.example1] +=> nil +irb(main):019:0> +``` + +Now that we have an `ExampleEvent` class to create events we need to create an observer to listen for those events. + +
+ Top +
+ +## Creating an Observer and Subscribing to Events + +Our new event class `ExampleEvent` creates a new event on the `talkbox.example1` topic so this is the topic we need to create a observer for. + +We start by creating another class called `ExampleObserver` that extends the `AetherObservatory::ObserverBase` class. Next we use the `subscribe_to` method to register this observer to the topic `talkbox.example1`. We also need to define a `process` method that will be called each time your observer receives an event. In this `process` method you have access to `event_payload` and `event_name` objects for your own logic. + +```ruby +module AetherObservatory + module Examples + class ExampleObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.example1' + + def process + puts <<-EVENT + ************************************ + Event processed: + Name: #{event_name.inspect} + Message: #{event_payload.message} + Timestamp: #{event_payload.timestamp} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` +Now that we have a new observer named `ExampleObserver`, we will need to start our observer before it will process any events. Observers default to `stopped`, so we need to call `start` on each observer before they will recieve events. Inside an initilizer is the recommended location to start your observers. + +```ruby +AetherObservatory::Examples::ExampleObserver.start +``` + +
+ Top +
+ +## Sending an Event to your Observer + +Now that you have all your classes created you can send events to your observer via the `create` method. + +```ruby +AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') +``` + +Calling create on your `ExampleEvent` class will trigger the `process` method in the `ExampleObserver` class. You should see the following logged output. + +```irb +irb(main):040:0> AetherObservatory::Examples::ExampleEvent.create(message: 'hello world') + ************************************ + Event processed: + Name: "talkbox.example1" + Message: hello world + Timestamp: 2024-05-23 15:17:16 UTC + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="hello world">, "timestamp"=>#, @name="timestamp", @value_before_type_cast=#, @type=#, @original_attribute=nil, @memoized_value_before_type_cast=Thu, 23 May 2024 15:17:16.082153128 UTC +00:00, @value=Thu, 23 May 2024 15:17:16.082153128 UTC +00:00>}>> + ************************************ +[AetherObservatory::Examples::ExampleEvent] Create event for topic: [talkbox.example1] +=> nil +``` + +
+ Top +
+ +## Stopping Observers + +To stop your observer from processing events you can call the `stop` method on your observer class. This stops only that observer class from processing events. + +```ruby +AetherObservatory::Examples::ExampleObserver.stop +``` + +
+ Top +
+ +## Using Dynamic Event Names + +Create a new class called `RandomEvent` that extends `ApplicationEvent`. Then pass a block to the `event_name` method. This allows you to dynamiclly select your topic at the time of event creation. + +*Note: [ApplicationEvent](#creating-events) class was created at the beginning of this guide.* + +```ruby +module AetherObservatory + module Examples + class RandomEvent < AetherObservatory::Examples::ApplicationEvent + event_name { select_a_topic_at_random } + + attribute :message + + private + + def select_a_topic_at_random + %w(test support customer).sample + end + end + end +end +``` + +You can now create a few events with your new class using the `create` method of that class. + +```ruby +AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +``` + +As you can see from the following output a random event name is selected each time you call `create`. + +```irb +irb(main):078:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.support] +=> nil +irb(main):079:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.test] +=> nil +irb(main):080:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.support] +=> nil +irb(main):081:0> AetherObservatory::Examples::RandomEvent.create(message: 'hello world') +[AetherObservatory::Examples::RandomEvent] Create event for topic: [talkbox.customer] +=> nil +``` + +
+ Top +
+ +## Multiple Event Topics + +In this example we are going to create an event class that sends events to two different topics based on the `level` attribute from the event class. We are also going to make two observer classes that subscribe to different events based on their role in the system. + +*Note: [ApplicationEvent](#creating-events) class was created at the beginning of this guide.* + +We first create the `TalkboxCallQueueEvent` class. This class will send each event to the `talkbox.call_queues.events.all` topic and to the `level` scoped topic. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallQueueEvent < AetherObservatory::Examples::ApplicationEvent + event_name 'call_queues.events.all' + event_name { "call_queues.events.#{level}" } + + attribute :level, default: 'info' + end + end +end +``` + +The new `TalkboxCallQueueEvent` class will send all events to the `all` topic. However the events will also be sent to their specific event `level` scoped topic. This allows us to have one observer logging call history and a second observer that handles events with the scoped `level` or error for topic `talkbox.call_queues.events.error`. + +Next we need to create a new class called `TalkboxCallHistoryObserver`. This observer will subscribe to the `talkbox.call_queues.events.all` topic. This classes function is to record all call queue events. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallHistoryObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.call_queues.events.all' + + delegate :level, to: :event_payload + + def process + puts <<-EVENT + ************************************ + Event processed: + Name: #{event_name.inspect} + Level: #{event_payload.level} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` + +Next we need a class called `TalkboxCallErrorObserver`. This class only subscribes to the `talkbox.call_queues.events.error` topic. It only cares about `error` level events and nothing else. + +```ruby +module AetherObservatory + module Examples + class TalkboxCallErrorObserver < AetherObservatory::ObserverBase + subscribe_to 'talkbox.call_queues.events.error' + + def process + puts <<-EVENT + ************************************ + Error Event processed: + Name: #{event_name.inspect} + Level: #{event_payload.level} + Event Payload: #{event_payload.inspect} + ************************************ + EVENT + end + end + end +end +``` + +We need to be sure to start our new observers before they will recieve any events. + +```ruby +AetherObservatory::Examples::TalkboxCallHistoryObserver.start +AetherObservatory::Examples::TalkboxCallErrorObserver.start +``` + +Finally we are ready to create a new event and see what happens. First we create an event with a default level. + +```ruby +AetherObservatory::Examples::TalkboxCallQueueEvent.create +``` + +Running the create with no parameters will have a default level of `info`. You will see the following output. + +```irb +irb(main):058:0> AetherObservatory::Examples::TalkboxCallQueueEvent.create + ************************************ + Event processed: + Name: "talkbox.call_queues.events.all" + Level: info + Event Payload: ##, @original_attribute=nil, @value="info">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.all] +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.info] +=> nil +``` + +Next we will try creating a new event but this time we set the `level` to `error`. + +```ruby +AetherObservatory::Examples::TalkboxCallQueueEvent.create(level: 'error') +``` + +As you can see from the output, setting the `level` to `error` will send an event to both classes. + +```irb +irb(main):059:0> AetherObservatory::Examples::TalkboxCallQueueEvent.create(level: 'error') + ************************************ + Event processed: + Name: "talkbox.call_queues.events.all" + Level: error + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="error">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.all] + ************************************ + Error Event processed: + Name: "talkbox.call_queues.events.error" + Level: error + Event Payload: ##, @original_attribute=#, @original_attribute=nil>, @value="error">}>> + ************************************ +[AetherObservatory::Examples::TalkboxCallQueueEvent] Create event for topic: [talkbox.call_queues.events.error] +=> nil +``` + +
+ Top +
diff --git a/packages/aether_observatory/lib/aether_observatory/configuration.rb b/packages/aether_observatory/lib/aether_observatory/configuration.rb new file mode 100644 index 00000000..e267b28c --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory/configuration.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module AetherObservatory + module Configuration + include ActiveSupport::Configurable + + config_accessor(:logger) do + defined?(Rails) ? Rails.logger : Logger.new($stdout) + end + end +end diff --git a/packages/aether_observatory/lib/aether_observatory/event_base.rb b/packages/aether_observatory/lib/aether_observatory/event_base.rb new file mode 100644 index 00000000..2ba540c5 --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory/event_base.rb @@ -0,0 +1,66 @@ +# frozen_string_literal: true + +require "active_model" + +module AetherObservatory + class EventBase + include ActiveModel::AttributeAssignment + include ActiveModel::Attributes + + class << self + def inherited(subclass) + super + subclass.event_prefix(&event_prefix) + end + + def create(**attributes) + event = new(**attributes) + event_names_with_prefix.each do |event_name_parts| + event_name = event_name_parts.filter_map do |part| + event.instance_exec(&part) unless part.nil? + end.join(".") + logger.debug("[#{name}] Create event for topic: [#{event_name}]") + ActiveSupport::Notifications.instrument(event_name, event) + end + + nil + end + + def event_prefix(value = nil, &block) + @event_prefix = -> { value } if value.present? + @event_prefix = block if block.present? + + @event_prefix + end + + def event_name(value = nil, &block) + event_names << -> { value } if value.present? + event_names << block if block.present? + + nil + end + + def event_names_with_prefix + event_names.map { |event_name| [event_prefix, event_name] } + end + + def event_names + @event_names ||= [] + end + + def logger(value = nil) + @logger = value if value.present? + + @logger || AetherObservatory.config.logger + end + end + + delegate :event_name, to: "self.class" + delegate :logger, to: "self.class" + + def initialize(attributes = {}) + super() + assign_attributes(attributes) if attributes + end + end +end diff --git a/packages/aether_observatory/lib/aether_observatory/observer_base.rb b/packages/aether_observatory/lib/aether_observatory/observer_base.rb new file mode 100644 index 00000000..5949b7de --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory/observer_base.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +module AetherObservatory + class ObserverBase + class << self + def inherited(subclass) + super + subclass.instance_variable_set(:@subscribed_topics, Set.new) + subclass.instance_variable_set(:@state, :stopped) + subclass.instance_variable_set(:@subscriptions, {}) + end + + def start + return if started? + + logger.debug("[#{name}] Starting") + + subscribed_to.each do |topic| + next if subscriptions.include?(topic) + + register_subscription_to(topic) + end + + self.state = :started + end + + def stop + return if stopped? + + logger.debug("[#{name}] Stopping") + + subscriptions.each_key do |topic| + unregister_subscription_to(topic) + end + + self.state = :stopped + end + + def subscribe_to(topic) + subscribed_topics.add(topic) + + return if stopped? + + register_subscription_to(topic) + end + + def unsubscribe_from(topic) + subscribed_topics.delete(topic) + + return if stopped? + + unregister_subscription_to(topic) + end + + def subscribed_to + subscribed_topics.to_a + end + + def started? + state == :started + end + + def stopped? + state == :stopped + end + + private + + attr_reader :subscribed_topics, :subscriptions + attr_accessor :state + + def register_subscription_to(topic) + return if subscriptions.include?(topic) + + logger.debug("[#{name}] Registering subscription to topic: #{topic.inspect}") + + subscriptions[topic] = ActiveSupport::Notifications.subscribe(topic) do |*args| + name.constantize.new(ActiveSupport::Notifications::Event.new(*args)).process + end + end + + def unregister_subscription_to(topic) + return if subscriptions.exclude?(topic) + + logger.debug("[#{name}] Unregistering subscription to topic: #{topic.inspect}") + + ActiveSupport::Notifications.unsubscribe(subscriptions.delete(topic)) + end + + def logger(value = nil) + @logger = value if value.present? + + @logger || AetherObservatory.config.logger + end + end + + attr_accessor :event + + def initialize(event) + self.event = event + end + + delegate :name, to: :event, prefix: true + delegate :payload, to: :event, prefix: true + end +end diff --git a/packages/aether_observatory/lib/aether_observatory/version.rb b/packages/aether_observatory/lib/aether_observatory/version.rb new file mode 100644 index 00000000..10d6e7d5 --- /dev/null +++ b/packages/aether_observatory/lib/aether_observatory/version.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module AetherObservatory + VERSION = "0.0.1" +end diff --git a/packages/aether_observatory/mkdocs.yml b/packages/aether_observatory/mkdocs.yml new file mode 100644 index 00000000..2229ed00 --- /dev/null +++ b/packages/aether_observatory/mkdocs.yml @@ -0,0 +1,6 @@ +site_name: AetherObservatory +nav: + - "Home": "README.md" + - "Changelog": "CHANGELOG.md" +plugins: + - techdocs-core diff --git a/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb new file mode 100644 index 00000000..2886ee3d --- /dev/null +++ b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb @@ -0,0 +1,131 @@ +# frozen_string_literal: true + +require "spec_helper" + +module AetherObservatory + RSpec.describe EventBase do + after(:each) { teardown } + + describe ".create" do + it "sends event to a single observer" do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + observer = + a_started_observer( + name: "zero", + listening_to: ["#{prefix}.zero"] + ) + + # When + event.create(message: "message") + + # Then + expect(observer.returned_payload.message).to eq("message") + end + + it "sends event to multiple observers", :aggregate_failures do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + observer_zero = + a_started_observer( + name: "zero", + listening_to: ["#{prefix}.zero"] + ) + observer_both = + a_started_observer( + name: "both", + listening_to: ["#{prefix}.zero", "#{prefix}.one"] + ) + + # When + event.create(message: "message") + + # Then + expect(observer_zero.returned_payload.message).to eq("message") + expect(observer_both.returned_payload.message).to eq("message") + end + + it "sends event to only one of multiple observers", :aggregate_failures do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "one", prefix: prefix) + observer_zero = + a_started_observer( + name: "zero", + listening_to: ["#{prefix}.zero"] + ) + observer_both = + a_started_observer( + name: "both", + listening_to: ["#{prefix}.zero", "#{prefix}.one"] + ) + + # When + event.create(message: "message") + + # Then + expect(observer_zero.returned_payload).to eq(nil) + expect(observer_both.returned_payload.message).to eq("message") + end + + context "without a prefix" do + it "processes a single event" do + # Given + event = a_fake_event(named: "zero", prefix: nil) + observer = + a_started_observer( + name: "zero", + listening_to: ["zero"] + ) + + # When + event.create(message: "message") + + # Then + expect(observer.returned_payload.message).to eq("message") + end + end + end + + private + + def a_fake_event(prefix:, named: "event_name") + stub_const( + "FakeEventTopic#{named.capitalize}", + Class.new(EventBase) do + attribute :message + event_prefix prefix if prefix.present? + event_name { named } + end + ) + end + + def a_started_observer(**kwargs) + a_fake_observer(**kwargs).tap(&:start) + end + + def a_fake_observer(name:, listening_to: []) + stub_const( + name.classify, + Class.new(ObserverBase) do + class << self + attr_accessor :returned_payload + end + + listening_to.each { |event_name| subscribe_to(event_name) } + + def process + self.class.returned_payload = event_payload + end + end + ) + end + + def teardown + ActiveSupport::Notifications.notifier = + ActiveSupport::Notifications::Fanout.new + end + end +end diff --git a/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb b/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb new file mode 100644 index 00000000..01758f1a --- /dev/null +++ b/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +require "spec_helper" + +module AetherObservatory + RSpec.describe ObserverBase do + after(:each) { teardown } + + describe "#process" do + it "processes a single event" do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + observer = a_fake_observer(listening_to: ["#{prefix}.zero"]) + + # When + observer.start + event.create(message: "message") + + # Then + expect(observer.returned_payload.message).to eq("message") + end + + it "processed multiple events", :aggregate_failures do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + other_event = a_fake_event(named: "one", prefix: prefix) + observer = a_fake_observer(listening_to: ["#{prefix}.zero", "#{prefix}.one"]) + + # When + observer.start + event.create(message: "message zero") + + # Then + expect(observer.returned_payload.message).to eq("message zero") + + # When + other_event.create(message: "message one") + + # Then + expect(observer.returned_payload.message).to eq("message one") + end + end + + describe "#stop" do + it "event is not processed" do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + observer = a_fake_observer(listening_to: ["#{prefix}.zero"]) + + # When + observer.stop + event.create(message: "message") + + # Then + expect(observer.returned_payload).to eq(nil) + end + end + + describe "#start" do + it "event is processed" do + # Given + prefix = "fake_prefix" + event = a_fake_event(named: "zero", prefix: prefix) + observer = a_fake_observer(listening_to: ["#{prefix}.zero"]) + + # When + observer.start + event.create(message: "message") + + # Then + expect(observer.returned_payload.message).to eq("message") + end + end + + private + + def a_fake_event(named: "event_name", prefix: "fake_test_topic") + stub_const( + "FakeEventTopic#{named.capitalize}", + Class.new(EventBase) do + attribute :message + event_prefix prefix + event_name { named } + end + ) + end + + def a_fake_observer(listening_to: []) + stub_const( + "FakeObserver", + Class.new(ObserverBase) do + class << self + attr_accessor :returned_payload + end + + listening_to.each { |event_name| subscribe_to(event_name) } + + def process + self.class.returned_payload = event_payload + end + end + ) + end + + def teardown + ActiveSupport::Notifications.notifier = + ActiveSupport::Notifications::Fanout.new + end + end +end diff --git a/packages/aether_observatory/spec/spec_helper.rb b/packages/aether_observatory/spec/spec_helper.rb new file mode 100644 index 00000000..580be07f --- /dev/null +++ b/packages/aether_observatory/spec/spec_helper.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +$LOAD_PATH.unshift File.expand_path("../lib", __dir__) +require "aether_observatory" +require "pry-byebug" + +RSpec.configure do |config| + if ENV["CI"] + config.before(:example, :focus) { raise "Should not commit focused specs" } + else + config.filter_run :focus + config.run_all_when_everything_filtered = true + end + config.warnings = false + + config.default_formatter = "doc" if config.files_to_run.one? + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed + + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # Enable only the newer, non-monkey-patching expect syntax. + # For more details, see: + # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax + expectations.syntax = :expect + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Enable only the newer, non-monkey-patching expect syntax. + # For more details, see: + # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + mocks.syntax = :expect + + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended. + mocks.verify_partial_doubles = false + end +end From e10ac7cd9b549d5902d115bbcebc978f5ee8a992 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 12 Dec 2024 11:00:25 -0500 Subject: [PATCH 02/14] YNGJ-1058: add to github actions and portal --- .github/workflows/aether_observatory.yml | 13 +++++++++++++ .../aether_observatory.gemspec | 4 ++-- portal.yml | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/aether_observatory.yml diff --git a/.github/workflows/aether_observatory.yml b/.github/workflows/aether_observatory.yml new file mode 100644 index 00000000..eab8f526 --- /dev/null +++ b/.github/workflows/aether_observatory.yml @@ -0,0 +1,13 @@ +name: aether_observatory + +on: + push: + +jobs: + ruby: + uses: powerhome/github-actions-workflows/.github/workflows/ruby-gem.yml@main + with: + package: ${{ github.workflow }} + workdir: "packages/${{ github.workflow }}" + ruby: '["3.0","3.1","3.2","3.3"]' + secrets: inherit diff --git a/packages/aether_observatory/aether_observatory.gemspec b/packages/aether_observatory/aether_observatory.gemspec index bd6ccbb4..bc7dc833 100644 --- a/packages/aether_observatory/aether_observatory.gemspec +++ b/packages/aether_observatory/aether_observatory.gemspec @@ -28,8 +28,8 @@ Gem::Specification.new do |spec| end spec.require_paths = ["lib"] - spec.add_dependency "activemodel", "~> 6.0", ">= 6.0.6.1" - spec.add_dependency "activesupport", "~> 6.0", ">= 6.0.6.1" + spec.add_dependency "activemodel", ">= 6.0.6.1" + spec.add_dependency "activesupport", ">= 6.0.6.1" spec.add_development_dependency "appraisal", "~> 2.5.0" spec.add_development_dependency "bundler", "~> 2.1" diff --git a/portal.yml b/portal.yml index bc2cc0e3..739886a9 100644 --- a/portal.yml +++ b/portal.yml @@ -1,6 +1,23 @@ --- apiVersion: backstage.io/v1alpha1 kind: Component +metadata: + name: aether_observatory + title: Aether Observatory + description: >- + Aether Observatory provides a event subscription system, based on + ActiveSupport::Notification. + annotations: + backstage.io/techdocs-ref: dir:packages/audit_tracker +spec: + type: library + owner: unbreakable + lifecycle: production + subcomponentOf: power-tools + system: power-application-framework +--- +apiVersion: backstage.io/v1alpha1 +kind: Component metadata: name: power-tools title: PowerTools From 60821a83e2a20877a38611d01df6aad24b9d8dbd Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Mon, 16 Dec 2024 13:29:58 -0500 Subject: [PATCH 03/14] YNGJ-1058: add to github actions and portal --- portal.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portal.yml b/portal.yml index 739886a9..f60d0bf8 100644 --- a/portal.yml +++ b/portal.yml @@ -8,7 +8,7 @@ metadata: Aether Observatory provides a event subscription system, based on ActiveSupport::Notification. annotations: - backstage.io/techdocs-ref: dir:packages/audit_tracker + backstage.io/techdocs-ref: dir:packages/aether_observatory spec: type: library owner: unbreakable From 0b9818b28c3b5d61a547a9ed40a00e09827b8789 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 10:16:08 -0500 Subject: [PATCH 04/14] YNGJ-1058: Add Appraisal config --- .github/workflows/aether_observatory.yml | 1 + packages/aether_observatory/Appraisals | 17 + .../gemfiles/rails_6_0.gemfile | 8 + .../gemfiles/rails_6_0.gemfile.lock | 261 +++++++++++++++ .../gemfiles/rails_6_1.gemfile | 8 + .../gemfiles/rails_6_1.gemfile.lock | 278 ++++++++++++++++ .../gemfiles/rails_7_0.gemfile | 8 + .../gemfiles/rails_7_0.gemfile.lock | 277 ++++++++++++++++ .../gemfiles/rails_7_1.gemfile | 8 + .../gemfiles/rails_7_1.gemfile.lock | 308 ++++++++++++++++++ 10 files changed, 1174 insertions(+) create mode 100644 packages/aether_observatory/Appraisals create mode 100644 packages/aether_observatory/gemfiles/rails_6_0.gemfile create mode 100644 packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock create mode 100644 packages/aether_observatory/gemfiles/rails_6_1.gemfile create mode 100644 packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock create mode 100644 packages/aether_observatory/gemfiles/rails_7_0.gemfile create mode 100644 packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock create mode 100644 packages/aether_observatory/gemfiles/rails_7_1.gemfile create mode 100644 packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock diff --git a/.github/workflows/aether_observatory.yml b/.github/workflows/aether_observatory.yml index eab8f526..cccc5c1f 100644 --- a/.github/workflows/aether_observatory.yml +++ b/.github/workflows/aether_observatory.yml @@ -9,5 +9,6 @@ jobs: with: package: ${{ github.workflow }} workdir: "packages/${{ github.workflow }}" + gemfiles: "['gemfiles/rails_6_0.gemfile','gemfiles/rails_6_1.gemfile','gemfiles/rails_7_0.gemfile','gemfiles/rails_7_1.gemfile']" ruby: '["3.0","3.1","3.2","3.3"]' secrets: inherit diff --git a/packages/aether_observatory/Appraisals b/packages/aether_observatory/Appraisals new file mode 100644 index 00000000..01b78bf8 --- /dev/null +++ b/packages/aether_observatory/Appraisals @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +appraise "rails-6-0" do + gem "rails", "~> 6.0.6" +end + +appraise "rails-6-1" do + gem "rails", "~> 6.1.7" +end + +appraise "rails-7-0" do + gem "rails", "~> 7.0.8" +end + +appraise "rails-7-1" do + gem "rails", "~> 7.1.3" +end diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile b/packages/aether_observatory/gemfiles/rails_6_0.gemfile new file mode 100644 index 00000000..8153d26b --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rubocop-powerhome", path: "../../rubocop-powerhome" +gem "rails", "~> 6.0.6" + +gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock new file mode 100644 index 00000000..7b49f7c4 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock @@ -0,0 +1,261 @@ +PATH + remote: ../../rubocop-powerhome + specs: + rubocop-powerhome (0.5.3) + rubocop (= 1.66.1) + rubocop-performance + rubocop-rails + rubocop-rake + rubocop-rspec + +PATH + remote: .. + specs: + aether_observatory (0.0.1) + activemodel (>= 6.0.6.1) + activesupport (>= 6.0.6.1) + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.0.6.1) + actionpack (= 6.0.6.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.0.6.1) + actionpack (= 6.0.6.1) + activejob (= 6.0.6.1) + activerecord (= 6.0.6.1) + activestorage (= 6.0.6.1) + activesupport (= 6.0.6.1) + mail (>= 2.7.1) + actionmailer (6.0.6.1) + actionpack (= 6.0.6.1) + actionview (= 6.0.6.1) + activejob (= 6.0.6.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.0.6.1) + actionview (= 6.0.6.1) + activesupport (= 6.0.6.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.0.6.1) + actionpack (= 6.0.6.1) + activerecord (= 6.0.6.1) + activestorage (= 6.0.6.1) + activesupport (= 6.0.6.1) + nokogiri (>= 1.8.5) + actionview (6.0.6.1) + activesupport (= 6.0.6.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.0.6.1) + activesupport (= 6.0.6.1) + globalid (>= 0.3.6) + activemodel (6.0.6.1) + activesupport (= 6.0.6.1) + activerecord (6.0.6.1) + activemodel (= 6.0.6.1) + activesupport (= 6.0.6.1) + activestorage (6.0.6.1) + actionpack (= 6.0.6.1) + activejob (= 6.0.6.1) + activerecord (= 6.0.6.1) + marcel (~> 1.0) + activesupport (6.0.6.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + builder (3.3.0) + byebug (11.1.3) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crass (1.0.6) + csv (3.3.0) + date (3.4.1) + diff-lcs (1.5.1) + docile (1.1.5) + erubi (1.13.0) + globalid (1.1.0) + activesupport (>= 5.0) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + json (2.9.0) + language_server-protocol (3.17.0.3) + license_finder (7.2.1) + bundler + csv (~> 3.2) + rubyzip (>= 1, < 3) + thor (~> 1.2) + tomlrb (>= 1.3, < 2.1) + with_env (= 1.1.0) + xml-simple (~> 1.1.9) + loofah (2.23.1) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.4) + net-imap (0.5.1) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.4) + nokogiri (1.17.1-arm64-darwin) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.6.0) + ast (~> 2.4.1) + racc + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + racc (1.8.1) + rack (2.2.10) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.0.6.1) + actioncable (= 6.0.6.1) + actionmailbox (= 6.0.6.1) + actionmailer (= 6.0.6.1) + actionpack (= 6.0.6.1) + actiontext (= 6.0.6.1) + actionview (= 6.0.6.1) + activejob (= 6.0.6.1) + activemodel (= 6.0.6.1) + activerecord (= 6.0.6.1) + activestorage (= 6.0.6.1) + activesupport (= 6.0.6.1) + bundler (>= 1.3.0) + railties (= 6.0.6.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.1) + loofah (~> 2.21) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (6.0.6.1) + actionpack (= 6.0.6.1) + activesupport (= 6.0.6.1) + method_source + rake (>= 0.8.7) + thor (>= 0.20.3, < 2.0) + rainbow (2.2.2) + rake + rake (13.2.1) + regexp_parser (2.9.3) + rexml (3.3.9) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.2) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + rubocop (1.66.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.4, < 3.0) + rubocop-ast (>= 1.32.2, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.36.2) + parser (>= 3.3.1.0) + rubocop-performance (1.23.0) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rails (2.27.0) + activesupport (>= 4.2.0) + rack (>= 1.1) + rubocop (>= 1.52.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rake (0.6.0) + rubocop (~> 1.0) + rubocop-rspec (3.2.0) + rubocop (~> 1.61) + ruby-progressbar (1.13.0) + rubyzip (2.3.2) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.2) + thread_safe (0.3.6) + timeout (0.4.2) + tomlrb (2.0.3) + tzinfo (1.2.11) + thread_safe (~> 0.1) + unicode-display_width (2.6.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + with_env (1.1.0) + xml-simple (1.1.9) + rexml + yard (0.9.21) + zeitwerk (2.7.1) + +PLATFORMS + arm64-darwin + +DEPENDENCIES + aether_observatory! + appraisal (~> 2.5.0) + bundler (~> 2.1) + license_finder (~> 7.0) + pry (>= 0.14) + pry-byebug (= 3.10.1) + rails (~> 6.0.6) + rake (~> 13.0) + rspec (~> 3.0) + rubocop-powerhome! + simplecov (= 0.15.1) + yard (= 0.9.21) + +BUNDLED WITH + 2.5.22 diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile b/packages/aether_observatory/gemfiles/rails_6_1.gemfile new file mode 100644 index 00000000..1323c345 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rubocop-powerhome", path: "../../rubocop-powerhome" +gem "rails", "~> 6.1.7" + +gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock new file mode 100644 index 00000000..3e812b10 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock @@ -0,0 +1,278 @@ +PATH + remote: ../../rubocop-powerhome + specs: + rubocop-powerhome (0.5.3) + rubocop (= 1.66.1) + rubocop-performance + rubocop-rails + rubocop-rake + rubocop-rspec + +PATH + remote: .. + specs: + aether_observatory (0.0.1) + activemodel (>= 6.0.6.1) + activesupport (>= 6.0.6.1) + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.7) + actionpack (= 6.1.7.7) + activesupport (= 6.1.7.7) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.7) + actionpack (= 6.1.7.7) + activejob (= 6.1.7.7) + activerecord (= 6.1.7.7) + activestorage (= 6.1.7.7) + activesupport (= 6.1.7.7) + mail (>= 2.7.1) + actionmailer (6.1.7.7) + actionpack (= 6.1.7.7) + actionview (= 6.1.7.7) + activejob (= 6.1.7.7) + activesupport (= 6.1.7.7) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.7) + actionview (= 6.1.7.7) + activesupport (= 6.1.7.7) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.7) + actionpack (= 6.1.7.7) + activerecord (= 6.1.7.7) + activestorage (= 6.1.7.7) + activesupport (= 6.1.7.7) + nokogiri (>= 1.8.5) + actionview (6.1.7.7) + activesupport (= 6.1.7.7) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.7) + activesupport (= 6.1.7.7) + globalid (>= 0.3.6) + activemodel (6.1.7.7) + activesupport (= 6.1.7.7) + activerecord (6.1.7.7) + activemodel (= 6.1.7.7) + activesupport (= 6.1.7.7) + activestorage (6.1.7.7) + actionpack (= 6.1.7.7) + activejob (= 6.1.7.7) + activerecord (= 6.1.7.7) + activesupport (= 6.1.7.7) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + builder (3.3.0) + byebug (11.1.3) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crass (1.0.6) + csv (3.3.1) + date (3.4.1) + diff-lcs (1.5.1) + docile (1.1.5) + erubi (1.13.0) + globalid (1.2.1) + activesupport (>= 6.1) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + json (2.9.0) + language_server-protocol (3.17.0.3) + license_finder (7.2.1) + bundler + csv (~> 3.2) + rubyzip (>= 1, < 3) + thor (~> 1.2) + tomlrb (>= 1.3, < 2.1) + with_env (= 1.1.0) + xml-simple (~> 1.1.9) + loofah (2.23.1) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.4) + net-imap (0.5.2) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.4) + nokogiri (1.17.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86-linux) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-linux) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.6.0) + ast (~> 2.4.1) + racc + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + racc (1.8.1) + rack (2.2.10) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.7) + actioncable (= 6.1.7.7) + actionmailbox (= 6.1.7.7) + actionmailer (= 6.1.7.7) + actionpack (= 6.1.7.7) + actiontext (= 6.1.7.7) + actionview (= 6.1.7.7) + activejob (= 6.1.7.7) + activemodel (= 6.1.7.7) + activerecord (= 6.1.7.7) + activestorage (= 6.1.7.7) + activesupport (= 6.1.7.7) + bundler (>= 1.15.0) + railties (= 6.1.7.7) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.2) + loofah (~> 2.21) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (6.1.7.7) + actionpack (= 6.1.7.7) + activesupport (= 6.1.7.7) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.2.1) + regexp_parser (2.9.3) + rexml (3.4.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.2) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + rubocop (1.66.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.4, < 3.0) + rubocop-ast (>= 1.32.2, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.37.0) + parser (>= 3.3.1.0) + rubocop-performance (1.23.0) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rails (2.27.0) + activesupport (>= 4.2.0) + rack (>= 1.1) + rubocop (>= 1.52.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rake (0.6.0) + rubocop (~> 1.0) + rubocop-rspec (3.3.0) + rubocop (~> 1.61) + ruby-progressbar (1.13.0) + rubyzip (2.3.2) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.5.2) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + thor (1.3.2) + timeout (0.4.3) + tomlrb (2.0.3) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.6.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + with_env (1.1.0) + xml-simple (1.1.9) + rexml + yard (0.9.21) + zeitwerk (2.7.1) + +PLATFORMS + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux + +DEPENDENCIES + aether_observatory! + appraisal (~> 2.5.0) + bundler (~> 2.1) + license_finder (~> 7.0) + pry (>= 0.14) + pry-byebug (= 3.10.1) + rails (~> 6.1.7) + rake (~> 13.0) + rspec (~> 3.0) + rubocop-powerhome! + simplecov (= 0.15.1) + yard (= 0.9.21) + +BUNDLED WITH + 2.5.22 diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile b/packages/aether_observatory/gemfiles/rails_7_0.gemfile new file mode 100644 index 00000000..edbebc82 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rubocop-powerhome", path: "../../rubocop-powerhome" +gem "rails", "~> 7.0.8" + +gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock new file mode 100644 index 00000000..3843cc34 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock @@ -0,0 +1,277 @@ +PATH + remote: ../../rubocop-powerhome + specs: + rubocop-powerhome (0.5.3) + rubocop (= 1.66.1) + rubocop-performance + rubocop-rails + rubocop-rake + rubocop-rspec + +PATH + remote: .. + specs: + aether_observatory (0.0.1) + activemodel (>= 6.0.6.1) + activesupport (>= 6.0.6.1) + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.7) + actionpack (= 7.0.8.7) + activesupport (= 7.0.8.7) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.7) + actionpack (= 7.0.8.7) + activejob (= 7.0.8.7) + activerecord (= 7.0.8.7) + activestorage (= 7.0.8.7) + activesupport (= 7.0.8.7) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.7) + actionpack (= 7.0.8.7) + actionview (= 7.0.8.7) + activejob (= 7.0.8.7) + activesupport (= 7.0.8.7) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.7) + actionview (= 7.0.8.7) + activesupport (= 7.0.8.7) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.7) + actionpack (= 7.0.8.7) + activerecord (= 7.0.8.7) + activestorage (= 7.0.8.7) + activesupport (= 7.0.8.7) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.7) + activesupport (= 7.0.8.7) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.7) + activesupport (= 7.0.8.7) + globalid (>= 0.3.6) + activemodel (7.0.8.7) + activesupport (= 7.0.8.7) + activerecord (7.0.8.7) + activemodel (= 7.0.8.7) + activesupport (= 7.0.8.7) + activestorage (7.0.8.7) + actionpack (= 7.0.8.7) + activejob (= 7.0.8.7) + activerecord (= 7.0.8.7) + activesupport (= 7.0.8.7) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + builder (3.3.0) + byebug (11.1.3) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crass (1.0.6) + csv (3.3.1) + date (3.4.1) + diff-lcs (1.5.1) + docile (1.1.5) + erubi (1.13.0) + globalid (1.2.1) + activesupport (>= 6.1) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + json (2.9.0) + language_server-protocol (3.17.0.3) + license_finder (7.2.1) + bundler + csv (~> 3.2) + rubyzip (>= 1, < 3) + thor (~> 1.2) + tomlrb (>= 1.3, < 2.1) + with_env (= 1.1.0) + xml-simple (~> 1.1.9) + loofah (2.23.1) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.4) + net-imap (0.5.2) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.4) + nokogiri (1.17.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86-linux) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-linux) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.6.0) + ast (~> 2.4.1) + racc + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + racc (1.8.1) + rack (2.2.10) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.7) + actioncable (= 7.0.8.7) + actionmailbox (= 7.0.8.7) + actionmailer (= 7.0.8.7) + actionpack (= 7.0.8.7) + actiontext (= 7.0.8.7) + actionview (= 7.0.8.7) + activejob (= 7.0.8.7) + activemodel (= 7.0.8.7) + activerecord (= 7.0.8.7) + activestorage (= 7.0.8.7) + activesupport (= 7.0.8.7) + bundler (>= 1.15.0) + railties (= 7.0.8.7) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.2) + loofah (~> 2.21) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (7.0.8.7) + actionpack (= 7.0.8.7) + activesupport (= 7.0.8.7) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + regexp_parser (2.9.3) + rexml (3.4.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.2) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + rubocop (1.66.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.4, < 3.0) + rubocop-ast (>= 1.32.2, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.37.0) + parser (>= 3.3.1.0) + rubocop-performance (1.23.0) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rails (2.27.0) + activesupport (>= 4.2.0) + rack (>= 1.1) + rubocop (>= 1.52.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rake (0.6.0) + rubocop (~> 1.0) + rubocop-rspec (3.3.0) + rubocop (~> 1.61) + ruby-progressbar (1.13.0) + rubyzip (2.3.2) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + thor (1.3.2) + timeout (0.4.3) + tomlrb (2.0.3) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.6.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + with_env (1.1.0) + xml-simple (1.1.9) + rexml + yard (0.9.21) + zeitwerk (2.7.1) + +PLATFORMS + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux + +DEPENDENCIES + aether_observatory! + appraisal (~> 2.5.0) + bundler (~> 2.1) + license_finder (~> 7.0) + pry (>= 0.14) + pry-byebug (= 3.10.1) + rails (~> 7.0.8) + rake (~> 13.0) + rspec (~> 3.0) + rubocop-powerhome! + simplecov (= 0.15.1) + yard (= 0.9.21) + +BUNDLED WITH + 2.5.22 diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile b/packages/aether_observatory/gemfiles/rails_7_1.gemfile new file mode 100644 index 00000000..f420ee78 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rubocop-powerhome", path: "../../rubocop-powerhome" +gem "rails", "~> 7.1.3" + +gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock new file mode 100644 index 00000000..246cd106 --- /dev/null +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock @@ -0,0 +1,308 @@ +PATH + remote: ../../rubocop-powerhome + specs: + rubocop-powerhome (0.5.3) + rubocop (= 1.66.1) + rubocop-performance + rubocop-rails + rubocop-rake + rubocop-rspec + +PATH + remote: .. + specs: + aether_observatory (0.0.1) + activemodel (>= 6.0.6.1) + activesupport (>= 6.0.6.1) + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.2) + actionpack (= 7.1.3.2) + activesupport (= 7.1.3.2) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.2) + actionpack (= 7.1.3.2) + activejob (= 7.1.3.2) + activerecord (= 7.1.3.2) + activestorage (= 7.1.3.2) + activesupport (= 7.1.3.2) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.2) + actionpack (= 7.1.3.2) + actionview (= 7.1.3.2) + activejob (= 7.1.3.2) + activesupport (= 7.1.3.2) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.2) + actionview (= 7.1.3.2) + activesupport (= 7.1.3.2) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.2) + actionpack (= 7.1.3.2) + activerecord (= 7.1.3.2) + activestorage (= 7.1.3.2) + activesupport (= 7.1.3.2) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.2) + activesupport (= 7.1.3.2) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.2) + activesupport (= 7.1.3.2) + globalid (>= 0.3.6) + activemodel (7.1.3.2) + activesupport (= 7.1.3.2) + activerecord (7.1.3.2) + activemodel (= 7.1.3.2) + activesupport (= 7.1.3.2) + timeout (>= 0.4.0) + activestorage (7.1.3.2) + actionpack (= 7.1.3.2) + activejob (= 7.1.3.2) + activerecord (= 7.1.3.2) + activesupport (= 7.1.3.2) + marcel (~> 1.0) + activesupport (7.1.3.2) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + appraisal (2.5.0) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + bigdecimal (3.1.8) + builder (3.3.0) + byebug (11.1.3) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crass (1.0.6) + csv (3.3.1) + date (3.4.1) + diff-lcs (1.5.1) + docile (1.1.5) + drb (2.2.1) + erubi (1.13.0) + globalid (1.2.1) + activesupport (>= 6.1) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + io-console (0.8.0) + irb (1.14.2) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.9.0) + language_server-protocol (3.17.0.3) + license_finder (7.2.1) + bundler + csv (~> 3.2) + rubyzip (>= 1, < 3) + thor (~> 1.2) + tomlrb (>= 1.3, < 2.1) + with_env (= 1.1.0) + xml-simple (~> 1.1.9) + loofah (2.23.1) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.4) + mutex_m (0.3.0) + net-imap (0.5.2) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.4) + nokogiri (1.17.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86-linux) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-linux) + racc (~> 1.4) + parallel (1.26.3) + parser (3.3.6.0) + ast (~> 2.4.1) + racc + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + psych (5.2.1) + date + stringio + racc (1.8.1) + rack (3.1.8) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.2.1) + rack (>= 3) + rails (7.1.3.2) + actioncable (= 7.1.3.2) + actionmailbox (= 7.1.3.2) + actionmailer (= 7.1.3.2) + actionpack (= 7.1.3.2) + actiontext (= 7.1.3.2) + actionview (= 7.1.3.2) + activejob (= 7.1.3.2) + activemodel (= 7.1.3.2) + activerecord (= 7.1.3.2) + activestorage (= 7.1.3.2) + activesupport (= 7.1.3.2) + bundler (>= 1.15.0) + railties (= 7.1.3.2) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.2) + loofah (~> 2.21) + nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) + railties (7.1.3.2) + actionpack (= 7.1.3.2) + activesupport (= 7.1.3.2) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rdoc (6.9.1) + psych (>= 4.0.0) + regexp_parser (2.9.3) + reline (0.6.0) + io-console (~> 0.5) + rexml (3.4.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.2) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.2) + rubocop (1.66.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.4, < 3.0) + rubocop-ast (>= 1.32.2, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.37.0) + parser (>= 3.3.1.0) + rubocop-performance (1.23.0) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rails (2.27.0) + activesupport (>= 4.2.0) + rack (>= 1.1) + rubocop (>= 1.52.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rake (0.6.0) + rubocop (~> 1.0) + rubocop-rspec (3.3.0) + rubocop (~> 1.61) + ruby-progressbar (1.13.0) + rubyzip (2.3.2) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + stringio (3.1.2) + thor (1.3.2) + timeout (0.4.3) + tomlrb (2.0.3) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.6.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + with_env (1.1.0) + xml-simple (1.1.9) + rexml + yard (0.9.21) + zeitwerk (2.7.1) + +PLATFORMS + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux + +DEPENDENCIES + aether_observatory! + appraisal (~> 2.5.0) + bundler (~> 2.1) + license_finder (~> 7.0) + pry (>= 0.14) + pry-byebug (= 3.10.1) + rails (~> 7.1.3) + rake (~> 13.0) + rspec (~> 3.0) + rubocop-powerhome! + simplecov (= 0.15.1) + yard (= 0.9.21) + +BUNDLED WITH + 2.5.22 From c6eedbb398d597a26caf9a7de97772ca2ea5b28d Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 10:20:20 -0500 Subject: [PATCH 05/14] YNGJ-1058: Be more explicit about teardown. Use public interface rather than reaching into ActiveSupport::Notifications --- .../aether_observatory/event_base_spec.rb | 21 ++++++++++++------- .../aether_observatory/observer_base_spec.rb | 19 ++++++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb index 2886ee3d..12082b77 100644 --- a/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb +++ b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb @@ -4,8 +4,6 @@ module AetherObservatory RSpec.describe EventBase do - after(:each) { teardown } - describe ".create" do it "sends event to a single observer" do # Given @@ -22,6 +20,9 @@ module AetherObservatory # Then expect(observer.returned_payload.message).to eq("message") + + # Teardown + observer.stop end it "sends event to multiple observers", :aggregate_failures do @@ -45,6 +46,10 @@ module AetherObservatory # Then expect(observer_zero.returned_payload.message).to eq("message") expect(observer_both.returned_payload.message).to eq("message") + + # Teardown + observer_zero.stop + observer_both.stop end it "sends event to only one of multiple observers", :aggregate_failures do @@ -68,6 +73,10 @@ module AetherObservatory # Then expect(observer_zero.returned_payload).to eq(nil) expect(observer_both.returned_payload.message).to eq("message") + + # Teardown + observer_zero.stop + observer_both.stop end context "without a prefix" do @@ -85,6 +94,9 @@ module AetherObservatory # Then expect(observer.returned_payload.message).to eq("message") + + # Teardown + observer.stop end end end @@ -122,10 +134,5 @@ def process end ) end - - def teardown - ActiveSupport::Notifications.notifier = - ActiveSupport::Notifications::Fanout.new - end end end diff --git a/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb b/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb index 01758f1a..d1d9a587 100644 --- a/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb +++ b/packages/aether_observatory/spec/aether_observatory/observer_base_spec.rb @@ -4,8 +4,6 @@ module AetherObservatory RSpec.describe ObserverBase do - after(:each) { teardown } - describe "#process" do it "processes a single event" do # Given @@ -19,6 +17,9 @@ module AetherObservatory # Then expect(observer.returned_payload.message).to eq("message") + + # Teardown + observer.stop end it "processed multiple events", :aggregate_failures do @@ -40,6 +41,9 @@ module AetherObservatory # Then expect(observer.returned_payload.message).to eq("message one") + + # Teardown + observer.stop end end @@ -56,6 +60,9 @@ module AetherObservatory # Then expect(observer.returned_payload).to eq(nil) + + # Teardown + observer.stop end end @@ -72,6 +79,9 @@ module AetherObservatory # Then expect(observer.returned_payload.message).to eq("message") + + # Teardown + observer.stop end end @@ -104,10 +114,5 @@ def process end ) end - - def teardown - ActiveSupport::Notifications.notifier = - ActiveSupport::Notifications::Fanout.new - end end end From cf21e9049f1adaa70accff2dcf343625f9abbae7 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 10:24:57 -0500 Subject: [PATCH 06/14] YNGJ-1058: pre-release gem --- packages/aether_observatory/lib/aether_observatory/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/aether_observatory/lib/aether_observatory/version.rb b/packages/aether_observatory/lib/aether_observatory/version.rb index 10d6e7d5..6613ba1d 100644 --- a/packages/aether_observatory/lib/aether_observatory/version.rb +++ b/packages/aether_observatory/lib/aether_observatory/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module AetherObservatory - VERSION = "0.0.1" + VERSION = "0.0.1pre1" end From de5c7aad20afa553b3138a22a81d7312b4aa3530 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 10:49:18 -0500 Subject: [PATCH 07/14] YNGJ-1058: v0.0.1pre2 --- .../gemfiles/rails_6_0.gemfile.lock | 36 ++++-- .../gemfiles/rails_6_1.gemfile.lock | 108 ++++++++--------- .../gemfiles/rails_7_0.gemfile.lock | 2 +- .../gemfiles/rails_7_1.gemfile.lock | 114 +++++++++--------- .../lib/aether_observatory/version.rb | 2 +- 5 files changed, 141 insertions(+), 121 deletions(-) diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock index 7b49f7c4..6989692f 100644 --- a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1) + aether_observatory (0.0.1pre2) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) @@ -83,7 +83,7 @@ GEM coderay (1.1.3) concurrent-ruby (1.3.4) crass (1.0.6) - csv (3.3.0) + csv (3.3.1) date (3.4.1) diff-lcs (1.5.1) docile (1.1.5) @@ -114,7 +114,7 @@ GEM method_source (1.1.0) mini_mime (1.1.5) minitest (5.25.4) - net-imap (0.5.1) + net-imap (0.5.2) date net-protocol net-pop (0.1.2) @@ -124,7 +124,17 @@ GEM net-smtp (0.5.0) net-protocol nio4r (2.7.4) - nokogiri (1.17.1-arm64-darwin) + nokogiri (1.17.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm-linux) + racc (~> 1.4) + nokogiri (1.17.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86-linux) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.17.2-x86_64-linux) racc (~> 1.4) parallel (1.26.3) parser (3.3.6.0) @@ -159,7 +169,7 @@ GEM activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.1) + rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) railties (6.0.6.1) @@ -168,11 +178,10 @@ GEM method_source rake (>= 0.8.7) thor (>= 0.20.3, < 2.0) - rainbow (2.2.2) - rake + rainbow (3.1.1) rake (13.2.1) regexp_parser (2.9.3) - rexml (3.3.9) + rexml (3.4.0) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) @@ -196,7 +205,7 @@ GEM rubocop-ast (>= 1.32.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.36.2) + rubocop-ast (1.37.0) parser (>= 3.3.1.0) rubocop-performance (1.23.0) rubocop (>= 1.48.1, < 2.0) @@ -208,7 +217,7 @@ GEM rubocop-ast (>= 1.31.1, < 2.0) rubocop-rake (0.6.0) rubocop (~> 1.0) - rubocop-rspec (3.2.0) + rubocop-rspec (3.3.0) rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) @@ -226,7 +235,7 @@ GEM sprockets (>= 3.0.0) thor (1.3.2) thread_safe (0.3.6) - timeout (0.4.2) + timeout (0.4.3) tomlrb (2.0.3) tzinfo (1.2.11) thread_safe (~> 0.1) @@ -241,7 +250,12 @@ GEM zeitwerk (2.7.1) PLATFORMS + aarch64-linux + arm-linux arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux DEPENDENCIES aether_observatory! diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock index 3e812b10..f2cfdbff 100644 --- a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock @@ -11,67 +11,67 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1) + aether_observatory (0.0.1pre2) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) GEM remote: https://rubygems.org/ specs: - actioncable (6.1.7.7) - actionpack (= 6.1.7.7) - activesupport (= 6.1.7.7) + actioncable (6.1.7.10) + actionpack (= 6.1.7.10) + activesupport (= 6.1.7.10) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.7.7) - actionpack (= 6.1.7.7) - activejob (= 6.1.7.7) - activerecord (= 6.1.7.7) - activestorage (= 6.1.7.7) - activesupport (= 6.1.7.7) + actionmailbox (6.1.7.10) + actionpack (= 6.1.7.10) + activejob (= 6.1.7.10) + activerecord (= 6.1.7.10) + activestorage (= 6.1.7.10) + activesupport (= 6.1.7.10) mail (>= 2.7.1) - actionmailer (6.1.7.7) - actionpack (= 6.1.7.7) - actionview (= 6.1.7.7) - activejob (= 6.1.7.7) - activesupport (= 6.1.7.7) + actionmailer (6.1.7.10) + actionpack (= 6.1.7.10) + actionview (= 6.1.7.10) + activejob (= 6.1.7.10) + activesupport (= 6.1.7.10) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.7.7) - actionview (= 6.1.7.7) - activesupport (= 6.1.7.7) + actionpack (6.1.7.10) + actionview (= 6.1.7.10) + activesupport (= 6.1.7.10) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.7.7) - actionpack (= 6.1.7.7) - activerecord (= 6.1.7.7) - activestorage (= 6.1.7.7) - activesupport (= 6.1.7.7) + actiontext (6.1.7.10) + actionpack (= 6.1.7.10) + activerecord (= 6.1.7.10) + activestorage (= 6.1.7.10) + activesupport (= 6.1.7.10) nokogiri (>= 1.8.5) - actionview (6.1.7.7) - activesupport (= 6.1.7.7) + actionview (6.1.7.10) + activesupport (= 6.1.7.10) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.1.7.7) - activesupport (= 6.1.7.7) + activejob (6.1.7.10) + activesupport (= 6.1.7.10) globalid (>= 0.3.6) - activemodel (6.1.7.7) - activesupport (= 6.1.7.7) - activerecord (6.1.7.7) - activemodel (= 6.1.7.7) - activesupport (= 6.1.7.7) - activestorage (6.1.7.7) - actionpack (= 6.1.7.7) - activejob (= 6.1.7.7) - activerecord (= 6.1.7.7) - activesupport (= 6.1.7.7) + activemodel (6.1.7.10) + activesupport (= 6.1.7.10) + activerecord (6.1.7.10) + activemodel (= 6.1.7.10) + activesupport (= 6.1.7.10) + activestorage (6.1.7.10) + actionpack (= 6.1.7.10) + activejob (= 6.1.7.10) + activerecord (= 6.1.7.10) + activesupport (= 6.1.7.10) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.7.7) + activesupport (6.1.7.10) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -154,20 +154,20 @@ GEM rack (2.2.10) rack-test (2.1.0) rack (>= 1.3) - rails (6.1.7.7) - actioncable (= 6.1.7.7) - actionmailbox (= 6.1.7.7) - actionmailer (= 6.1.7.7) - actionpack (= 6.1.7.7) - actiontext (= 6.1.7.7) - actionview (= 6.1.7.7) - activejob (= 6.1.7.7) - activemodel (= 6.1.7.7) - activerecord (= 6.1.7.7) - activestorage (= 6.1.7.7) - activesupport (= 6.1.7.7) + rails (6.1.7.10) + actioncable (= 6.1.7.10) + actionmailbox (= 6.1.7.10) + actionmailer (= 6.1.7.10) + actionpack (= 6.1.7.10) + actiontext (= 6.1.7.10) + actionview (= 6.1.7.10) + activejob (= 6.1.7.10) + activemodel (= 6.1.7.10) + activerecord (= 6.1.7.10) + activestorage (= 6.1.7.10) + activesupport (= 6.1.7.10) bundler (>= 1.15.0) - railties (= 6.1.7.7) + railties (= 6.1.7.10) sprockets-rails (>= 2.0.0) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) @@ -176,9 +176,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (6.1.7.7) - actionpack (= 6.1.7.7) - activesupport (= 6.1.7.7) + railties (6.1.7.10) + actionpack (= 6.1.7.10) + activesupport (= 6.1.7.10) method_source rake (>= 12.2) thor (~> 1.0) diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock index 3843cc34..55ec773e 100644 --- a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1) + aether_observatory (0.0.1pre2) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock index 246cd106..c23c8910 100644 --- a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock @@ -11,42 +11,42 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1) + aether_observatory (0.0.1pre2) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) GEM remote: https://rubygems.org/ specs: - actioncable (7.1.3.2) - actionpack (= 7.1.3.2) - activesupport (= 7.1.3.2) + actioncable (7.1.5.1) + actionpack (= 7.1.5.1) + activesupport (= 7.1.5.1) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.3.2) - actionpack (= 7.1.3.2) - activejob (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionmailbox (7.1.5.1) + actionpack (= 7.1.5.1) + activejob (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.3.2) - actionpack (= 7.1.3.2) - actionview (= 7.1.3.2) - activejob (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionmailer (7.1.5.1) + actionpack (= 7.1.5.1) + actionview (= 7.1.5.1) + activejob (= 7.1.5.1) + activesupport (= 7.1.5.1) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.3.2) - actionview (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionpack (7.1.5.1) + actionview (= 7.1.5.1) + activesupport (= 7.1.5.1) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -54,43 +54,46 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.3.2) - actionpack (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + actiontext (7.1.5.1) + actionpack (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.3.2) - activesupport (= 7.1.3.2) + actionview (7.1.5.1) + activesupport (= 7.1.5.1) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.1.3.2) - activesupport (= 7.1.3.2) + activejob (7.1.5.1) + activesupport (= 7.1.5.1) globalid (>= 0.3.6) - activemodel (7.1.3.2) - activesupport (= 7.1.3.2) - activerecord (7.1.3.2) - activemodel (= 7.1.3.2) - activesupport (= 7.1.3.2) + activemodel (7.1.5.1) + activesupport (= 7.1.5.1) + activerecord (7.1.5.1) + activemodel (= 7.1.5.1) + activesupport (= 7.1.5.1) timeout (>= 0.4.0) - activestorage (7.1.3.2) - actionpack (= 7.1.3.2) - activejob (= 7.1.3.2) - activerecord (= 7.1.3.2) - activesupport (= 7.1.3.2) + activestorage (7.1.5.1) + actionpack (= 7.1.5.1) + activejob (= 7.1.5.1) + activerecord (= 7.1.5.1) + activesupport (= 7.1.5.1) marcel (~> 1.0) - activesupport (7.1.3.2) + activesupport (7.1.5.1) base64 + benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) mutex_m + securerandom (>= 0.3) tzinfo (~> 2.0) appraisal (2.5.0) bundler @@ -98,6 +101,7 @@ GEM thor (>= 0.14.0) ast (2.4.2) base64 (0.2.0) + benchmark (0.4.0) bigdecimal (3.1.8) builder (3.3.0) byebug (11.1.3) @@ -129,6 +133,7 @@ GEM tomlrb (>= 1.3, < 2.1) with_env (= 1.1.0) xml-simple (~> 1.1.9) + logger (1.6.3) loofah (2.23.1) crass (~> 1.0.2) nokogiri (>= 1.12.0) @@ -185,20 +190,20 @@ GEM rack (>= 1.3) rackup (2.2.1) rack (>= 3) - rails (7.1.3.2) - actioncable (= 7.1.3.2) - actionmailbox (= 7.1.3.2) - actionmailer (= 7.1.3.2) - actionpack (= 7.1.3.2) - actiontext (= 7.1.3.2) - actionview (= 7.1.3.2) - activejob (= 7.1.3.2) - activemodel (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + rails (7.1.5.1) + actioncable (= 7.1.5.1) + actionmailbox (= 7.1.5.1) + actionmailer (= 7.1.5.1) + actionpack (= 7.1.5.1) + actiontext (= 7.1.5.1) + actionview (= 7.1.5.1) + activejob (= 7.1.5.1) + activemodel (= 7.1.5.1) + activerecord (= 7.1.5.1) + activestorage (= 7.1.5.1) + activesupport (= 7.1.5.1) bundler (>= 1.15.0) - railties (= 7.1.3.2) + railties (= 7.1.5.1) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -206,9 +211,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.1.3.2) - actionpack (= 7.1.3.2) - activesupport (= 7.1.3.2) + railties (7.1.5.1) + actionpack (= 7.1.5.1) + activesupport (= 7.1.5.1) irb rackup (>= 1.0.0) rake (>= 12.2) @@ -261,6 +266,7 @@ GEM rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) + securerandom (0.4.1) simplecov (0.15.1) docile (~> 1.1.0) json (>= 1.8, < 3) diff --git a/packages/aether_observatory/lib/aether_observatory/version.rb b/packages/aether_observatory/lib/aether_observatory/version.rb index 6613ba1d..0d5c4615 100644 --- a/packages/aether_observatory/lib/aether_observatory/version.rb +++ b/packages/aether_observatory/lib/aether_observatory/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module AetherObservatory - VERSION = "0.0.1pre1" + VERSION = "0.0.1pre2" end From 8fb4610be003d951d92c037886352af8e2dbeeca Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 12:29:12 -0500 Subject: [PATCH 08/14] YNGJ-1058: pull back zeitwerk and secure ramdom gems --- .../aether_observatory/gemfiles/rails_6_0.gemfile.lock | 7 ++++--- .../aether_observatory/gemfiles/rails_6_1.gemfile.lock | 7 ++++--- .../aether_observatory/gemfiles/rails_7_0.gemfile.lock | 7 ++++--- .../aether_observatory/gemfiles/rails_7_1.gemfile.lock | 8 ++++---- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock index 6989692f..64d213ca 100644 --- a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock @@ -114,7 +114,7 @@ GEM method_source (1.1.0) mini_mime (1.1.5) minitest (5.25.4) - net-imap (0.5.2) + net-imap (0.4.18) date net-protocol net-pop (0.1.2) @@ -221,6 +221,7 @@ GEM rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) + securerandom (0.3.2) simplecov (0.15.1) docile (~> 1.1.0) json (>= 1.8, < 3) @@ -247,7 +248,7 @@ GEM xml-simple (1.1.9) rexml yard (0.9.21) - zeitwerk (2.7.1) + zeitwerk (2.6.18) PLATFORMS aarch64-linux @@ -272,4 +273,4 @@ DEPENDENCIES yard (= 0.9.21) BUNDLED WITH - 2.5.22 + 2.4.22 diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock index f2cfdbff..8458a864 100644 --- a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock @@ -118,7 +118,7 @@ GEM method_source (1.1.0) mini_mime (1.1.5) minitest (5.25.4) - net-imap (0.5.2) + net-imap (0.4.18) date net-protocol net-pop (0.1.2) @@ -225,6 +225,7 @@ GEM rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) + securerandom (0.3.2) simplecov (0.15.1) docile (~> 1.1.0) json (>= 1.8, < 3) @@ -250,7 +251,7 @@ GEM xml-simple (1.1.9) rexml yard (0.9.21) - zeitwerk (2.7.1) + zeitwerk (2.6.18) PLATFORMS aarch64-linux @@ -275,4 +276,4 @@ DEPENDENCIES yard (= 0.9.21) BUNDLED WITH - 2.5.22 + 2.4.22 diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock index 55ec773e..4f16f284 100644 --- a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock @@ -124,7 +124,7 @@ GEM method_source (1.1.0) mini_mime (1.1.5) minitest (5.25.4) - net-imap (0.5.2) + net-imap (0.4.18) date net-protocol net-pop (0.1.2) @@ -231,6 +231,7 @@ GEM rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) + securerandom (0.3.2) simplecov (0.15.1) docile (~> 1.1.0) json (>= 1.8, < 3) @@ -249,7 +250,7 @@ GEM xml-simple (1.1.9) rexml yard (0.9.21) - zeitwerk (2.7.1) + zeitwerk (2.6.18) PLATFORMS aarch64-linux @@ -274,4 +275,4 @@ DEPENDENCIES yard (= 0.9.21) BUNDLED WITH - 2.5.22 + 2.4.22 diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock index c23c8910..19ca34bb 100644 --- a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock @@ -147,7 +147,7 @@ GEM mini_mime (1.1.5) minitest (5.25.4) mutex_m (0.3.0) - net-imap (0.5.2) + net-imap (0.4.18) date net-protocol net-pop (0.1.2) @@ -266,7 +266,7 @@ GEM rubocop (~> 1.61) ruby-progressbar (1.13.0) rubyzip (2.3.2) - securerandom (0.4.1) + securerandom (0.3.2) simplecov (0.15.1) docile (~> 1.1.0) json (>= 1.8, < 3) @@ -286,7 +286,7 @@ GEM xml-simple (1.1.9) rexml yard (0.9.21) - zeitwerk (2.7.1) + zeitwerk (2.6.18) PLATFORMS aarch64-linux @@ -311,4 +311,4 @@ DEPENDENCIES yard (= 0.9.21) BUNDLED WITH - 2.5.22 + 2.4.22 From b9a77365291532311783a41e3c5a312e39631ea9 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 12:33:48 -0500 Subject: [PATCH 09/14] YNGJ-1058: rubocop --- packages/aether_observatory/.rubocop.yml | 3 +++ .../spec/aether_observatory/event_base_spec.rb | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/aether_observatory/.rubocop.yml b/packages/aether_observatory/.rubocop.yml index 90cd42df..0e3ecedf 100644 --- a/packages/aether_observatory/.rubocop.yml +++ b/packages/aether_observatory/.rubocop.yml @@ -1,6 +1,9 @@ require: - rubocop-powerhome +AllCops: + Exclude: + - gemfiles/**/* Metrics/MethodLength: Exclude: diff --git a/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb index 12082b77..c68888fc 100644 --- a/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb +++ b/packages/aether_observatory/spec/aether_observatory/event_base_spec.rb @@ -74,9 +74,9 @@ module AetherObservatory expect(observer_zero.returned_payload).to eq(nil) expect(observer_both.returned_payload.message).to eq("message") - # Teardown - observer_zero.stop - observer_both.stop + # Teardown + observer_zero.stop + observer_both.stop end context "without a prefix" do From 825a00a915147a4f6e7b921fa848572efb115bd3 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 12:44:00 -0500 Subject: [PATCH 10/14] YNGJ-1058: rubocop --- packages/aether_observatory/.rubocop.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/aether_observatory/.rubocop.yml b/packages/aether_observatory/.rubocop.yml index 0e3ecedf..b4c075b5 100644 --- a/packages/aether_observatory/.rubocop.yml +++ b/packages/aether_observatory/.rubocop.yml @@ -2,9 +2,16 @@ require: - rubocop-powerhome AllCops: - Exclude: - - gemfiles/**/* + TargetRubyVersion: 3.0 Metrics/MethodLength: Exclude: - - spec/**/*_spec.rb \ No newline at end of file + - spec/**/*_spec.rb + +Style/FrozenStringLiteralComment: + Exclude: + - 'gemfiles/*' + +Bundler/OrderedGems: + Exclude: + - 'gemfiles/*' From b31af9624da81686f1cd03d4b4f334907aa752c6 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 12:49:31 -0500 Subject: [PATCH 11/14] YNGJ-1058: v0.0.1pre3 --- packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock | 2 +- packages/aether_observatory/lib/aether_observatory/version.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock index 64d213ca..2bcfa2c7 100644 --- a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre2) + aether_observatory (0.0.1pre3) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock index 8458a864..f898015b 100644 --- a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre2) + aether_observatory (0.0.1pre3) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock index 4f16f284..d581a36a 100644 --- a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre2) + aether_observatory (0.0.1pre3) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock index 19ca34bb..6d27ab41 100644 --- a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre2) + aether_observatory (0.0.1pre3) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/lib/aether_observatory/version.rb b/packages/aether_observatory/lib/aether_observatory/version.rb index 0d5c4615..573cfc4c 100644 --- a/packages/aether_observatory/lib/aether_observatory/version.rb +++ b/packages/aether_observatory/lib/aether_observatory/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module AetherObservatory - VERSION = "0.0.1pre2" + VERSION = "0.0.1pre3" end From def378b18a0354229c6c3528bd45faab4d89292c Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 13:56:00 -0500 Subject: [PATCH 12/14] YNGJ-1058: v0.0.1pre3 - tag at the same time --- packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock | 2 +- packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock | 2 +- packages/aether_observatory/lib/aether_observatory/version.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock index 2bcfa2c7..4310989a 100644 --- a/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre3) + aether_observatory (0.0.1pre4) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock index f898015b..5f792b63 100644 --- a/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre3) + aether_observatory (0.0.1pre4) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock index d581a36a..35ad97fe 100644 --- a/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre3) + aether_observatory (0.0.1pre4) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock index 6d27ab41..6076ad8b 100644 --- a/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile.lock @@ -11,7 +11,7 @@ PATH PATH remote: .. specs: - aether_observatory (0.0.1pre3) + aether_observatory (0.0.1pre4) activemodel (>= 6.0.6.1) activesupport (>= 6.0.6.1) diff --git a/packages/aether_observatory/lib/aether_observatory/version.rb b/packages/aether_observatory/lib/aether_observatory/version.rb index 573cfc4c..0524f2cb 100644 --- a/packages/aether_observatory/lib/aether_observatory/version.rb +++ b/packages/aether_observatory/lib/aether_observatory/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module AetherObservatory - VERSION = "0.0.1pre3" + VERSION = "0.0.1pre4" end From 9ff8dca460d866d356ab1debe448274b38f02abb Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 15:51:48 -0500 Subject: [PATCH 13/14] YNGJ-1058: Test against ruby 3.0 and 3.3 --- .github/workflows/aether_observatory.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/aether_observatory.yml b/.github/workflows/aether_observatory.yml index cccc5c1f..4fbd3093 100644 --- a/.github/workflows/aether_observatory.yml +++ b/.github/workflows/aether_observatory.yml @@ -10,5 +10,5 @@ jobs: package: ${{ github.workflow }} workdir: "packages/${{ github.workflow }}" gemfiles: "['gemfiles/rails_6_0.gemfile','gemfiles/rails_6_1.gemfile','gemfiles/rails_7_0.gemfile','gemfiles/rails_7_1.gemfile']" - ruby: '["3.0","3.1","3.2","3.3"]' + ruby: '["3.0","3.3"]' secrets: inherit From b261766df034a5053280234dd176e084d253dc14 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 17 Dec 2024 15:58:57 -0500 Subject: [PATCH 14/14] YNGJ-1058: Fix rubocop issues in gemfiles/* --- packages/aether_observatory/.rubocop.yml | 8 -------- packages/aether_observatory/gemfiles/rails_6_0.gemfile | 4 +++- packages/aether_observatory/gemfiles/rails_6_1.gemfile | 4 +++- packages/aether_observatory/gemfiles/rails_7_0.gemfile | 4 +++- packages/aether_observatory/gemfiles/rails_7_1.gemfile | 4 +++- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/aether_observatory/.rubocop.yml b/packages/aether_observatory/.rubocop.yml index b4c075b5..66efc447 100644 --- a/packages/aether_observatory/.rubocop.yml +++ b/packages/aether_observatory/.rubocop.yml @@ -7,11 +7,3 @@ AllCops: Metrics/MethodLength: Exclude: - spec/**/*_spec.rb - -Style/FrozenStringLiteralComment: - Exclude: - - 'gemfiles/*' - -Bundler/OrderedGems: - Exclude: - - 'gemfiles/*' diff --git a/packages/aether_observatory/gemfiles/rails_6_0.gemfile b/packages/aether_observatory/gemfiles/rails_6_0.gemfile index 8153d26b..41bef0bc 100644 --- a/packages/aether_observatory/gemfiles/rails_6_0.gemfile +++ b/packages/aether_observatory/gemfiles/rails_6_0.gemfile @@ -1,8 +1,10 @@ +# frozen_string_literal: true + # This file was generated by Appraisal source "https://rubygems.org" -gem "rubocop-powerhome", path: "../../rubocop-powerhome" gem "rails", "~> 6.0.6" +gem "rubocop-powerhome", path: "../../rubocop-powerhome" gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_6_1.gemfile b/packages/aether_observatory/gemfiles/rails_6_1.gemfile index 1323c345..418eac34 100644 --- a/packages/aether_observatory/gemfiles/rails_6_1.gemfile +++ b/packages/aether_observatory/gemfiles/rails_6_1.gemfile @@ -1,8 +1,10 @@ +# frozen_string_literal: true + # This file was generated by Appraisal source "https://rubygems.org" -gem "rubocop-powerhome", path: "../../rubocop-powerhome" gem "rails", "~> 6.1.7" +gem "rubocop-powerhome", path: "../../rubocop-powerhome" gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_7_0.gemfile b/packages/aether_observatory/gemfiles/rails_7_0.gemfile index edbebc82..55ba0354 100644 --- a/packages/aether_observatory/gemfiles/rails_7_0.gemfile +++ b/packages/aether_observatory/gemfiles/rails_7_0.gemfile @@ -1,8 +1,10 @@ +# frozen_string_literal: true + # This file was generated by Appraisal source "https://rubygems.org" -gem "rubocop-powerhome", path: "../../rubocop-powerhome" gem "rails", "~> 7.0.8" +gem "rubocop-powerhome", path: "../../rubocop-powerhome" gemspec path: "../" diff --git a/packages/aether_observatory/gemfiles/rails_7_1.gemfile b/packages/aether_observatory/gemfiles/rails_7_1.gemfile index f420ee78..7351dc9a 100644 --- a/packages/aether_observatory/gemfiles/rails_7_1.gemfile +++ b/packages/aether_observatory/gemfiles/rails_7_1.gemfile @@ -1,8 +1,10 @@ +# frozen_string_literal: true + # This file was generated by Appraisal source "https://rubygems.org" -gem "rubocop-powerhome", path: "../../rubocop-powerhome" gem "rails", "~> 7.1.3" +gem "rubocop-powerhome", path: "../../rubocop-powerhome" gemspec path: "../"