Skip to content

Commit 10ed3ed

Browse files
committed
clean unreloader setup
1 parent 5ce285e commit 10ed3ed

File tree

5 files changed

+29
-26
lines changed

5 files changed

+29
-26
lines changed

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ gem 'parallel'
1717
gem 'rack-attack'
1818
gem 'rack-cache'
1919
gem 'rack-timeout'
20-
gem 'rack-unreloader'
2120
gem 'roda'
2221
gem 'ssrf_filter'
2322

2423
gem 'puma', require: false
2524

2625
group :development do
2726
gem 'byebug'
27+
gem 'rack-unreloader'
2828
gem 'rake', require: false
2929
gem 'rubocop', require: false
3030
gem 'rubocop-performance', require: false

app.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@ def fallback_html
8080
</html>
8181
HTML
8282
end
83-
84-
# Load all helper files
85-
Dir['helpers/*.rb'].each { |f| require_relative f }
8683
end
8784
end
8885
end

config.ru

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,34 +23,40 @@ require_relative 'config/rack_attack'
2323
use Rack::Attack
2424

2525
dev = ENV.fetch('RACK_ENV', nil) == 'development'
26-
app_requires = Dir['app/**/*.rb']
27-
route_requires = Dir['routes/**/*.rb']
28-
helper_requires = Dir['helpers/**/*.rb']
2926

3027
if dev
3128
require 'logger'
29+
require 'rack/unreloader'
30+
3231
logger = Logger.new($stdout)
32+
logger.level = Logger::INFO
33+
34+
# Simple Unreloader configuration following official docs
35+
Unreloader = Rack::Unreloader.new(
36+
subclasses: %w[Roda Html2rss],
37+
logger: logger,
38+
reload: true
39+
) do
40+
Html2rss::Web::App
41+
end
3342

34-
require 'rack/unreloader'
35-
Unreloader = Rack::Unreloader.new(subclasses: %w[Roda Html2rss],
36-
logger:,
37-
reload: dev) do
38-
Html2rss::Web::App
39-
end
43+
# Load main app file
4044
Unreloader.require('app.rb') { 'Html2rss::Web::App' }
4145

42-
app_requires.each { |f| Unreloader.require(f) }
43-
route_requires.each { |f| Unreloader.require(f) }
44-
helper_requires.each { |f| Unreloader.require(f) }
46+
# Load all directories - Unreloader handles the rest
47+
Unreloader.require('helpers')
48+
Unreloader.require('app')
49+
Unreloader.require('routes')
4550

4651
run Unreloader
4752
else
4853
use Rack::Timeout
4954

55+
# Production: load everything upfront for better performance
5056
require_relative 'app'
51-
app_requires.each { |f| require_relative f }
52-
route_requires.each { |f| require_relative f }
53-
helper_requires.each { |f| require_relative f }
57+
Dir['app/**/*.rb'].each { |f| require_relative f }
58+
Dir['routes/**/*.rb'].each { |f| require_relative f }
59+
Dir['helpers/**/*.rb'].each { |f| require_relative f }
5460

5561
run(Html2rss::Web::App.freeze.app)
5662
end

routes/app.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def self.load_routes(app)
1818
def self.load_api_routes(app)
1919
app.hash_branch 'api' do |r|
2020
r.response['Content-Type'] = 'application/json'
21-
load_api_endpoints(r)
21+
Html2rss::Web::AppRoutes.load_api_endpoints(r)
2222
end
2323
end
2424

@@ -38,33 +38,33 @@ def self.load_feeds_endpoint(router)
3838
def self.load_strategies_endpoint(router)
3939
router.on 'strategies.json' do
4040
router.response['Cache-Control'] = 'public, max-age=3600'
41-
JSON.generate(ApiRoutes.list_available_strategies)
41+
JSON.generate(Html2rss::Web::ApiRoutes.list_available_strategies)
4242
end
4343
end
4444

4545
def self.load_feed_generation_endpoint(router)
4646
router.on String do |feed_name|
47-
ApiRoutes.handle_feed_generation(router, feed_name)
47+
Html2rss::Web::ApiRoutes.handle_feed_generation(router, feed_name)
4848
end
4949
end
5050

5151
def self.load_feed_routes(app)
5252
app.hash_branch 'feeds' do |r|
5353
r.on String do |feed_id|
54-
AutoSourceRoutes.handle_stable_feed(r, feed_id)
54+
Html2rss::Web::AutoSourceRoutes.handle_stable_feed(r, feed_id)
5555
end
5656
end
5757
end
5858

5959
def self.load_auto_source_routes(app)
6060
app.hash_branch 'auto_source' do |r|
61-
AutoSourceRoutes.handle_auto_source_routes(r)
61+
Html2rss::Web::AutoSourceRoutes.handle_auto_source_routes(r)
6262
end
6363
end
6464

6565
def self.load_health_check_routes(app)
6666
app.hash_branch 'health_check.txt' do |r|
67-
HealthCheckRoutes.handle_health_check_routes(r)
67+
Html2rss::Web::HealthCheckRoutes.handle_health_check_routes(r)
6868
end
6969
end
7070
end

spec/html2rss/web/app_integration_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
get "/feeds/#{feed_id}?token=valid-token"
201201

202202
expect(last_response.status).to eq(400)
203-
expect(last_response.body).to include('URL parameter required')
203+
expect(last_response.body).to include('url parameter required')
204204
end
205205
end
206206
end

0 commit comments

Comments
 (0)