aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
Commit message (Collapse)AuthorAgeFilesLines
* Autoload SyntaxErrorInTemplateGuilherme Mansur2019-06-192-0/+5
| | | | | | | | | | | | When a SyntaxError is detected in a template we raise this exception. On a first request to the server the exception we get a NameError since the exception is not required from `active_view/template/error.rb` yet. However later on it gets required and a second request will succeed. On the first request we see the rails "Something Wen Wrong" page and not the expected syntax error in template error page with the webconsole and stacktrace. By autoloading the constant we fix this issue. Co-authored-by: Gannon McGibbon <gannon.mcgibbon@gmail.com>
* Merge pull request #36482 from Shopify/fix-translation-helper-default-hashRafael França2019-06-172-1/+6
|\ | | | | Fix TranslationHelper#translate handling of Hash defaults
| * Fix TranslationHelper#translate handling of Hash defaultsJean Boussier2019-06-142-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It is sometimes expected of the `translate` methods to return a Hash, for instance it's the case of the `number.format` key. As such users might need to specify a Hash default, e.g. `translate(:'some.format', default: { separator: '.', delimiter: ',' })`. This works as expected with the `I18n.translate` methods, however `TranslationHelper#translate` apply `Array()` on the default value. As a result the default value end up as `[:separator, '.', :delimiter, ',']`.
* | :golf:Akira Matsuda2019-06-151-6/+2
| |
* | Fix rubocop violationsRyuta Kamizono2019-06-141-1/+0
|/
* Merge pull request #36477 from albertoalmagro/alberto/button-to-default-pathRafael França2019-06-131-1/+1
|\ | | | | [ci skip] Use default path in button_to documentation
| * [ci skip] Use default path in button_to documentationAlberto Almagro2019-06-131-1/+1
| | | | | | | | | | | | | | | | | | | | This is really a nit pick, but as this is the framework's documentation I think it should follow standards as many times as possible to avoid confusion in new users. If we were using `resources :articles` in routes. which is what scaffold adds, the generated helper would be `new_article_path` instead of `new_articles_path`.
* | Merge pull request #36437 from sudara/fix_programmatic_clicks_with_data_remoteGannon McGibbon2019-06-132-2/+16
|\ \ | |/ |/| Fix programmatic clicks with data-remote
| * Ensure non-mouse/programmatic clicks work with data-remoteSudara2019-06-132-2/+16
| |
* | Merge pull request #36388 from joelhawksley/actionview-componentAaron Patterson2019-06-134-1/+72
|\ \ | | | | | | Introduce ActionView::Component
| * | `RenderingHelper` supports rendering objects that `respond_to?` `:render_in`Joel Hawksley2019-06-124-1/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Natasha Umer <natashau@github.com> Co-authored-by: Aaron Patterson <tenderlove@github.com> Co-authored-by: Shawn Allen <shawnbot@github.com> Co-authored-by: Emily Plummer <emplums@github.com> Co-authored-by: Diana Mounter <broccolini@github.com> Co-authored-by: John Hawthorn <jhawthorn@github.com> Co-authored-by: Nathan Herald <myobie@github.com> Co-authored-by: Zaid Zawaideh <zawaideh@github.com> Co-authored-by: Zach Ahn <engineering@zachahn.com>
* | | Enable `Layout/EmptyLinesAroundAccessModifier` copRyuta Kamizono2019-06-1349-56/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We sometimes say "✂️ newline after `private`" in a code review (e.g. https://github.com/rails/rails/pull/18546#discussion_r23188776, https://github.com/rails/rails/pull/34832#discussion_r244847195). Now `Layout/EmptyLinesAroundAccessModifier` cop have new enforced style `EnforcedStyle: only_before` (https://github.com/rubocop-hq/rubocop/pull/7059). That cop and enforced style will reduce the our code review cost.
* | | Merge pull request #36422 from jhawthorn/parallelize_actionviewJohn Hawthorn2019-06-063-39/+13
|\ \ \ | |_|/ |/| | Run actionview tests in parallel
| * | Run actionview tests in parallelJohn Hawthorn2019-06-052-0/+12
| | |
| * | Remove actionview tests which modify fixturesJohn Hawthorn2019-06-051-39/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We shouldn't modify fixtures (or any files which are checked-in). It prevents us from parallelizing, and probably has other issues. We could fix these tests by copying the file to a tmpdir and modifying it there, but I don't think they are testing anything useful anymore. Re-initializing a resolver isn't representative of "uncached" rendering (either in dev-mode or using lookup_context.disable_cache).
* | | Bump rubocop to 0.71Abhay Nikam2019-06-061-1/+1
|/ /
* / Only clear cache when view paths are specifiedyuuji.yaginuma2019-06-041-0/+2
|/ | | | | | | | | | | | Currently, `clear_cache_if_necessary` is executed even if view paths are not set like `rails console`. If the watcher class is `EventedFileUpdateChecker` and the watch directories are empty, the application root directory will watch. This is because listen uses the current directory as the default watch directory. https://github.com/guard/listen/blob/8d85b4cd5788592799adea61af14a29bf2895d87/lib/listen/adapter/config.rb#L13 As a result, `node_modules` also watch. This cause a warning of `listen`. Ref: https://github.com/rails/rails/pull/36377#issuecomment-498399576
* Change `ActionDispatch::Response#content_type` returning Content-Type header ↵yuuji.yaginuma2019-06-011-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | as it is Since #35709, `Response#conten_type` returns only MIME type correctly. It is a documented behavior that this method only returns MIME type, so this change seems appropriate. https://github.com/rails/rails/blob/39de7fac0507070e3c5f8b33fbad6fced84d97ed/actionpack/lib/action_dispatch/http/response.rb#L245-L249 But unfortunately, some users expect this method to return all Content-Type that does not contain charset. This seems to be breaking changes. We can change this behavior with the deprecate cycle. But, in that case, a method needs that include Content-Type with additional parameters. And that method name is probably the `content_type` seems to properly. So I changed the new behavior to more appropriate `media_type` method. And `Response#content_type` changed (as the method name) to return Content-Type header as it is. Fixes #35709. [Rafael Mendonça França & Yuuji Yaginuma ]
* Merge pull request #36324 from yoones/fix-unexpected-select-tag-delete-behaviorEileen M. Uchitelle2019-05-283-1/+12
|\ | | | | Fix unexpected select_tag delete behavior when include_blank is present
| * Fix select_tag so that is doesn't change options when include_blank is setYounes SERRAJ2019-05-223-1/+12
| |
* | Wrap actionview cache expiry in a mutexJohn Hawthorn2019-05-211-8/+11
| |
* | Correct human file size examples [ci skip]Alexander Graul2019-05-201-1/+1
|/ | | | | | | | | | The `number_to_human_size` helpers in Action View and Active Support calculate the "human size" with a base of 1024. The examples should reflect that so they don't confuse the reader. The updated documentations use the values from: helper.number_to_human_size(1500)
* NPM -> npm [ci skip]Xavier Noria2019-05-121-1/+1
| | | | According to https://www.npmjs.com/.
* Remove useless find_partial methodst00122019-05-071-5/+1
|
* Remove useless `GC.start` in `test/template/render_test.rb`Ryuta Kamizono2019-05-061-14/+0
| | | | | The `GC.start` was added at b29e893, but the finalizer has been removed at 7d0ce78 in #35036.
* Clear Resolvers' cache after running RenderTestCases' test casesst00122019-05-061-4/+9
| | | | | | | | | The templates rendered in RenderTestCases tests will be cached by the resolvers unexpectedly. And this will break other tests when executed in certain order. (See https://github.com/rails/rails/issues/36154 for more detail) So to fix this issue, we just need to clear the caches on all resolvers.
* Merge pull request #35337 from ↵Rafael França2019-05-013-8/+7
|\ | | | | | | | | abhaynikam/35265-remove-unused-argument-layout-from-rendered-template Removed unused layout attribute from RenderedTemplate
| * Removed unused layout attribute from RenderedTemplateAbhay Nikam2019-03-093-8/+7
| |
* | `@controller` may not be defined here, and if so, it causes a Ruby warningAkira Matsuda2019-05-011-1/+1
| | | | | | | | e.g. via test-unit-rails' `run_setup`
* | Fixes grammar in comments on tag_name and tag_idMichael Bock2019-04-251-2/+2
| |
* | Merge pull request #32313 from lulalala/model_error_as_objectRafael França2019-04-242-7/+17
|\ \ | | | | | | Model error as object
| * | Raise deprecation for calling `[:f] = 'b'` or `[:f] << 'b'`lulalala2019-03-312-7/+17
| | | | | | | | | | | | Revert some tests to ensure back compatibility
* | | Start Rails 6.1 developmentRafael Mendonça França2019-04-243-256/+4
| | |
* | | Fix markup in CHANGELOGs [ci skip]Ryuta Kamizono2019-04-251-1/+1
| | | | | | | | | | | | Need to new line to break line in the markdown.
* | | Update the changelog to explain the fixst00122019-04-201-0/+11
| | |
* | | Bump RuboCop to 0.67.2Koichi ITO2019-04-161-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Performance cops will be extracted from RuboCop to RuboCop Performance when next RuboCop 0.68 will be released. https://github.com/rubocop-hq/rubocop/issues/5977 RuboCop 0.67 is its transition period. Since rails/rails repository uses Performance cops, This PR added rubocop-performance gem to Gemfile. And this PR fixes some offenses using the following auto-correct. ```console % bundle exec rubocop -a Offenses: activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:212:26: C: [Corrected] Layout/SpaceAroundOperators: Operator = > should be surrounded by a single space. "primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" } ^^ activerecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rb:239:26: C: [Corrected] Layout/SpaceAroundOperators: Operator => should be surrounded by a single space. "primary" => { adapter: "sqlite3", database: "db/primary.sqlite3" } ^^ actionview/test/template/resolver_shared_tests.rb:1:1: C: [Corrected] Style/FrozenStringLiteralComment: Missing magic comment # frozen_string_literal: true. module ResolverSharedTests ^ actionview/test/template/resolver_shared_tests.rb:10:33: C: [Corrected] Layout/SpaceAroundEqualsInParameterDefault: Surrounding space missing in default value assignment. def with_file(filename, source="File at #{filename}") ^ actionview/test/template/resolver_shared_tests.rb:106:5: C: [Corrected] Rails/RefuteMethods: Prefer assert_not_same over refute_same. refute_same a, b ^^^^^^^^^^^ 2760 files inspected, 5 offenses detected, 5 offenses corrected ```
* | | Merge pull request #35959 from jhawthorn/unbound_templatesRafael França2019-04-157-14/+237
|\ \ \ | | | | | | | | De-duplicate templates, introduce UnboundTemplate
| * | | Add additional test for sharing templatesJohn Hawthorn2019-04-121-1/+18
| | | |
| * | | Avoid duplication using _find_allJohn Hawthorn2019-04-121-11/+7
| | | |
| * | | Support disabling cache for DigestorJohn Hawthorn2019-04-123-22/+51
| | | | | | | | | | | | | | | | | | | | | | | | This adds a bit of complexity, but is necessary for now to avoid holding extra copies of templates which are resolved from ActionView::Digestor after disabling cache on the lookup context.
| * | | De-dup Templates, introduce UnboundTemplateJohn Hawthorn2019-04-124-10/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it's possible to have multiple copies of the "same" Template. For example, if index.html.erb is found both the :en and :fr locale, it will return a different Template object for each. The same can happen with formats, variants, and handlers. This commit de-duplicates templates, there will now only be one template per file/virtual_path/locals tuple. We need to consider virtual_path because both `render "index"`, and `render "index.html"` can both find the same file but will have different virtual_paths. IMO this is rare and should be deprecated/removed, but it exists now so we need to consider it in order to cache correctly. This commit introduces a new UnboundTemplate class, which represents a template with unknown locals. Template objects can be built from it by using `#with_locals`. Currently, this is just a convenience around caching templates, but I hope it's a helpful concept that could have more utility in the future.
| * | | Add tests against resolverJohn Hawthorn2019-04-113-0/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We didn't previously have many tests directly against the OptimizedFileSystemResolver or FileSystemResolver, though usually failures would be exposed through other tests. It's easier to test some specifics of the behaviour with unit tests. This also lets us test FileSystemResolver (non-optimized) which I don't think previously had much testing (other than from classses inheriting it).
* | | | Squash `warning: instance variable @filename not initialized`utilum2019-04-121-1/+1
|/ / /
* | | Remove FileTemplateJohn Hawthorn2019-04-043-14/+3
| | | | | | | | | | | | This is unnecessary now that we can just provide a file source
* | | Deprecate Template#refreshJohn Hawthorn2019-04-042-36/+4
| | |
* | | Add ActionView::Template::Sources::FileJohn Hawthorn2019-04-044-24/+38
| | |
* | | Don't call Template#refreshJohn Hawthorn2019-04-041-6/+1
| | | | | | | | | | | | | | | Now that Template#source will always return a source, this is unnecessary.
* | | Don't discard source after renderingJohn Hawthorn2019-04-042-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we would discard the template source after rendering, if we had a virtual path, in hopes that the virtual path would let us find our same template again going through the Resolver. Previously we discarded the source as an optimization, to avoid keeping it around in memory. By instead just reading the file every time source is called, as FileTemplate does, this is unnecessary.
* | | Fix arity warning for template handlerslocalhostdotdev2019-04-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mainly to help with knowning which template is reponsible for the warning. handler.class # => Class handler.to_s # => Coffee::Rails::TemplateHandler Before: Change: >> Class#call(template) To: >> Class#call(template, source) After: Change: >> Coffee::Rails::TemplateHandler.call(template) To: >> Coffee::Rails::TemplateHandler.call(template, source)
* | | Fix deprecation warning about variants and formatsPrathamesh Sonpatki2019-04-041-2/+2
| | | | | | | | | | | | | | | | | | - After https://github.com/rails/rails/pull/35408 and https://github.com/rails/rails/pull/35406, the `formats` and `variants` methods are deprecated in favor of `format` and `variant`.