Skip to content

Commit 85adf18

Browse files
committed
dev: setup devcontainer (DX improvement)
1 parent 462c942 commit 85adf18

File tree

9 files changed

+70
-17
lines changed

9 files changed

+70
-17
lines changed

.devcontainer/Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM ghcr.io/rails/devcontainer/images/ruby:3.3.6

.devcontainer/compose.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: "app"
2+
services:
3+
html2rss-web:
4+
build:
5+
context: ..
6+
dockerfile: .devcontainer/Dockerfile
7+
ports:
8+
- "3000:3000"
9+
volumes:
10+
- ../..:/workspaces:cached
11+
- type: bind
12+
source: ../config/feeds.yml
13+
target: /app/config/feeds.yml
14+
read_only: true
15+
environment:
16+
RACK_ENV: development
17+
HEALTH_CHECK_USERNAME: health
18+
HEALTH_CHECK_PASSWORD: please-set-YOUR-OWN-veeeeeery-l0ng-aNd-h4rd-to-gue55-Passw0rd!
19+
AUTO_SOURCE_ENABLED: true
20+
AUTO_SOURCE_USERNAME: foo
21+
AUTO_SOURCE_PASSWORD: bar
22+
AUTO_SOURCE_ALLOWED_ORIGINS: 127.0.0.1:3000

.devcontainer/devcontainer.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "app",
3+
"service": "html2rss-web",
4+
"dockerComposeFile": "compose.yml",
5+
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
6+
"features": {
7+
"ghcr.io/devcontainers/features/github-cli:1": {}
8+
},
9+
"forwardPorts": [
10+
3000
11+
],
12+
"customizations": {
13+
"vscode": {
14+
"settings": {
15+
"ruby.format": true,
16+
"ruby.lint": true
17+
},
18+
"extensions": [
19+
"Shopify.ruby-lsp"
20+
]
21+
}
22+
},
23+
"postCreateCommand": "bundle install"
24+
}

.rubocop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ AllCops:
1111
Metrics/BlockLength:
1212
Exclude:
1313
- Rakefile
14-
ExcludedMethods:
14+
AllowedMethods:
1515
- route
1616

1717
Naming/RescuedExceptionsVariableName:

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.3.0
1+
3.3.6

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ When you specify `SENTRY_DSN` in your environment variables, the application wil
191191

192192
Check out the git repository and…
193193

194+
### using Devcontainer (recommended)
195+
196+
Open the cloned repository in your devcontainer supporting IDE (i.e. VSCode). That's it. Happy coding.
197+
194198
### Using Docker
195199

196200
This approach allows you to experiment without installing Ruby on your machine.

app.rb

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,7 @@ def self.development? = ENV['RACK_ENV'] == 'development'
5656
plugin :typecast_params
5757
plugin :basic_auth
5858

59-
Dir['routes/**/*.rb'].each do |f|
60-
if development?
61-
Unreloader.require f
62-
else
63-
require_relative f
64-
end
65-
end
59+
Dir['routes/**/*.rb'].each { |f| require_relative f }
6660

6761
route do |r|
6862
r.public
@@ -83,13 +77,7 @@ def self.development? = ENV['RACK_ENV'] == 'development'
8377
end
8478
end
8579

86-
Dir['helpers/*.rb'].each do |f|
87-
if development?
88-
Unreloader.require f
89-
else
90-
require_relative f
91-
end
92-
end
80+
Dir['helpers/*.rb'].each { |f| require_relative f }
9381
end
9482
end
9583
end

config.ru

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@ if ENV.key?('SENTRY_DSN')
2929
end
3030

3131
dev = ENV.fetch('RACK_ENV', nil) == 'development'
32-
requires = Dir['app/**/*.rb']
32+
requires = Dir[
33+
'app/**/*.rb',
34+
'helpers/**/*.rb',
35+
'roda/**/*.rb',
36+
'routes/**/*.rb',
37+
]
3338

3439
if dev
3540
require 'logger'

spec/html2rss/web/helpers/auto_source_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010

1111
RSpec.describe Html2rss::Web::AutoSource do # rubocop:disable RSpec/SpecFilePathFormat
1212
context 'when ENV variables are not set' do
13+
around do |example|
14+
ClimateControl.modify AUTO_SOURCE_ENABLED: nil,
15+
AUTO_SOURCE_USERNAME: nil,
16+
AUTO_SOURCE_PASSWORD: nil,
17+
AUTO_SOURCE_ALLOWED_ORIGINS: nil do
18+
example.run
19+
end
20+
end
21+
1322
describe '.enabled?' do
1423
subject { described_class.enabled? }
1524

0 commit comments

Comments
 (0)