diff options
Diffstat (limited to 'actioncable')
-rw-r--r-- | actioncable/README.md | 2 | ||||
-rw-r--r-- | actioncable/actioncable.gemspec | 2 | ||||
-rw-r--r-- | actioncable/app/assets/javascripts/action_cable.js | 7 | ||||
-rw-r--r-- | actioncable/app/javascript/action_cable/index.js | 8 | ||||
-rw-r--r-- | actioncable/test/javascript/src/unit/action_cable_test.js | 8 |
5 files changed, 19 insertions, 8 deletions
diff --git a/actioncable/README.md b/actioncable/README.md index 60c879e1f4..38eb251f42 100644 --- a/actioncable/README.md +++ b/actioncable/README.md @@ -13,7 +13,7 @@ You can read more about Action Cable in the [Action Cable Overview](https://edge API documentation is at: -* http://api.rubyonrails.org +* https://api.rubyonrails.org Bug reports for the Ruby on Rails project can be filed here: diff --git a/actioncable/actioncable.gemspec b/actioncable/actioncable.gemspec index 29836f012f..7aefb67c51 100644 --- a/actioncable/actioncable.gemspec +++ b/actioncable/actioncable.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.author = ["Pratik Naik", "David Heinemeier Hansson"] s.email = ["pratiknaik@gmail.com", "david@loudthinking.com"] - s.homepage = "http://rubyonrails.org" + s.homepage = "https://rubyonrails.org" s.files = Dir["CHANGELOG.md", "MIT-LICENSE", "README.md", "lib/**/*", "app/assets/javascripts/action_cable.js"] s.require_path = "lib" diff --git a/actioncable/app/assets/javascripts/action_cable.js b/actioncable/app/assets/javascripts/action_cable.js index 280adbfa83..4efab2ed46 100644 --- a/actioncable/app/assets/javascripts/action_cable.js +++ b/actioncable/app/assets/javascripts/action_cable.js @@ -465,14 +465,15 @@ } } function createWebSocketURL(url) { - if (url && !/^wss?:/i.test(url)) { + var webSocketURL = typeof url === "function" ? url() : url; + if (webSocketURL && !/^wss?:/i.test(webSocketURL)) { var a = document.createElement("a"); - a.href = url; + a.href = webSocketURL; a.href = a.href; a.protocol = a.protocol.replace("http", "ws"); return a.href; } else { - return url; + return webSocketURL; } } exports.Connection = Connection; diff --git a/actioncable/app/javascript/action_cable/index.js b/actioncable/app/javascript/action_cable/index.js index 659418396f..e679745fd7 100644 --- a/actioncable/app/javascript/action_cable/index.js +++ b/actioncable/app/javascript/action_cable/index.js @@ -30,14 +30,16 @@ export function getConfig(name) { } export function createWebSocketURL(url) { - if (url && !/^wss?:/i.test(url)) { + const webSocketURL = typeof url === "function" ? url() : url + + if (webSocketURL && !/^wss?:/i.test(webSocketURL)) { const a = document.createElement("a") - a.href = url + a.href = webSocketURL // Fix populating Location properties in IE. Otherwise, protocol will be blank. a.href = a.href a.protocol = a.protocol.replace("http", "ws") return a.href } else { - return url + return webSocketURL } } diff --git a/actioncable/test/javascript/src/unit/action_cable_test.js b/actioncable/test/javascript/src/unit/action_cable_test.js index 83426fa32e..c9d34abc6d 100644 --- a/actioncable/test/javascript/src/unit/action_cable_test.js +++ b/actioncable/test/javascript/src/unit/action_cable_test.js @@ -41,5 +41,13 @@ module("ActionCable", () => { assert.equal(consumer.url, testURL) }) + + test("uses function to generate URL", assert => { + const generateURL = () => { + return testURL + } + const consumer = ActionCable.createConsumer(generateURL) + assert.equal(consumer.url, testURL) + }) }) }) |