terminalwire-rails 0.3.0.alpha3 → 0.3.0.alpha5

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: 69eeceaeae26063a0039adb4e8da3291e292d09e555d2d61b46726d78953b57f
4
- data.tar.gz: ff993fe288abe17ca0f61393acbfb684cebf720b573dc607584c75296a4e313e
3
+ metadata.gz: e3a8838cb0f35c5f951516be431a90b55c8b9f214f990c75afbcb3b4831b92cc
4
+ data.tar.gz: e1e9def109666144250e0cfcd2d4deb48f9b363b310d5adfb5aa7f66a0cd24f2
5
5
  SHA512:
6
- metadata.gz: accfc6aac85614e0ea8462814d3b44443819f36eb726a541e6319372a75c29618a50c2406375894b26fc71cc414862990510bc4d1e977a89b2077be83929c171
7
- data.tar.gz: 58c9a8189d0d1d36ff45c7fc14ea5ad7a44993a0598d783611f8d1efb5b9bc8847406ce77869e769e743565d31aabe4b61efd59865ab0cdf59eeaa3ff9298b58
6
+ metadata.gz: 6c657f110a45428c9cac644afeba5f7f7c57a3eaf545e6cef1b9c5a1ffe52de159bdfb5e8b77f0ebb9835fbaa569e9d5ee806b6669c156f8e3307982e1316cab
7
+ data.tar.gz: 6f9b7e814bfc445f8dbf4b185443d71ef4bbf0b212bd476396c57345bafa0ad7fcb9df512d98b9f725b937302840c0fdd8839af5961ea8c5ab05ecd3dddb4771
@@ -16,6 +16,6 @@ class ApplicationTerminal < Thor
16
16
  end
17
17
 
18
18
  def current_user
19
- @current_user ||= User.find(session["user_id"])
19
+ @current_user ||= User.find_by(id: session["user_id"])
20
20
  end
21
21
  end
@@ -84,7 +84,7 @@ module Terminalwire
84
84
  "An error occurred. Please try again."
85
85
  end
86
86
 
87
- def handle(adapter)
87
+ def handle(adapter:, env:)
88
88
  logger.info "ThorServer: Running #{@cli_class.inspect}"
89
89
  while message = adapter.read
90
90
  case message
@@ -92,12 +92,27 @@ module Terminalwire
92
92
  context = Terminalwire::Server::Context.new(adapter:, entitlement:)
93
93
 
94
94
  begin
95
- @cli_class.start(arguments, context:)
95
+ @cli_class.terminalwire arguments:, context: do |cli|
96
+ cli.default_url_options = { host: env["HTTP_HOST"] }
97
+ end
96
98
  context.exit
97
99
  rescue StandardError => e
100
+ # Log the error
101
+ handler_error_message = <<~_
102
+ An error occured handling message in #{self.class.name}: #{e.inspect}
103
+ Error: #{e.message}
104
+ Backtrace: #{e.backtrace.join("\n")}
105
+ Handler: #{self.inspect}
106
+ Message: #{message.inspect}
107
+ _
108
+
109
+ ::Rails.logger.error(handler_error_message)
110
+ # Report the error to Rails' notification system
111
+ ::Rails.error.report(e, handled: true)
112
+
98
113
  if ::Rails.application.config.consider_all_requests_local
99
114
  # Show the full error message with stack trace in development
100
- context.stderr.puts "#{e.inspect}\n#{e.backtrace.join("\n")}"
115
+ context.stderr.puts handler_error_message
101
116
  else
102
117
  # Show a generic message in production
103
118
  context.stderr.puts error_message
@@ -110,7 +125,41 @@ module Terminalwire
110
125
  end
111
126
  end
112
127
 
113
- # Alias so we can put off breaking `include Terminalwire::Thor`
114
- # in the ApplicationTerminal class.
115
- Thor = Terminalwire::Server::Thor
128
+ # If I move this, then the current production integration breaks because
129
+ # it wants `include Terminalwire::Thor`.
130
+ module Thor
131
+ class Shell < Terminalwire::Server::Thor::Shell
132
+ attr_reader :session
133
+
134
+ def initialize(context, *, **, &)
135
+ @session = Terminalwire::Rails::Session.new(context:)
136
+ super(context, *,**,&)
137
+ end
138
+ end
139
+
140
+ def self.included(base)
141
+ base.include Terminalwire::Server::Thor
142
+ base.extend ClassMethods
143
+
144
+ # I have to do this in a block to deal with some of Thor's DSL
145
+ base.class_eval do
146
+ protected
147
+
148
+ no_commands do
149
+ def_delegators :shell,
150
+ :session
151
+
152
+ include ::Rails.application.routes.url_helpers
153
+ end
154
+ end
155
+ end
156
+
157
+ module ClassMethods
158
+ def terminalwire(arguments:, context:)
159
+ dispatch(nil, arguments.dup, nil, shell: Shell.new(context)) do |instance|
160
+ yield instance if block_given?
161
+ end
162
+ end
163
+ end
164
+ end
116
165
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terminalwire-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.alpha3
4
+ version: 0.3.0.alpha5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-17 00:00:00.000000000 Z
10
+ date: 2025-02-07 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: terminalwire-server
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.3.0.alpha3
18
+ version: 0.3.0.alpha5
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.3.0.alpha3
25
+ version: 0.3.0.alpha5
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rails
28
28
  requirement: !ruby/object:Gem::Requirement