Permanently setting $VERBOSE to nil causes unwanted side effects (warnings generated by app code are
silenced when triggered by a rake task but visible otherwise). silence_warnings {} would be safer to
use here since it resets $VERBOSE back to what it was when the block finishes.
* we no more have to manipulate the each caller strings by ourselves using caller_locations
* caller_locations runs slightly faster, and creates less objects than good old caller
Benchmark (loading an Engine 1000 times):
caller: 262.89 ms
caller_locations: 186.068 ms
Showing welcome page in production can expose information, which should
not be visible on production if people don't override the default root
route.
This reverts commit b0caea29c2da9f4c8bb958019813482da297067d.
Fix an issue where Journey was failing to clear the named routes hash when the
routes were reloaded and since it doesn't overwrite existing routes then if a
route changed but wasn't renamed it kept the old definition. This was being
masked by the optimised url helpers so it only became apparent when passing an
options hash to the url helper.
With Rails 4 the default index page was moved from a static file `index.html` inside the `public/` folder to an internal controller/view inside of the railties gem. This was to allow use of erb in the default index page and to remove the requirement that new apps must delete a static file to make their index pages work. While this was a good change, the functionality was unexpected to developers who wish to get their apps running in production ASAP. They will create a new app `rails new my app`, start a server to verify it works, then immediately deploy the app to verify that it can start working in production. Unfortunately locally they see a page when they visit `localhost:3000` when they visit their production app they get an error page.
We initially anticipated this problem in the original pull request, but did not properly anticipate the severity or quantity of people who would like this functionality. Having a default index page serves as an excellent litmus test for a passed deploy on default apps, and it is very unexpected to have a page work locally, but not on production.
This change makes the default index page available in production if the developer has not over-written it by defining their own `root` path inside of routes.
- As default index page is no longer in public folder, rails hits the
welcome controller in railties for index action
- If the database is not created or username and password are
incorrect in database.yml, those errors are first shown before index
action succeeds
- welcome#index succeeds iff the database is created with correct
details in database.yml
- So this information about creating database is not required in the
index template
This reverts commit 19ac034bdc9be175eff7cf54208ba14b43d97681.
And allows webservers to configure X-Sendfile-Type.
Closes#11440 thanks to [@MSch]
Conflicts:
railties/lib/rails/application.rb
This class encapsulates a lot of logic that wasn't very object oriented.
Helper methods have been created to try to make things more logical and
easy to read.
There are historical reasons that the `plugin` command was `plugin_new`, now those are no longer applicable, we should remove the naming edge case from the project. This PR is based off of comments from #11176
ATP Railties
Right now if you run the `rails plugin --help` command it fails because rails expects a command in `railties/lib/rails/commands/plugin.rb` that does not exist because the file is named `plugin_new`. This is the error:
```
ruby-2.0.0-p0 ~/documents/projects/tmp/vanilla (master)
$ rails plugin --help
/Users/schneems/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require': cannot load such file -- rails/commands/plugin (LoadError)
from /Users/schneems/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require'
from /Users/schneems/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency'
from /Users/schneems/.rvm/gems/ruby-2.0.0-p0/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require'
from /Users/schneems/.rvm/gems/ruby-2.0.0-p0/gems/railties-4.0.0/lib/rails/commands.rb:49:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
```
The deprecation rake task is no longer useful because the deprecated
methods have already been removed.
The method for silencing stderr has been removed since it was only
useful for `rake test:uncommitted` which was deprecated and removed.
In #11088, `#to_a` was added to remove a deprecation around using
`#all`. I merged, but it really should have been `#scoped` instead, as
that's the preferred replacement.
The comment on the +env_config+ method is repetitive, likely to get
outdated, and provides no useful information which cannot be gleamed
from the code. I'm therefore removing it. I'm also refactoring the check
for the presence of a secret_token in the configuration.
This reverts commit 7098d6c9ab28931acc9562a00037567609f9e529, reversing
changes made to 9ec2e2ee91568af24e09760a6de2890b89c33f56.
This make some tests fail /cc @wangjohn
Is it more suitable that using ```<th colspan="3">``` instead of three empty ```<th>```? It is simple, but what i am missing about it?
Change repetitive th tags to use colspan attribute
Update CHANGELOG.md
Update CHANGELOG.md
Railties.
The comment on the +env_config+ method is repetitive, likely to get
outdated, and provides no useful information which cannot be gleamed
from the code. I'm therefore removing it. I'm also refactoring the check
for the presence of a secret_token in the configuration.
A lot of logic for building the default middleware stack is currently
kept in Application class, but this can be encapsulated and made more
modular by being moved to its own class. Also refactored a couple of the
helper methods.
1. Used ActiveSupport::Autoload to dry-up the autoload definitions.
2. Used ActiveSupport's delegate to dry up the application proxied
attributes.
3. Did a little white space change on Rails.groups.
Currently, ActiveModel is only loaded by ActiveRecord. If you skip ActiveRecord, ActiveModel will not be required (or even autoloaded) and including `ActiveModel::Model` into a plain Ruby class will raise `NameError`.
To reproduce this:
- create a new app with `rails new my_app -O`
- create a Ruby class that includes `ActiveModel::Model` in `app/models`
- load up a Rails console and try to do anything with the class :-)
Since ActionPack relies so heavily on the ActiveModel API, this should probably be considered a dependency of the app. Another possibility would be to make it a dependency of ActionController.
When bundling a gem created with
rails plugin new
Bundler outputs the following warning when building the gem:
WARNING: licenses is empty
modified: railties/lib/rails/generators/rails/plugin_new/templates/%name%.gemspec
If you generate a fresh app without ActiverRecord, this template
exhibited a lone trailing line break. My watchful pre-commit hook
told me about it so I've fixed it here.
Prior to this change, for the following command:
$ rails new
we received "Options should be given after the application name" as an error message.
This is outdated and should be "Application name should be provided in arguments".
+ Namespace changes, overhaul of runners.
+ Internal ivar name changes
- Removed a logger globally applied to tests that spew everywhere?!?
+ Override Minitest#__run to sort tests by name.
+ Reworked testing isolation to work with the new cleaner architecture.
- Removed a bunch of tests that just test minitest straight up. I think these changes were all merged to minitest 4 a long time ago.
- Minor report output differences.
- f1805a697831 Redefined 'test_scaffold_generator_no_assets' twice.
- Only the last instance of these three definitions of the same method
was getting called when the tests were actually running.
- This commit changes names of this method so that all three
definitions will be called
- scaffold.css is not generated by --assets=false switch.
- Test was expecting the presence of the file with --assets=false
- This issue was not discovered in f1805a697831b because it was
redefining the same method twice
A regression was introduced in 5b3bb6, generating route from within an
engine to an another engine resulted in prefixing a path with the
SCRIPT_NAME value.
The regression was caused by the fact that SCRIPT_NAME should be
appended only if it's the SCRIPT_NAME for the application, not if it's
SCRIPT_NAME from the current engine.
closes#10409
Otherwise we get extra indent for the <td> elements due to the extra
spaces at the beginning of the lines, like this:
<tr>
<td><%= author.name %></td>
<td><%= link_to 'Show', author %></td>
<td><%= link_to 'Edit', edit_author_path(author) %></td>
Following up on an observation by @rafaelfranca
https://github.com/rails/rails/pull/10170/files#r3753963
Reduce the number of gsub calls to the two cases where inputs are concatenated
from various sources and with inconsistent indentation.
Also zap extraneous spacing from the sass-rails line... presumably this is a
holdover from a previous time where this aligned the version string with an
adjacent line.