Skip to content

Commit 6b99489

Browse files
committed
Add node and yarn to devcontainer when creating a project with Javascript
1 parent 64fadc6 commit 6b99489

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

railties/lib/rails/generators/devcontainer.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ def devcontainer_features
4747
}
4848

4949
@devcontainer_features["ghcr.io/rails/devcontainer/features/activestorage"] = {} unless options[:skip_active_storage]
50+
@devcontainer_features["ghcr.io/devcontainers/features/node:1"] = {} if using_node?
51+
5052
@devcontainer_features.merge!(db_feature_for_devcontainer) if db_feature_for_devcontainer
5153

5254
@devcontainer_features

railties/lib/rails/generators/rails/app/templates/.devcontainer/devcontainer.json.tt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
// Features to add to the dev container. More info: https://containers.dev/features.
1010
"features": {
11-
<%= devcontainer_features.map { |key, value| "\"#{key}\": #{value}" }.join(",\n ") %>
11+
<%= devcontainer_features.map { |key, value| "\"#{key}\": #{value.as_json}" }.join(",\n ") %>
1212
},
1313

1414
<%- if !devcontainer_variables.empty? -%>

railties/test/generators/app_generator_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1409,6 +1409,22 @@ def test_devcontainer_no_depends_on_when_no_dependencies
14091409
end
14101410
end
14111411

1412+
def test_devcontainer_adds_node_tooling_when_required
1413+
run_generator [destination_root, "--javascript=esbuild"]
1414+
1415+
assert_devcontainer_json_file do |devcontainer_config|
1416+
assert_includes devcontainer_config["features"].keys, "ghcr.io/devcontainers/features/node:1"
1417+
end
1418+
end
1419+
1420+
def test_devcontainer_does_not_add_node_tooling_when_not_required
1421+
run_generator [destination_root]
1422+
1423+
assert_devcontainer_json_file do |devcontainer_config|
1424+
assert_not_includes devcontainer_config["features"].keys, "ghcr.io/devcontainers/features/node:1"
1425+
end
1426+
end
1427+
14121428
def test_devcontainer_dev_flag_mounts_local_rails_repo
14131429
run_generator_using_prerelease [ destination_root, "--dev" ]
14141430

0 commit comments

Comments
 (0)