Commit Graph

12253 Commits

Author SHA1 Message Date
Yoshiyuki Hirano
b20354afcc Bump license years for 2018 2017-12-31 22:36:55 +09:00
Eugene Kenny
fdd76b7370 Clarify that config.eager_load controls eager loading [ci skip]
Before Rails 4.0, `config.cache_classes` determined whether application
code was eager loaded. The `config.eager_load` option was introduced to
allow the two behaviours to be configured independently, but this
documentation was never updated to reflect that change.
2017-12-30 22:37:44 +00:00
yuuji.yaginuma
41c8e41ff1 Remove unused methods
* `assert_header` and `assert_body` were unused since 6f6a589.
* `assert_success` and `assert_missing` were unused since added.
2017-12-28 12:07:18 +09:00
Yuji Yaginuma
4943c7ed11
Prevent to install gems when run test (#31564)
`invoke_all` cause `bundle install`. This will install gems actually
defined in `Gemfile`. To avoid this, stubbed `bundle_command`.

Fixes #31557
2017-12-26 08:23:33 +09:00
yuuji.yaginuma
91a4a820fe Ensure to use repo's Gemfile in application
Puma gets bundler's info from `Bundler::ORIGINAL_ENV` for restart.
f6f3892f4d/lib/puma/launcher.rb (L168)

So, specified `BUNDLE_GEMFILE` env for use same Gemfile in the restart.

Fixes #31351
2017-12-25 06:25:10 +09:00
yuuji.yaginuma
0eefc8fdac Move test_skip_bundle to AppGeneratorTest
`skip_bundle` option was removed from plugin generator in 9b72fcc3c22a6f75f37f52dd6cb682bc00c51cf0.
2017-12-24 21:04:25 +09:00
Daniel Lopez
0a27a574c4 Removes OS specific directory separator 2017-12-21 10:35:48 +09:00
Ryuta Kamizono
5232ddad65
Merge pull request #31520 from yahonda/introduce_frozen_error_class
Handle `FrozenError` if it is available
2017-12-20 21:29:43 +09:00
Yasuo Honda
01efbc128d Handle FrozenError if it is available
This pull request handles `FrozenError` introduced by Ruby 2.5.
Refer https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/61131

Since `FrozenError` is a subclass of `RuntimeError` minitest used by master
branch can handle it, though it would be better to handle `FrozenError`
explicitly if possible.

`FrozenError` does not exist in Ruby 2.4 or lower, `frozen_error_class`
handles which exception is expected to be raised.

This pull request is intended to be merged to master,
then backported to `5-1-stable` to address #31508
2017-12-20 11:52:01 +00:00
yuuji.yaginuma
3fcf72d480 Add test case that configure config.active_support.hash_digest_class
Follow up of #31289.
2017-12-20 19:28:54 +09:00
Eugene Kenny
69d5a74393 Remove verbose_query_logs from new_framework_defaults_5_2.rb
The `app:update` rake task will regenerate `development.rb` so that it
contains this option; that means we're currently adding it to existing
apps in two places, which is unnecessary and confusing.

Also:
 - Remove inaccurate comment about which stack frames are ignored
 - Clarify that the feature uses `caller_locations`, not `caller`
 - Remove unused return value in `extract_callstack`
2017-12-20 01:09:23 +00:00
yuuji.yaginuma
373a568324 Implicitly skip bootsnap for rails new --dev
Specifying the `--dev` option is when want to change the codebase,
as it is not necessary to cache it.

Context: https://github.com/rails/rails/pull/31485#issuecomment-352452653
2017-12-19 10:15:47 +09:00
Kasper Timm Hansen
053a4c6990
Merge pull request #31348 from y-yagi/fix_31283
Raise an error only when `require_master_key` is specified
2017-12-18 19:57:35 +01:00
Anton Rieder
391ec4e392
Update new_framework_defaults_5_2.rb.tt
Be consistent in comments when mentioning AES.
2017-12-18 18:28:16 +01:00
Eileen M. Uchitelle
ce2fc70c7b
Merge pull request #31485 from y-yagi/skip_bootsnap_option
Add `skip_bootsnap` option
2017-12-18 10:09:12 -05:00
yuuji.yaginuma
35373219c9 Raise an error only when require_master_key is specified
To prevent errors from being raise in environments where credentials
is unnecessary.

Context: https://github.com/rails/rails/issues/31283#issuecomment-348801489

Fixes #31283
2017-12-18 08:04:15 +09:00
yuuji.yaginuma
c5b900da73 Add test case that active_storage:install task works within engine
Follow up of #31391
2017-12-17 09:10:36 +09:00
yuuji.yaginuma
838b40da84 Add skip_bootsnap option
`bootsnap` is a useful gem normally. However, `bootsnap` is unnecessary
when generating a Rails application to be used only for testing.
So I want to control whether use this or not by option.
2017-12-16 20:07:50 +09:00
Sean Griffin
edc54fd206
Merge pull request #31434 from olivierlacan/boot-feedback
Provide instant feedback when booting Rails
2017-12-14 16:49:02 -07:00
Eileen M. Uchitelle
4bd28efc18
Merge pull request #26815 from olivierlacan/log-query-source
Log the original call site for an ActiveRecord query
2017-12-14 08:10:19 -05:00
Ryuta Kamizono
245c1dafa8 Enable Layout/LeadingCommentSpace to not allow cosmetic changes in the future
Follow up of #31432.
2017-12-14 17:30:54 +09:00
Olivier Lacan
acc03bb695 Provide instant feedback when booting Rails
I've noticed during pair/mob programming sessions with peers that
despite the speed boosts provided by Bootsnap and Spring, there is a
noticeable latency between firing a bin/rails server command and any
feedback being provided to the console. Depending on the size of the
application this lack of feedback can make it seem like something is
wrong when Rails is simply busy initializing.

This change may seem gratuitous but by just printing one line to STDOUT
we're giving a clear signal to the Rails user that their command has
been received and that Rails is indeed booting. It almost imperciptibly
makes Rails feel more responsive.

Sure the code doesn't look very fancy but there's no other appropriate
place I could think of putting it than boot.rb.

Compare these two GIFs of booting without and with this change:

Before:
![Without Boot Feedback](https://user-images.githubusercontent.com/65950/33964140-721041fc-e025-11e7-9b25-9d839ce92977.gif)

After:
![With Boot Feedback](https://user-images.githubusercontent.com/65950/33964151-79e12f86-e025-11e7-93e9-7a75c70d408f.gif)
2017-12-13 20:50:27 -05:00
Olivier Lacan
3876defd7c Log call site for all queries
This new ActiveRecord configuration option allows you to easily
pinpoint what line of application code is triggering SQL queries in the
development log by appending below each SQL statement log the line of
Ruby code that triggered it.

It’s useful with N+1 issues, and to locate stray queries.

By default this new option ignores Rails and Ruby code in order to
surface only callers from your application Ruby code or your gems.

It is enabled on newly generated Rails 5.2 applications and can be
enabled on existing Rails applications:

```ruby
Rails.application.configure do
  # ...
  config.active_record.verbose_query_logs = true
end
```

The `rails app:upgrade` task will also add it to
`config/development.rb`.

This feature purposely avoids coupling with
ActiveSupport::BacktraceCleaner since ActiveRecord can be used without
ActiveRecord. This decision can be reverted in the future to allow more
configurable backtraces (the exclusion of gem callers for example).
2017-12-13 20:13:21 -05:00
Mehmet Emin INAC
ff25c25127
Expose Active Storage routes 2017-12-13 19:28:57 +01:00
Ryuta Kamizono
2b35826389 Enable Layout/SpaceBeforeComma rubocop rule, and fixed more
Follow up of #31390.
2017-12-12 20:00:50 +09:00
Stefan Wrobel
76e545546c
Fix secrets command deprecation message 2017-12-11 21:39:41 -08:00
Edouard CHIN
e6ef1a7673 create_fixtures doesn't work since at least a94220b66c9e4890007f66b092b25f8a64a19d31:
- The namespacing should be `ActiveRecord::FixtureSet`
- I might be missing something but I'm not sure why `create_fixtures` is useful for nowaday (unless for testing rails internal /shrug) and since it's been that long it wasn't working I think it should be fine to just fire it
2017-12-11 17:22:05 -05:00
Aaron Patterson
a50b8ea350
Set the Rails environment from an environment variable
Option parsing happens too late to have any impact on the Rails
environment.  Rails accesses the environment name and memoizes it too
early in the boot process for a commandline option to have any impact on
the database connection, so we'll change this test to set the
environment from an environment variable (and ensure it still works when
running tests with `ruby`)
2017-12-08 14:50:27 -08:00
Aaron Patterson
cd0283ef29
Revert "remove unnecessary RAILS_ENV setting"
This reverts commit 9a80f52541ed2c93ebef02909ecab3aaf9127150.
2017-12-08 13:27:30 -08:00
Aaron Patterson
a58543dbb1
Add failing test for wrong database connection
When tests are run with just `ruby`, the RAILS_ENV is set to
`development` too early, and we connect to the development database
rather than the test database.
2017-12-08 13:23:31 -08:00
Aaron Patterson
da225c0db6
Fix Rails environment when running tests with Ruby
I frequently run tests with `ruby`, not with a runner like `rake` or
`rails`.  When running the test with just `ruby` the `RAILS_ENV`
environment variable did not get set to "test", and this would cause the
tests to fail (and even mutate the development database!)

This commit adds integration tests for running tests with just `ruby`
and ensures the environment gets defaulted to "test".  I also added a
test to ensure that passing an environment to `-e` actually works (and
fixed that case too).

An interesting / annoying thing is that Minitest picks up it's plugins
by asking RubyGems for a list of files:

  ca6a71ca90/lib/minitest.rb (L92-L100)

This means that RubyGems needs to somehow know about the file before it
can return it to Minitest.  Since we are not packaging Rails as a Gem
before running the integration tests on it (duh, why would you do
that?), RubyGems doesn't know about the file, so it can't tell Minitest,
so Minitest doesn't automatically require it.  This means I had to
manually require and insert the plugin in our integration test.  I've
left comments about that in the test as well.

Ugh.
2017-12-06 20:40:04 -08:00
Tsukuru Tanimichi
6a11b0c154 Add more tests for the --webpack option 2017-12-05 18:43:15 +09:00
Tsukuru Tanimichi
b9fb74514b Modify test_webpack_option 2017-12-05 18:41:44 +09:00
Guillermo Iguaran
c383c4142a
Merge pull request #31279 from ttanimichi/tests-for-webpack-option
Add tests for the `--webpack` option
2017-12-04 10:37:54 -05:00
Tsukuru Tanimichi
915f0e682c Add tests for the --webpack option
We probably don't have any tests for the `--webpack` option.
related: #27288
2017-12-04 14:32:44 +09:00
Kasper Timm Hansen
dde620ac6e
Merge pull request #31311 from y-yagi/ignore_no_database_error_when_loading_schema_cache
Ignore `NoDatabaseError` when loading schema cache
2017-12-03 18:12:40 +01:00
yuuji.yaginuma
dbee80bca0 Make Migrator.current_version work without a current database
This is necessary in order to make the processing dependent on
`Migrator.current_version` work even without database.

Context: https://github.com/rails/rails/pull/31135#issuecomment-348404326
2017-12-03 09:50:28 +09:00
claudiob
a71bbed76a Fix typo in test error message
With the current code, a failing test shows this error, which is missing
the number of times called and has two periods at the end.

```
/railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install

Failure:
AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]:
active_storage:install expected to be called once, but was called  times..
Expected: 1
  Actual: 2
```

After the fix, the error message looks correct:

```
/railties$ be ruby -Itest test/generators/app_generator_test.rb -n test_active_storage_install

Failure:
AppGeneratorTest#test_active_storage_install [test/generators/app_generator_test.rb:313]:
active_storage:install expected to be called once, but was called 2 times.
Expected: 1
  Actual: 2
```
2017-12-02 12:00:09 -08:00
Matthew Draper
e40a00e8ac
Merge pull request #31241 from matthewd/no-after-fork
Drop the before_fork/on_worker_boot advice
2017-12-01 20:18:17 +10:30
Anton Rieder
eb9ff5fd39
Move system test dependencies to test group 2017-11-30 16:34:06 +01:00
yuuji.yaginuma
f7e3c68668 Do not overwrite by default if credentials already exists
Fixes #31286
2017-11-30 10:15:45 +09:00
Rafael Mendonça França
1bee2fb600
Build the root folder before specific files
Fixes #31282.
2017-11-29 14:56:27 -05:00
yuuji.yaginuma
9d65ac30fd Use credentials instead of keyfile in GCS sevice
The `keyfile` was renamed to `credentials` in `google-cloud-storage` 1.8.0.
https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/google-cloud-storage/CHANGELOG.md#180--2017-11-14

Although `keyfile` can still be used, but it looks like deprecate.
ddf7b2a856/google-cloud-storage/lib/google/cloud/storage.rb (L589...L590)

Therefore, I think that should use `credentials` in newly generated
applications.

Ref: https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/1802
2017-11-29 13:17:04 +09:00
Rafael Mendonça França
2837d0f334
Preparing for 5.2.0.beta2 release 2017-11-28 14:41:02 -05:00
yuuji.yaginuma
349f00beaa Use same version constraint in mysql adapter and generated application
Follow up of 924a368f5c654f5304e575c767eb0fc64adc8659
2017-11-28 15:51:59 +09:00
Rafael Mendonça França
cceeeb6e57
Preparing for 5.2.0.beta1 release 2017-11-27 14:50:03 -05:00
Rafael Mendonça França
21cd5b3031
Make form_with_generates_ids default value to be false
This will keep the behavior of an application with the defaults of a 4.2
or 5.0 application behaving the same when upgrading to 5.2.
2017-11-27 11:52:39 -05:00
Matthew Draper
84cad15213 Drop the before_fork/on_worker_boot advice
It's no longer required for Active Record, and other common libraries
(dalli, redis-rb) all seem to be fork-proof too.
2017-11-27 23:39:30 +10:30
yuuji.yaginuma
a64be3ea6f Remove Content-Security-Policy initializer in API-only Applications
Since `ContentSecurityPolicy::Middleware` is not loaded in API-only
Applications, initializer is unnecessary.
Ref: 9c10fec4c0/railties/lib/rails/application/default_middleware_stack.rb (L66..L68)
2017-11-27 21:57:22 +09:00
Prathamesh Sonpatki
30a60b4042
Added missing test for presence of CSP initializer
- Followup of #31162
2017-11-27 15:37:59 +05:30