camille 0.1.0 → 0.2.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: 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