aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Address "warning: shadowing outer local variable - parts"Ryuta Kamizono2018-12-034-7/+8
|/ / / / / | | | | | | | | | | | | | | | And hide the `READ_QUERY` internal constant.
* | | | | Merge pull request #34597 from utilum/assigned_but_unused_variable_birdYuji Yaginuma2018-12-031-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Assigned but unused variable - bird
| * | | | | Assigned but unused variable - birdutilum2018-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | See: https://travis-ci.org/rails/rails/jobs/462233144#L1384
* | | | | | Merge pull request #34598 from ↵Rafael França2018-12-021-0/+2
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | rmacklin/add-missing-authorship-to-changelog-entry Add missing authorship to ActionCable changelog entry
| * | | | | Add missing authorship to ActionCable changelog entryRichard Macklin2018-12-021-0/+2
|/ / / / / | | | | | | | | | | | | | | | | | | | | I accidentally forgot to add the author line to my changelog entry from 2bb4fdef5efc70327c018e982ff809a29ac6708b
* | | | | Merge pull request #34585 from marceloperini/marceloperini/33795Yuji Yaginuma2018-12-031-0/+1
|\ \ \ \ \ | | | | | | | | | | | | add require 'database/setup' in activestorage/test/service/s3_service_test.rb
| * | | | | add require 'database/setup' in activestorage/test/service/s3_service_test.rbMarcelo Perini Veloso2018-12-011-0/+1
| |/ / / /
* | | | | Merge pull request #34595 from albertoalmagro/remove-unnecessary-variableRyuta Kamizono2018-12-031-11/+2
|\ \ \ \ \ | | | | | | | | | | | | Remove unnecessary variable route
| * | | | | Remove unnecessary variable routeAlberto Almagro2018-12-021-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The variable `route` was only allocated to hold an object that was immediately returned. This patch removes that variable.
* | | | | | Merge pull request #34590 from rmacklin/use-websocket-adapter-in-getStateJavan Makhmali2018-12-025-4/+37
|\ \ \ \ \ \ | | | | | | | | | | | | | | Replace reference to WebSocket global with ActionCable.adapters.WebSocket
| * | | | | | Replace reference to WebSocket global with ActionCable.adapters.WebSocketRichard Macklin2018-12-015-4/+37
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The WebSocket dependency of ActionCable.Connection was made configurable in 66901c1849efae74c8a58fe0cb36afd487c067cc However, the reference here in Connection#getState was not updated to use the configurable property. This change remedies that and adds a test to verify it. Additionally, it backfills a test to ensure that Connection#open uses the configurable property.
* | | | | | Merge pull request #34588 from rmacklin/fix-yarn-lockfilesJavan Makhmali2018-12-023-2308/+2404
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Remove obsolete yarn.lock files and check in root yarn.lock file
| * | | | | Remove obsolete yarn.lock files and check in root yarn.lock fileRichard Macklin2018-12-023-2308/+2404
|/ / / / /
* / / / / Remove circular dependency warnings in ActionCable javascript and publish ↵rmacklin2018-12-0116-290/+325
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | source modules with fine-grained exports (#34370) * Replace several ActionCable.* references with finer-grained imports This reduces the number of circular dependencies among the module imports from 4: ``` (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/connection.js -> app/javascript/action_cable/index.js (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/connection_monitor.js -> app/javascript/action_cable/index.js (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/consumer.js -> app/javascript/action_cable/index.js (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/subscriptions.js -> app/javascript/action_cable/index.js ``` to 2: ``` (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/connection.js -> app/javascript/action_cable/index.js (!) Circular dependency: app/javascript/action_cable/index.js -> app/javascript/action_cable/connection.js -> app/javascript/action_cable/connection_monitor.js -> app/javascript/action_cable/index.js ``` * Remove tests that only test javascript object property assignment These tests really only assert that you can assign a property to the ActionCable global object. That's true for pretty much any object in javascript (it would only be false if the object has been frozen, or has explicitly set some properties to be nonconfigurable). * Refactor ActionCable to provide individual named exports By providing individual named exports rather than a default export which is an object with all of those properties, we enable applications to only import the functions they need: any unused functions will be removed via tree shaking. Additionally, this restructuring removes the remaining circular dependencies by extracting the separate adapters and logger modules, so there are now no warnings when compiling the ActionCable bundle. Note: This produces two small breaking API changes: - The `ActionCable.WebSocket` getter and setter would be moved to `ActionCable.adapters.WebSocket`. If a user is currently configuring this, when upgrading they'd need to either add a delegated getter/setter themselves, or change it like this: ```diff - ActionCable.WebSocket = MyWebSocket + ActionCable.adapters.WebSocket = MyWebSocket ``` Applications which don't change the WebSocket adapter would not need any changes for this when upgrading. - Similarly, the `ActionCable.logger` getter and setter would be moved to `ActionCable.adapters.logger`. If a user is currently configuring this, when upgrading they'd need to either add a delegated getter/setter themselves, or change it like this: ```diff - ActionCable.logger = myLogger + ActionCable.adapters.logger = myLogger ``` Applications which don't change the logger would not need any changes for this when upgrading. These two aspects of the public API have to change because there's no way to export a property setter for `WebSocket` (or `logger`) such that this: ```js import ActionCable from "actioncable" ActionCable.WebSocket = MyWebSocket ``` would actually update `adapters.WebSocket`. (We can only offer that if we have two separate source files like if `index.js` uses `import * as ActionCable from "./action_cable" and then exports a wrapper which has delegated getters and setters for those properties.) This API change is very minor - it should be easy for applications to add the `adapters.` prefix in their assignments or to patch in delegated setters. And especially because most applications in the wild are not ever changing the default value of `ActionCable.WebSocket` or `ActionCable.logger` (because the default values are perfect), this API breakage is worth the tree-shaking benefits we gain. * Include source code in published actioncable npm package This allows actioncable users to ship smaller javascript bundles to visitors using modern browsers, as demonstrated in this repository: https://github.com/rmacklin/actioncable-es2015-build-example In that example, the bundle shrinks by 2.8K (25.2%) when you simply change the actioncable import to point to the untranspiled src. If you go a step further, like this: ``` diff --git a/app/scripts/main.js b/app/scripts/main.js index 17bc031..1a2b2e0 100644 --- a/app/scripts/main.js +++ b/app/scripts/main.js @@ -1,6 +1,6 @@ -import ActionCable from 'actioncable'; +import * as ActionCable from 'actioncable'; let cable = ActionCable.createConsumer('wss://cable.example.com'); cable.subscriptions.create('AppearanceChannel', { ``` then the bundle shrinks by 3.6K (31.7%)! In addition to allowing smaller bundles for those who ship untranspiled code to modern browsers, including the source code in the published package can be useful in other ways: 1. Users can import individual modules rather than the whole library 2. As a result of (1), users can also monkey patch parts of actioncable by importing the relevant module, modifying the exported object, and then importing the rest of actioncable (which would then use the patched object). Note: This is the same enhancement that we made to activestorage in c0368ad090b79c19300a4aa133bb188b2d9ab611 * Remove unused commonjs & resolve plugins from ActionCable rollup config These were added when we copied the rollup config from ActiveStorage, but ActionCable does not have any commonjs dependencies (it doesn't have any external dependencies at all), so these plugins are unnecessary here * Change ActionCable.startDebugging() -> ActionCable.logger.enabled=true and ActionCable.stopDebugging() -> ActionCable.logger.enabled=false This API is simpler and more clearly describes what it does * Change Travis configuration to run yarn install at the root for ActionCable builds This is necessary now that the repository is using Yarn Workspaces
* | | | Merge pull request #34583 from gregmolnar/guides_fixRyuta Kamizono2018-12-011-1/+1
|\ \ \ \ | | | | | | | | | | fix example code syntax [ci skip]
| * | | | fix example code syntax [ci skip]Greg Molnar2018-12-011-1/+1
|/ / / /
* | | | Merge pull request #34579 from gmcgibbon/yield_in_with_delivery_jobRyuta Kamizono2018-12-011-0/+1
|\ \ \ \ | | | | | | | | | | Add yield to with_delivery_job test helper
| * | | | Add yield to with_delivery_job test helperGannon McGibbon2018-11-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Adds yield to parameterized mail test helper so assertions passed into with_delivery_job are actually ran.
* | | | | `metadata` is not passed to serviceyuuji.yaginuma2018-12-011-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ref: https://github.com/rails/rails/blob/604fac6d7191fca102380b1a5f5eb9c619fb407f/activestorage/app/models/active_storage/blob.rb#L256-L264 This fixes broken `GCSServiceTest`. https://travis-ci.org/rails/rails/jobs/461868394#L6624-L6626 Follow up to #34576.
* | | | | Merge pull request #34577 from gmcgibbon/id_as_non_pk_docsRyuta Kamizono2018-12-012-5/+8
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Clarify no support for non PK id columns [ci skip]
| * | | | | Clarify no support for non PK id columnsGannon McGibbon2018-11-302-5/+8
| |/ / / / | | | | | | | | | | | | | | | [ci skip]
* | | | | Merge pull request #33882 from ↵Rafael França2018-11-302-29/+59
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | mberlanda/mberlanda/as-inheritable-options-intialization [Realties] config_for as ActiveSupport::OrderedOptions
| * | | | | chore: implement config_for as ActiveSupport::OrderedOptionsMauro Berlanda2018-10-192-29/+59
| | | | | |
* | | | | | Merge pull request #34576 from ys/test-upload-extra-keysRafael França2018-11-301-0/+19
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Add a test with extra keys to active_storage Service#upload
| * | | | | Add a test with extra keys to active_storage Service#uploadYannick Schutz2018-11-301-0/+19
| | | | | |
* | | | | | Merge pull request #34505 from eileencodes/add-readonly-modeEileen M. Uchitelle2018-11-3010-1/+286
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Add ability to block writes to a database
| * | | | | Add ability to prevent writes to a databaseEileen Uchitelle2018-11-3010-1/+286
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This PR adds the ability to prevent writes to a database even if the database user is able to write (ie the database is a primary and not a replica). This is useful for a few reasons: 1) when converting your database from a single db to a primary/replica setup - you can fix all the writes on reads early on, 2) when we implement automatic database switching or when an app is manually switching connections this feature can be used to ensure reads are reading and writes are writing. We want to make sure we raise if we ever try to write in read mode, regardless of database type and 3) for local development if you don't want to set up multiple databases but do want to support rw/ro queries. This should be used in conjunction with `connected_to` in write mode. For example: ``` ActiveRecord::Base.connected_to(role: :writing) do Dog.connection.while_preventing_writes do Dog.create! # will raise because we're preventing writes end end ActiveRecord::Base.connected_to(role: :reading) do Dog.connection.while_preventing_writes do Dog.first # will not raise because we're not writing end end ```
* | | | | Merge pull request #34572 from kamipo/fix_scoping_with_query_methodRyuta Kamizono2018-11-303-2/+8
|\ \ \ \ \ | | | | | | | | | | | | Fix the scoping with query methods in the scope block
| * | | | | Fix the scoping with query methods in the scope blockRyuta Kamizono2018-11-303-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up #33394. #33394 only fixes the case of scoping with klass methods in the scope block which invokes `klass.all`. Query methods in the scope block also need to invoke `klass.all` to be affected by the scoping.
* | | | | | Use the full link URL instead of bit.ly [ci skip]Ryuta Kamizono2018-11-301-1/+2
| | | | | |
* | | | | | Don't expose internal `clock_gettime_supported?` class methodRyuta Kamizono2018-11-301-1/+2
| |_|_|_|/ |/| | | |
* | | | | Merge pull request #34569 from gmcgibbon/allow_attribute_aliases_in_updateRafael França2018-11-293-3/+17
|\ \ \ \ \ | | | | | | | | | | | | Allow aliased attributes in update
| * | | | | Allow aliased attributes in updateGannon McGibbon2018-11-293-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | Allow aliased attributes to be used in `#update_columns` and `#update`.
* | | | | | Merge pull request #34553 from mjtko/fix/issue-14802Rafael França2018-11-294-3/+30
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Do nothing when the same block is included again
| * | | | | Do nothing when the same block is included again.Mark J. Titorenko2018-11-294-3/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the same block is included multiple times, we no longer raise an exception or overwrite the included block instance variable. Fixes #14802. [Mark J. Titorenko + Vlad Bokov]
* | | | | | Merge pull request #34564 from toncid/patch-2Arun Agrawal2018-11-291-0/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Add a Delayed Job project link.
| * | | | | | [ci skip] Add a Delayed Job project link.Tonči Damjanić2018-11-291-0/+1
|/ / / / / / | | | | | | | | | | | | Delayed Job is mentioned multiple times in the document, but it is not linked from anywhere.
* | | | | | Merge pull request #34562 from ruralocity/active-record-query-docs-improvementRafael França2018-11-281-7/+9
|\ \ \ \ \ \ | | | | | | | | | | | | | | Improve ActiveRecord::Querying documentation [ci skip]
| * | | | | | Improve ActiveRecord::Querying documentation [ci skip]Aaron Sumner2018-11-281-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Break up long sentences * Reword some sentences to clarify subject, predicate, and object * Explain drawbacks of using count_by_sql
* | | | | | | Merge pull request #34554 from sj26/group-exception-logsRafael França2018-11-281-5/+8
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Log exceptions atomically
| * | | | | | | Avoid extra array allocationsSamuel Cochran2018-11-291-2/+2
| | | | | | | |
| * | | | | | | Log exceptions atomicallySamuel Cochran2018-11-281-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When distributed over multiple logger calls the lines can become intermixed with other log statements. Combining them into a single logger call makes sure they always get logged together.
* | | | | | | | Merge pull request #34561 from gmcgibbon/allow_spaces_in_table_namesRafael França2018-11-283-1/+12
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Allow spaces in postgres table names
| * | | | | | | Allow spaces in postgres table namesGannon McGibbon2018-11-283-1/+12
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes issue where "user post" is misinterpreted as "\"user\".\"post\"" when quoting table names with the postgres adapter.
* | | | | | | Merge pull request #34534 from gmcgibbon/ar_query_scope_body_docRafael França2018-11-281-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Clarify scope body requirements
| * | | | | | | Clarify scope body requirementsGannon McGibbon2018-11-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | | | | Add autoload hook for AbstractController::ActionNotFoundRafael Mendonça França2018-11-281-0/+1
| |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The error can be reproduced with require "bundler/setup" require "action_controller" AbstractController::ActionNotFound
* | | | | | | Merge pull request #34557 from sergioisidoro/sergio-patch-load-errorRafael França2018-11-281-2/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Patch load error in case GemSpecError
| * | | | | | | Patch load error in case GemSpecErrorsergioisidoro2018-11-281-2/+2
| | | | | | | |
* | | | | | | | Merge pull request #34550 from mogulla3/fix-argument-error-when-uploding-to-s3Eileen M. Uchitelle2018-11-282-1/+5
|\ \ \ \ \ \ \ \ | |_|_|_|/ / / / |/| | | | | | | Fix `ArgumentError` when uploading to amazon s3