aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable
diff options
context:
space:
mode:
Diffstat (limited to 'actioncable')
-rw-r--r--actioncable/README.md2
-rw-r--r--actioncable/actioncable.gemspec2
-rw-r--r--actioncable/app/assets/javascripts/action_cable.js7
-rw-r--r--actioncable/app/javascript/action_cable/index.js8
-rw-r--r--actioncable/test/javascript/src/unit/action_cable_test.js8
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)
+ })
})
})