close_encounters 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a24140efc0d1f7aa0f701d7c7ac16a1ced62c808d44224220dff606156cc08b3
4
- data.tar.gz: cbf2f638428e2526cec682ba2250c465632f4aad9d8028135d61c63fac99f9ce
3
+ metadata.gz: d25208cd9077c5ee5664ca4751be09d336af8655ea251f36724075da31fc5b88
4
+ data.tar.gz: 2589b53abede0624c4fb55a48bb7cd5e954940d6f984cd0c5971906cbfe79a24
5
5
  SHA512:
6
- metadata.gz: 5a7cd81cdb97205774b919c928fd81ba896fa22300784171a8e3037c0d5a1243c5da1e8587d7c616b7e7ead0b3973cc4fa06cada1579ec22af4b5170c87dc670
7
- data.tar.gz: 85223a244ef256129651b57eb089f712732eb24be7c80fcf1b969017c0b45d88d0c93fe9b7114d1ff0691a05cada6ad31836e85f0129feab303765e2f365b70e
6
+ metadata.gz: de2552af2d64096df4613627a64b92d07178217366b9af8c5730562c8059142308b5dfeced444c889ac66a789b152bfebecd19c1c6038e06fa879a9baacae904
7
+ data.tar.gz: 588ba90d0f89e0c1a8bafbadadb7a5da6398b728fa0a3db1e044a982f3ea2fe19743f718028241a6dbac012966c4b0effd541936a0b1346ec849311a57f05ab5
data/CHANGELOG.md CHANGED
@@ -1,9 +1,26 @@
1
1
  # Change log
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
6
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
7
 
7
- ## Unreleased
8
- ### Added:
9
- - Initial implimentation
8
+ ## [0.1.1] - 2024-07-11
9
+
10
+ ### Added
11
+
12
+ - Support for Importmaps
13
+ - `reissue` gem for managing releases
14
+
15
+ ### Fixed
16
+
17
+ - Alter newest scope to properly return a relation limited to 1 record
18
+ - Update ensure_service to not overwrite existing connection_info
19
+ - Allow specs to run properly locally
20
+ - Incorrect manifest paths for sprockets
21
+
22
+ ## [0.1.0] - 2024-05-08
23
+
24
+ ### Added
25
+
26
+ - Initial implimentation
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # CloseEncounters
2
+
3
+ … of the Third Party.
4
+
2
5
  Add serices and events that can track responses from third-party services.
3
6
 
4
7
  ## Usage
@@ -24,6 +27,12 @@ CloseEncounters.status("SomeThirdPartyService") # => 200
24
27
  CloseEncounters.status("SomeThirdPartyService") # => 500
25
28
  ```
26
29
 
30
+ ### TODO
31
+
32
+ - [ ] Add JS to the gem to track events on the front-end.
33
+ - [ ] Add a UI to create and manage services.
34
+ - [ ] Add a UI to view events.
35
+
27
36
  ## Installation
28
37
  Add this line to your application's Gemfile:
29
38
 
data/Rakefile CHANGED
@@ -9,9 +9,20 @@ require "bundler/gem_tasks"
9
9
 
10
10
  require "rake/testtask"
11
11
 
12
- Rake::TestTask.new do |t|
12
+ Rake::TestTask.new(:test) do |t|
13
13
  t.libs << "test"
14
14
  t.pattern = "test/**/*_test.rb"
15
15
  end
16
16
 
17
- task default: ["db:setup", "db:migrate", "app:environment", :test] # Modify default task
17
+ task default: ["db:drop", "db:create", "db:schema:load", "db:test:prepare", :test]
18
+
19
+ require "reissue/gem"
20
+
21
+ Reissue::Task.create :reissue do |task|
22
+ task.version_file = "lib/close_encounters/version.rb"
23
+ end
24
+
25
+ require "standard/rake"
26
+
27
+ require "close_encounters/engine"
28
+ load "lib/tasks/close_encounters.rake"
@@ -0,0 +1 @@
1
+ //= link_tree ../javascripts
@@ -0,0 +1,22 @@
1
+ import { Controller } from 'stimulus';
2
+
3
+ export default class extends Controller {
4
+ static targets = ['output'];
5
+
6
+ connect() {
7
+ this.poll();
8
+ }
9
+
10
+ poll() {
11
+ setInterval(() => {
12
+ fetch('/close_encounters')
13
+ .then(response => response.json())
14
+ .then(data => {
15
+ this.outputTarget.textContent = data;
16
+ })
17
+ .catch(error => {
18
+ console.error('Error:', error);
19
+ });
20
+ }, 30000); // Poll every 30 seconds
21
+ }
22
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -1,7 +1,10 @@
1
1
  module CloseEncounters
2
2
  class ParticipantEvent < ApplicationRecord
3
- belongs_to :participant_service, inverse_of: :events, class_name: "CloseEncounters::ParticipantService"
3
+ belongs_to :participant_service,
4
+ inverse_of: :events,
5
+ class_name: "CloseEncounters::ParticipantService",
6
+ foreign_key: "close_encounters_participant_service_id"
4
7
 
5
- scope :newest, -> { order(created_at: :desc).first }
8
+ scope :newest, -> { order(created_at: :desc).limit(1) }
6
9
  end
7
10
  end
@@ -1,6 +1,8 @@
1
1
  module CloseEncounters
2
2
  class ParticipantService < ApplicationRecord
3
- has_many :events, inverse_of: :participant_service, class_name: "CloseEncounters::ParticipantEvent"
3
+ has_many :events,
4
+ inverse_of: :participant_service,
5
+ class_name: "CloseEncounters::ParticipantEvent"
4
6
 
5
7
  validates :name, presence: true
6
8
 
@@ -8,6 +10,9 @@ module CloseEncounters
8
10
  serialize :connection_info, coder: JSON
9
11
  end
10
12
 
11
- encrypts :connection_info
13
+ # ONLY encrypt if you have the necessary keys
14
+ if Rails.application.credentials.close_encounters_encryption_key.present?
15
+ encrypts :connection_info
16
+ end
12
17
  end
13
18
  end
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Close encounters</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "close_encounters/application", media: "all" %>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ </body>
15
+ </html>
@@ -0,0 +1 @@
1
+ pin_all_from File.expand_path("../app/assets/javascripts", __dir__)
@@ -1,5 +1,29 @@
1
1
  module CloseEncounters
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace CloseEncounters
4
+
5
+ config.generators do |g|
6
+ g.test_framework :minitest, spec: true
7
+ end
8
+
9
+ if defined?(Importmap)
10
+ initializer "close_encounters.importmap", before: "importmap" do |app|
11
+ app.config.importmap.paths << root.join("config/importmap.rb")
12
+ end
13
+ end
14
+
15
+ if defined?(Sprockets)
16
+ initializer "close_encounters.assets" do |app|
17
+ app.config.assets.precompile += %w[close_encounters_manifest.js]
18
+ end
19
+ end
20
+
21
+ initializer :append_migrations do |app|
22
+ unless app.root.to_s.match root.to_s
23
+ config.paths["db/migrate"].expanded.each do |expanded_path|
24
+ app.config.paths["db/migrate"] << expanded_path
25
+ end
26
+ end
27
+ end
4
28
  end
5
29
  end
@@ -1,3 +1,3 @@
1
1
  module CloseEncounters
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -14,7 +14,7 @@ module CloseEncounters
14
14
  # @param response [String] the response object
15
15
  def contact(name, status:, response:)
16
16
  service = ParticipantService.find_by!(name:)
17
- unless service.events.newest.status == status
17
+ unless service.events.newest.pick(:status) == status
18
18
  service.events.create!(status: status, response:)
19
19
  end
20
20
  end
@@ -24,7 +24,7 @@ module CloseEncounters
24
24
  # @param name [String] the name of the service
25
25
  # @return [Integer] the HTTP status of the most recent contact
26
26
  def status(name)
27
- ParticipantService.find_by!(name: name).events.newest.status
27
+ ParticipantService.find_by!(name: name).events.newest.pick(:status)
28
28
  end
29
29
 
30
30
  # Ensure that a participant service exists
@@ -33,7 +33,7 @@ module CloseEncounters
33
33
  # @param connection_info [Hash] the connection information for the service
34
34
  def ensure_service(name, connection_info: {})
35
35
  ParticipantService.find_or_create_by!(name: name) do |service|
36
- service.connection_info = connection_info
36
+ service.connection_info = connection_info unless service.connection_info.present?
37
37
  end
38
38
  end
39
39
  end
@@ -0,0 +1,12 @@
1
+ namespace :close_encounters do
2
+ namespace :db do
3
+ desc "Run migrations for CloseEncounters"
4
+ task migrate: :environment do
5
+ ActiveRecord::Migration.migrate(File.expand_path("../../db/migrate", __dir__))
6
+ end
7
+ end
8
+ end
9
+
10
+ Rake::Task["db:migrate"].enhance do
11
+ Rake::Task["close_encounters:db:migrate"].invoke
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: close_encounters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Gay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-08 00:00:00.000000000 Z
11
+ date: 2024-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -106,15 +106,21 @@ files:
106
106
  - MIT-LICENSE
107
107
  - README.md
108
108
  - Rakefile
109
+ - app/assets/config/close_encounters_manifest.js
110
+ - app/assets/javascripts/encounters.js
111
+ - app/assets/stylesheets/close_encounters/application.css
109
112
  - app/models/close_encounters/application_record.rb
110
113
  - app/models/close_encounters/participant_event.rb
111
114
  - app/models/close_encounters/participant_service.rb
115
+ - app/views/layouts/close_encounters/application.html.erb
116
+ - config/importmap.rb
112
117
  - db/migrate/20240430173723_create_close_encounters_participant_services.rb
113
118
  - db/migrate/20240430173725_create_close_encounters_participant_events.rb
114
119
  - db/migrate/20240508190642_add_close_ecounters_indexes.rb
115
120
  - lib/close_encounters.rb
116
121
  - lib/close_encounters/engine.rb
117
122
  - lib/close_encounters/version.rb
123
+ - lib/tasks/close_encounters.rake
118
124
  homepage: https://github.com/SOFware/close_encounters
119
125
  licenses:
120
126
  - MIT