diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 02fdaf09e05bdf2faf6384b9b0c40da5981634a9..d2662d61da6ceadd327a9fd9977a324713e44255 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,10 @@ +* Generator a `.keep` file in the `tmp` folder by default as many scripts + assume the existence of this folder and most would fail if it is absent. + + See #20299. + + *Yoong Kang Lim*, *Sunny Juneja* + * `config.static_index` configures directory `index.html` filename Set `config.static_index` to serve a static directory index file not named diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 1047a2c4298326e3b4e9b35eb44704cfbc975a5e..152c26860e175dd3c44a5af1143cb557ecf3dfc4 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -141,6 +141,7 @@ def test end def tmp + empty_directory_with_keep_file "tmp" empty_directory "tmp/cache" empty_directory "tmp/cache/assets" end diff --git a/railties/lib/rails/generators/rails/app/templates/gitignore b/railties/lib/rails/generators/rails/app/templates/gitignore index e4a00ad181e4e3614806f9b84de6da60f00aee42..1b8cf8a9fa4ba549a551a6f361d65e01458f51ac 100644 --- a/railties/lib/rails/generators/rails/app/templates/gitignore +++ b/railties/lib/rails/generators/rails/app/templates/gitignore @@ -15,7 +15,8 @@ <% end -%> # Ignore all logfiles and tempfiles. /log/* +/tmp/* <% if keeps? -%> !/log/.keep +!/tmp/.keep <% end -%> -/tmp diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 2bfa05a0b85bc83e73689fd4a86b9d34c50882b2..af1c05cab112754cd4e5c3b9f58ffd67067e82c1 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -44,6 +44,7 @@ vendor/assets vendor/assets/stylesheets vendor/assets/javascripts + tmp tmp/cache tmp/cache/assets ) @@ -606,6 +607,32 @@ def test_gitignore_when_non_sqlite3_db end end + def test_create_keeps + run_generator + folders_with_keep = %w( + app/assets/images + app/mailers + app/models + app/controllers/concerns + app/models/concerns + lib/tasks + lib/assets + log + test/fixtures + test/fixtures/files + test/controllers + test/mailers + test/models + test/helpers + test/integration + tmp + vendor/assets/stylesheets + ) + folders_with_keep.each do |folder| + assert_file("#{folder}/.keep") + end + end + def test_psych_gem run_generator gem_regex = /gem 'psych',\s+'~> 2.0',\s+platforms: :rbx/