Commit Graph

3720 Commits

Author SHA1 Message Date
eileencodes
5df84533d5 Fix database loading when ERB is single line ternary
*sigh* this seems like the never ending bug. I don't love or even like
this fix but it does _work_.

Rafael suggested using `dummy_key: dummy_value` but unfortunately
that doesn't work. So we're left with checking whethere there might be
ternary type things in the content and then assuming that we want to
replace the line with a key value pair.

Technically fixes https://github.com/rails/rails/issues/36088
2019-05-10 16:28:08 -04:00
Eileen M. Uchitelle
d155f61b64 Merge pull request #36196 from st0012/fix-29947
Hide malformed parameters from error page

Accidentally merged this to 6-0-stable so forward porting it to master
here instead.
2019-05-07 15:14:14 -04:00
yuuji.yaginuma
85a8bc644b Make generated test work even when using virtual attributes
The virtual attributes(`attachment` and `rich_text`) can't set value
with `fill_in`. So avoid using it. Once #35885 is merged, will be
modified to use it.

Also, add checking attachment attached or not for avoiding
`DelegationError` when attachment didn't attach.
2019-05-05 09:55:37 +09:00
Xavier Noria
b6e17b6a4b new config to opt-out from adding app directories to $LOAD_PATH 2019-04-28 13:48:26 +02:00
st0012
d63f9383a6 Remove action_controller.perform_caching from api app's configs
As suggested in https://github.com/rails/rails/issues/35602#issuecomment-485833483, because we don't provide view caching and doesn't include `ActionController::Caching` for api apps, we should also avoid generating

```ruby
config.action_controller.perform_caching = true
```

for those api apps. So it won't confuse people.

**But because `perform_caching` will be `true` if not set, the behavior of the app would still be the same without these configs.**
2019-04-24 02:08:13 +08:00
Xavier Noria
1b2efe5a11 upgrades Zeitwerk to 2.1.4
This commit more or less undoes 9b5401f, restores autoloaded? not to
touch the descendants tracker, and autoloaded_constants because it is
documented in the guide.
2019-04-23 01:18:21 +02:00
Rafael França
b62b038d9a
Revert "Include Caching module for ActionController::API" 2019-04-22 17:20:48 -04:00
Guillermo Iguaran
216ef01d14
Merge pull request #36038 from st0012/fix-35602
Include Caching module for ActionController::API
2019-04-22 16:05:51 -05:00
Richard Macklin
ef12ccfd8b Make system tests take failed screenshots in before_teardown hook
Previously we were calling the `take_failed_screenshot` method in an
`after_teardown` hook. However, this means that other teardown hooks
have to be executed before we take the screenshot. Since there can be
dynamic updates to the page after the assertion fails and before we
take a screenshot, it seems desirable to minimize that gap as much as
possible. Taking the screenshot in a `before_teardown` rather than an
`after_teardown` helps with that, and has a side benefit of allowing
us to remove the nested `ensure` commented on here:
https://github.com/rails/rails/pull/34411#discussion_r232819478
2019-04-20 19:32:30 -07:00
Gannon McGibbon
d3dc651a81
Merge pull request #35896 from jlw/bug/active-jobless-seeds
[#35782] Allow loading seeds without ActiveJob (~> 5.2.3)
2019-04-20 12:39:03 +09:00
yuuji.yaginuma
21747560be Remove duplicated test
With 8b4d344815655027d9f7584c0a59271dce8f1d5a, `test_required_polymorphic_belongs_to_generates_correct_model`
and `test_required_and_polymorphic_are_order_independent` are completely
same. Also, remove `required` from test name because that not passed to
generator.
2019-04-20 09:30:22 +09:00
eileencodes
f9244c6585 Handle up/down for multiple databases
This change adds the ability to run up/down for a database in a multi-db
environment.

If you have an app with a primary and animals database the following
tasks will be generated:

```
VERSION=123 rake db:migrate:up:primary
VERSION=123 rake db:migrate:up:primary

VERSION=123 rake db:migrate:down:primary
VERSION=123 rake db:migrate:up:animals
```

I didn't generate descriptions with them since we don't generate a
description for a single database application.

In addition to this change I've made it so if your application has
multiple databases Rails will raise if you try to run `up` or `down`
without a namespace. This is because we don't know which DB you want to
run `up` or `down` against unless the app tells us, so it's safer to
just block it and recommend using namespaced versions of up/down
respectively.

The output for the raise looks like:

```
You're using a multiple database application. To use `db:migrate:down`
you must run the namespaced task with a VERSION. Available tasks are
db:migrate:down:primary and db:migrate:down:animals.
```
2019-04-19 13:14:24 -04:00
Jeremy Weathers
b08daf48da [#35782] Allow loading seeds without ActiveJob (~> 5.2.3) 2019-04-19 10:57:42 -05:00
Prathamesh Sonpatki
8b4d344815
Add null: false constraint by default for belongs_to associations
- Also deprecate passing {required} to the model generator.
- Also made sure the global config `belongs_to_required_by_default` is
  applied correctly to the model generator for `null: false` option.
2019-04-19 20:08:29 +05:30
st0012
7814d1c0ae Make sure api controllers can perform caching as well
Currently ActionController::API doesn't include Caching module, so it
can't perform caching. And even if users include it later manually, it
won't inherit application's default cache store for action_controllers.
So the only way to solve this issue is to include Caching module in
ActionController::API, too.

This closes #35602
2019-04-19 22:50:42 +09:00
Genadi Samokovarov
54df392bc5 Manage ActionDispatch::ActionableExceptions from the default middleware stack 2019-04-19 14:15:22 +09:00
Abhay Nikam
cc75e58759 Fix typo in test description from generages -> generates 2019-04-17 22:42:16 +05:30
Kasper Timm Hansen
99c520ac4a
Only retry tests on CI 2019-04-17 01:10:45 +02:00
Kasper Timm Hansen
f0b2a60536
Fix bin/update references after 8927eba83c 2019-04-17 01:05:05 +02:00
David Stosik
6f73a31c0c
Factorize bin/update in bin/setup, and make bin/setup idempotent
`bin/setup` and `bin/update` are currently almost the same file. The
only thing that keeps them apart is that one is running `bin/rails
db:setup` and the other `bin/rails db:migrate`.

I'm suggesting here that they should be a unique script, which needs to
be idempotent.

- New to a project, need to get started? `bin/setup`
- Need to install new dependencies that were added recently? `bin/setup`.

Before deprecating `bin/update`, I'm suggesting we just have it call
`bin/setup`.
2019-04-17 00:45:17 +02:00
Rafael França
19df75dc3d
Merge pull request #35997 from tjoyal/Rails/MailersController/do-not-leak-I18n-global-setting-changes
[Rails::MailersController] Do not leak I18n global setting changes
2019-04-16 15:45:20 -04:00
Thierry Joyal
963d11a000 [Rails::MailersController] Do not leak I18n global setting changes 2019-04-16 18:54:51 +00:00
utilum
742d2b2c66 Squash warning: possibly useless use of a constant
in void context
2019-04-16 18:45:25 +02:00
John Hawthorn
0bab6310d6 Find query_source_location using lazy Enumerator
This way, we only need to filter the backtrace up to the first non-noise
stack frame.

This also updates noise to be able to deal with being passed a lazy
enum. We don't need this anywhere, but it seemed better for this to be
consistent.
2019-04-15 16:13:06 -07:00
Rafael França
fbb8b68403
Merge pull request #35977 from prathamesh-sonpatki/rm-required-in-generators
Remove `required: true` from the model generator template
2019-04-15 18:11:55 -04:00
Rafael França
81c8f18d84
Merge pull request #35906 from yoones/notes-tags-registration
Notes tags registration
2019-04-15 17:46:07 -04:00
Prathamesh Sonpatki
76c1528c5f
Remove required: true from the model generator template
`belongs_to` association have `required: true` by default
https://github.com/rails/rails/pull/18937 onwards so we don't need it
in the generator template.
We still need the code for required in the command line generator as
it adds `null: false` in the migration.
2019-04-15 20:27:55 +05:30
yuuji.yaginuma
4ff2c934b5 Correctly set application path in test_app_update_does_not_change_config_target_version
This is the follow up of 10fa3b3792153c2a213f837bcf51bbf6844c1661.
2019-04-15 11:10:51 +09:00
yuuji.yaginuma
10fa3b3792 Make test application the same state as app:update
In `app:update`, it is decided whether to skip depending on whether
`Spring` is defined or not.
However, `spring` is not currently specified in Gemfile. As a result,
`app:update` determines that `Spring` is not used, and diff appears in
the result file.
If there is a difference, the console for processing the difference is
output and the test stops. To avoid this, do not include `Spring` in app.

This is a bit strange approach, so I will revisit this later.
2019-04-15 10:44:21 +09:00
Yuji Yaginuma
3a67d9b6c1
Merge pull request #35967 from ryohashimoto/do_not_app_update_in_app_generator_test
Do not execute `rails app:update` in railties/test/generators/app_generator_test.rb
2019-04-15 09:54:23 +09:00
yuuji.yaginuma
f1a354466d Fix broken AppGeneratorTest#test_spring_no_fork
The mock is called three times because the `spring_install?` call has
been added in 65344f254cde87950c7f176cb7aa09c002a6f882.
2019-04-15 08:03:45 +09:00
Xavier Noria
65344f254c generate config.cache_classes = false if Spring 2019-04-14 23:09:02 +02:00
George Claghorn
f480cfabcd
Remove the Amazon SES ingress
It's unusable and not ready to ship in Rails 6.0. We'll rewrite it for 6.1.
2019-04-14 12:15:54 -04:00
Xavier Noria
3e66ba91d5 deprecates autoloading constants during initialization [closes #35745]
See rationale in the warning message included in the patch.
2019-04-14 12:09:09 +02:00
Ryo Hashimoto
da6dc41881 use Rails::Generators::AppGenerator#update_config_files instead of rails app:update in app_generator_test.rb 2019-04-13 23:43:47 +09:00
Younes SERRAJ
6463cc0573 Adds register_tags 2019-04-12 08:55:42 +02:00
Xavier Noria
7b6b10542d improves the reloading disabled error message
The original message from Zeitwerk is "can't reload, please call
loader.enable_reloading before setup (Zeitwerk::Error)", which is not
very informative for Rails programmers.

Rails should err with a message worded in terms of its interface.
2019-04-11 23:10:13 +02:00
Ryuta Kamizono
23392eff9f Address new cop offence in railties
It is necessary to run `rubocop` manually when new cop is added since
codeclimate checks any offences only in files touched in PRs.
2019-04-12 05:56:48 +09:00
Rafael França
d5f2deb153
Merge pull request #35905 from BatedUrGonnaDie/dont-override-job-seed-adapter
Only override async adapter when seeding
2019-04-09 15:24:08 -04:00
Xavier Noria
ac786cd1f2 cleanup up constant in test suite 2019-04-09 12:13:05 +02:00
Xavier Noria
9b5401fcc9 depend on Zeitwerk 2.1.0 2019-04-09 11:06:44 +02:00
BatedUrGonnaDie
75811c37a9 Only override async adapter when seeding 2019-04-09 00:35:16 -07:00
Xavier Noria
57c7cbb162 depend on Zeitwerk 2 2019-04-07 13:05:26 +02:00
Fumiaki MATSUSHIMA
61c4be4777 Output junit format test report 2019-04-04 14:34:46 +09:00
Ryuta Kamizono
464d625324 Remove redundant begin block
We have `Style/RedundantBegin` cop (#34764) but it could not correct in
this case.
2019-04-04 09:44:51 +09:00
Ryuta Kamizono
0908184e4c Use execute_batch2 rather than execute_batch to fix performance regression for fixture loading
d8d6bd5 makes fixture loading to bulk statements by using
`execute_batch` for sqlite3 adapter. But `execute_batch` is slower and
it caused the performance regression for fixture loading.

In sqlite3 1.4.0, it have new batch method `execute_batch2`. I've
confirmed `execute_batch2` is extremely faster than `execute_batch`.
So I think it is worth to upgrade sqlite3 to 1.4.0 to use that method.

Before:

```
% ARCONN=sqlite3 bundle exec ruby -w -Itest test/cases/associations/eager_test.rb -n test_eager_loading_too_may_ids
Using sqlite3
Run options: -n test_eager_loading_too_may_ids --seed 35790

# Running:

.

Finished in 202.437406s, 0.0049 runs/s, 0.0049 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
ARCONN=sqlite3 bundle exec ruby -w -Itest  -n test_eager_loading_too_may_ids  142.57s user 60.83s system 98% cpu 3:27.08 total
```

After:

```
% ARCONN=sqlite3 bundle exec ruby -w -Itest test/cases/associations/eager_test.rb -n test_eager_loading_too_may_ids
Using sqlite3
Run options: -n test_eager_loading_too_may_ids --seed 16649

# Running:

.

Finished in 8.471032s, 0.1180 runs/s, 0.1180 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
ARCONN=sqlite3 bundle exec ruby -w -Itest  -n test_eager_loading_too_may_ids  10.71s user 1.36s system 95% cpu 12.672 total
```
2019-04-04 03:27:46 +09:00
Benoit Daloze
f069ac2156 Add test that the listen gem is included when RUBY_ENGINE is not 'ruby'
* The fix is already in master since https://github.com/rails/rails/pull/34243
* See https://github.com/rails/rails/pull/35482 for the fix in Rails 5.2
2019-04-03 15:45:27 +02:00
Ryuta Kamizono
b2209ca59d Auto-correct rubocop offences 2019-04-03 08:40:15 +09:00
Rafael França
6c6c579a9b
Merge pull request #35805 from excid3/attachments-field-generators
Add attachment and attachments field generators
2019-04-02 19:13:25 -04:00
Eileen M. Uchitelle
2c4dab11d1
Merge pull request #35768 from robertomiranda/r/rake-db-prepare
Add db:prepare rake task.
2019-04-02 15:33:57 -04:00