twirp-on-rails 1.0.1 → 1.1.0

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: 97395472e03e70358a2a271d158f7661df878b3b9ada26d79b220975065d4b35
4
- data.tar.gz: b4188b09886154375a8f7e931d4d363c27bdf40a000044e73960e92266ccf2b1
3
+ metadata.gz: 5f09ec24234c61ab85dc6ab6e03768c16e4fa7110fe5e5771240ca94633996eb
4
+ data.tar.gz: 569db17177ad607e4de0a9f94cf380857c48e408f5e7937ed951bd549d5a0431
5
5
  SHA512:
6
- metadata.gz: '0729dc21f25c3c40eda3fb080a70a67c67d3864a3be85a740e27b9e41e2d9d8548ccec114ebe42b923f240a33234090111ea00ce00dfa8729ecf43c546707002'
7
- data.tar.gz: 2d4d1bc20c93b7860356d431520ef7e5468ab3b1c45134ea63100bee64bf204517aefa768940c1429f105baadb8bf23eaa616e5e0d6b37cda8d8f1cf8cbdcd49
6
+ metadata.gz: 542712540c037f4be6ac5f322f45f72a44f55705eb813f941769317afcb17ce1853089524cdf725c61bad411fc73a8ae8be7428a8b3846df6ae9604581d5f90e
7
+ data.tar.gz: be401e0761378d95a08bc4d493582450cf5e979e288f578d63c25dd00a69bcc7033b16f77fb31bf0100c2dc1c5a7007fe1c69a8140410b0b4ee5f2238ecfd499
data/.standard.yml CHANGED
@@ -2,3 +2,6 @@ ruby_version: 2.7
2
2
  plugins:
3
3
  - standard-performance
4
4
  - standard-rails
5
+ ignore:
6
+ - '**/*_pb.rb'
7
+ - '**/*_twirp.rb'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.1.0] - 2024-09-12
4
+
5
+ - Respect package namespace when looking for handlers.
6
+
3
7
  ## [0.1.0] - 2022-12-23
4
8
 
5
9
  - Initial release
data/Gemfile CHANGED
@@ -10,6 +10,6 @@ gem "rake"
10
10
  gem "debug"
11
11
  gem "rspec-rails"
12
12
  gem "sqlite3", "~> 1.4"
13
- gem "standard"
13
+ gem "standard", ">= 1.35.1"
14
14
  gem "standard-performance"
15
15
  gem "standard-rails"
data/README.md CHANGED
@@ -86,7 +86,26 @@ end
86
86
 
87
87
  Each handler method should return the appropriate Protobuf, or a `Twirp::Error`.
88
88
 
89
- TODO: Give more examples of both
89
+ #### Packages and Namespacing
90
+
91
+ Handlers can live in directories that reflect the service's package. For example, `haberdasher.proto` defines:
92
+
93
+ ```protobuf
94
+ package twirp.example.haberdasher;
95
+ ```
96
+
97
+ You can use the full path, or because many projects have only one namespace, we also let you skip the namespace for simplicity:
98
+
99
+ We look for the handler in either location:
100
+
101
+ `app/handlers/twirp/example/haberdasher/haberdasher_service_handler.rb` defines `Twirp::Example::Haberdasher::HaberdasherServiceHandler`
102
+
103
+ or
104
+
105
+ `app/handlers/haberdasher_service_handler.rb` defines `HaberdasherServiceHandler`
106
+
107
+
108
+ TODO: Give more examples of handlers
90
109
 
91
110
  ### Familiar Callbacks
92
111
 
@@ -4,7 +4,13 @@ module Twirp
4
4
  module Rails
5
5
  class Dispatcher
6
6
  def initialize(service_class)
7
- @service_handler = "#{service_class.service_name}Handler".constantize
7
+ # Check for a handler in the service's namespace, or in the root namespace
8
+ # e.g. Twirp::Example::Cobbler::CobblerHandler or ::CobblerHandler
9
+ @service_handler = if Object.const_defined?("#{service_class.module_parent}::#{service_class.service_name}Handler")
10
+ "#{service_class.module_parent}::#{service_class.service_name}Handler".constantize
11
+ else
12
+ "#{service_class.service_name}Handler".constantize
13
+ end
8
14
  end
9
15
 
10
16
  def respond_to_missing?(method, *)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Twirp
4
4
  module Rails
5
- VERSION = "1.0.1"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twirp-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Morrison
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-05-20 00:00:00.000000000 Z
12
+ date: 2024-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  requirements: []
91
- rubygems_version: 3.5.9
91
+ rubygems_version: 3.5.16
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: Use Twirp RPC with Rails