terminalwire-rails 0.3.0.alpha4 → 0.3.0.alpha5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 782349af7d46483481d8d683a4b7ec0488c0ac4863a9db37f08a3b2b2e999993
4
- data.tar.gz: f15feb556d260075dab1b544e145a172fe77632700324f2c89918f90538c1313
3
+ metadata.gz: e3a8838cb0f35c5f951516be431a90b55c8b9f214f990c75afbcb3b4831b92cc
4
+ data.tar.gz: e1e9def109666144250e0cfcd2d4deb48f9b363b310d5adfb5aa7f66a0cd24f2
5
5
  SHA512:
6
- metadata.gz: d9b8508ab1ec6922143e78f8699f9376c9743c3d9a11ef0c85ab2c2bfceb6062e9f51ea110f72cc13b3f2a4d1fbc9a238a87febc7b705d5f5bd764de83f8b570
7
- data.tar.gz: 9e21c0f28f7f87bab9ab5a3058eba193fb3ad61630fc2c79701c4ce66847704a0d42e7514ca230d1a8008ca3472a6a754a67e657ad153a3181976d3a9c9a1abd
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,14 +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.alpha4
4
+ version: 0.3.0.alpha5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-01-23 00:00:00.000000000 Z
10
+ date: 2025-02-07 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: terminalwire-server
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - '='
18
17
  - !ruby/object:Gem::Version
19
- version: 0.3.0.alpha4
18
+ version: 0.3.0.alpha5
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - '='
25
24
  - !ruby/object:Gem::Version
26
- version: 0.3.0.alpha4
25
+ version: 0.3.0.alpha5
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rails
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -75,7 +74,6 @@ metadata:
75
74
  source_code_uri: https://github.com/terminalwire/ruby/tree/main/terminalwire-rails
76
75
  changelog_uri: https://github.com/terminalwire/ruby/tags
77
76
  funding_uri: https://terminalwire.com/funding
78
- post_install_message:
79
77
  rdoc_options: []
80
78
  require_paths:
81
79
  - lib
@@ -90,8 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
88
  - !ruby/object:Gem::Version
91
89
  version: '0'
92
90
  requirements: []
93
- rubygems_version: 3.5.9
94
- signing_key:
91
+ rubygems_version: 3.6.2
95
92
  specification_version: 4
96
93
  summary: Ship a CLI for your web app. No API required.
97
94
  test_files: []