camille 0.1.0 → 0.2.0

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: efa884b2cb790a85ad8ae7f2e5462fd2a94d507aad4437c3063af81b333dd2c4
4
- data.tar.gz: e1a1c1a68397a31521704a2fff6044a3f78997418acf5cd4fd5994c9eb5748c3
3
+ metadata.gz: f5911a8f4d1519a2a373ebee118bce4f110d64f5eaeafece5c8c8e46580b5c20
4
+ data.tar.gz: b59a4600bd145350d1217219b0074ffb6e80d8cdc97318995b6ba2b0bffe7450
5
5
  SHA512:
6
- metadata.gz: 2c8c279a7e420762d3586a191b08f4e916fe2827d30a7d76702d4dcd92e466efe0cca29b46a8688f198eb6c49193c2698ef7fe87f7fc85e292489e8bf39a27b0
7
- data.tar.gz: c4ba05522f14dc3c80f9dabfddacfe562f32475d278b49ddb49104bb76f8cb72d8032547e0cc25d5f8655c87d6ae0ddecb4e5db7cab4058d27b40236b4fba06a
6
+ metadata.gz: 3088068a948ca92e1a6bc90690c5f27d5e2c788c3f76e2ba40b5ebf62b7c3fdffac809411941a3f05a77ace636ce16bf7742c12c1ae5700c4b45d7bfb9fdddfb
7
+ data.tar.gz: c6f0a0b72216805bf591bc4289172e69382f702ccc14d161a3b63267dc83816a47045e9d61884029349543aac5ecf5aeb43bbc82f0c95ef23ff7df569037b8b6
data/Gemfile.lock CHANGED
@@ -2,7 +2,6 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  camille (0.1.0)
5
- listen (~> 3.3)
6
5
  rails (>= 6.1, < 8)
7
6
 
8
7
  GEM
@@ -79,14 +78,10 @@ GEM
79
78
  date (3.3.3)
80
79
  diff-lcs (1.5.0)
81
80
  erubi (1.12.0)
82
- ffi (1.15.5)
83
81
  globalid (1.1.0)
84
82
  activesupport (>= 5.0)
85
83
  i18n (1.12.0)
86
84
  concurrent-ruby (~> 1.0)
87
- listen (3.8.0)
88
- rb-fsevent (~> 0.10, >= 0.10.3)
89
- rb-inotify (~> 0.9, >= 0.9.10)
90
85
  loofah (2.19.1)
91
86
  crass (~> 1.0.2)
92
87
  nokogiri (>= 1.5.9)
@@ -142,9 +137,6 @@ GEM
142
137
  thor (~> 1.0)
143
138
  zeitwerk (~> 2.5)
144
139
  rake (13.0.6)
145
- rb-fsevent (0.11.2)
146
- rb-inotify (0.10.1)
147
- ffi (~> 1.0)
148
140
  rspec (3.12.0)
149
141
  rspec-core (~> 3.12.0)
150
142
  rspec-expectations (~> 3.12.0)
@@ -4,6 +4,7 @@ module Camille
4
4
  module CodeGenerator
5
5
  def self.generate_ts
6
6
  io = StringIO.new
7
+ io.puts "// This file is automatically generated."
7
8
  io.puts Camille::Configuration.ts_header
8
9
  io.puts
9
10
  Camille::Types.literal_lines.each do |line|
@@ -17,10 +18,5 @@ module Camille
17
18
  io.string
18
19
  end
19
20
 
20
- def self.generate_ts_file
21
- if Camille::Configuration.ts_location
22
- File.open(Camille::Configuration.ts_location, 'w'){|f| f.write generate_ts}
23
- end
24
- end
25
21
  end
26
22
  end
@@ -34,9 +34,6 @@ module Camille
34
34
  end
35
35
 
36
36
  def process_action(*)
37
- if exception = Camille::Loader.exception
38
- raise exception
39
- end
40
37
  if endpoint = camille_endpoint
41
38
  params.deep_transform_keys!{|key| key.to_s.underscore}
42
39
  super
@@ -19,7 +19,6 @@ module Camille
19
19
 
20
20
  eager_load
21
21
  construct_controller_name_to_schema_map
22
- Camille::CodeGenerator.generate_ts_file
23
22
  end
24
23
  end
25
24
 
@@ -41,14 +40,10 @@ module Camille
41
40
  @zeitwerk_loader.reload
42
41
  eager_load
43
42
  construct_controller_name_to_schema_map
44
- Camille::CodeGenerator.generate_ts_file
45
43
  end
46
44
  end
47
45
 
48
46
  def register_routes router_context
49
- if exception = Camille::Loader.exception
50
- raise exception
51
- end
52
47
  Camille::Loader.loaded_schemas.each do |schema|
53
48
  schema.endpoints.each do |name, endpoint|
54
49
  router_context.public_send(endpoint.verb, endpoint.path, controller: schema.path.gsub(/^\//, ''), action: endpoint.name, as: false)
@@ -86,34 +81,8 @@ module Camille
86
81
 
87
82
  def reload
88
83
  synchronize do
89
- begin
90
- @exception = nil
91
- reload_types_and_schemas
92
- Rails.application.reload_routes!
93
-
94
- # just for spec
95
- @last_reload = Time.now
96
- rescue Exception => e
97
- Rails.logger.error e
98
- @exception = e
99
- end
100
- end
101
- end
102
-
103
- def exception
104
- synchronize do
105
- @exception
106
- end
107
- end
108
-
109
- def setup_listen app
110
- if !app.config.cache_classes
111
- require 'listen'
112
- listener = Listen.to("#{app.root}/config/camille") do |changed|
113
- #puts "Change detected. Camille reloading..."
114
- Camille::Loader.reload
115
- end
116
- listener.start
84
+ reload_types_and_schemas
85
+ Rails.application.reload_routes!
117
86
  end
118
87
  end
119
88
 
@@ -0,0 +1,13 @@
1
+ require 'action_controller'
2
+
3
+ module Camille
4
+ class MainController < ActionController::Base
5
+ def endpoints_ts
6
+ if Rails.env.development?
7
+ render plain: Camille::CodeGenerator.generate_ts
8
+ else
9
+ head 404
10
+ end
11
+ end
12
+ end
13
+ end
@@ -8,16 +8,25 @@ module Camille
8
8
  ActionController::Base.include(Camille::ControllerExtension)
9
9
 
10
10
  Camille::Loader.setup_zeitwerk_loader(app)
11
- Camille::Loader.setup_listen(app)
12
11
 
13
12
  app.routes.prepend do
13
+ get '/camille/endpoints.ts' => 'camille/main#endpoints_ts'
14
14
  Camille::Loader.register_routes(self)
15
15
  end
16
16
 
17
+ dir = "#{Rails.root}/config/camille"
18
+
19
+ update_checker = ActiveSupport::FileUpdateChecker.new([], {dir => ['rb']}) do
20
+ Camille::Loader.reload
21
+ end
22
+
23
+ app.reloaders << update_checker
24
+
17
25
  app.reloader.to_run do
18
26
  require_unload_lock!
19
- Camille::Loader.reload
27
+ update_checker.execute_if_updated
20
28
  end
29
+
21
30
  end
22
31
 
23
32
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Camille
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/camille.rb CHANGED
@@ -28,6 +28,7 @@ require_relative "camille/controller_extension"
28
28
  require_relative "camille/loader"
29
29
  require_relative "camille/configuration"
30
30
  require_relative "camille/code_generator"
31
+ require_relative "camille/main_controller"
31
32
 
32
33
  module Camille
33
34
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camille
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 辻彩
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-10 00:00:00.000000000 Z
11
+ date: 2023-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,20 +30,6 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8'
33
- - !ruby/object:Gem::Dependency
34
- name: listen
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.3'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '3.3'
47
33
  description: ''
48
34
  email:
49
35
  - cichol@live.cn
@@ -67,6 +53,7 @@ files:
67
53
  - lib/camille/endpoint.rb
68
54
  - lib/camille/line.rb
69
55
  - lib/camille/loader.rb
56
+ - lib/camille/main_controller.rb
70
57
  - lib/camille/railtie.rb
71
58
  - lib/camille/schema.rb
72
59
  - lib/camille/schemas.rb