nitrolinks-rails 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +26 -0
- data/app/assets/javascripts/nitrolinks/load-helper.coffee +42 -0
- data/app/assets/javascripts/nitrolinks/testing.coffee +0 -13
- data/lib/nitrolinks/capybara.rb +5 -0
- data/lib/nitrolinks/capybara/jscript.rb +18 -0
- data/lib/nitrolinks/capybara/wait_for_things.rb +22 -0
- data/lib/nitrolinks/rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e6a69c055759d75ac97aaa8a376597a8dd61219
|
4
|
+
data.tar.gz: 0bf0b7d6e666b9203761d37a670932b403ed0101
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dec23654252da3c591c593058f2f8c477e940951637be0f98384b6058e3a1b0f1cf9630781ae4b2509e19fe1a91c51bc84eba96f556813ef759568cb440dc607
|
7
|
+
data.tar.gz: 0e0fc1339c39586ad92538c38aee79646596b8cda875773ef8c3dbd995e33a667e653495908d2bdfe1ae55538817b5671b27d1de0c6fe2a9436e2b574c3a9a08
|
data/README.md
CHANGED
@@ -19,11 +19,15 @@ gem 'nitrolinks-rails'
|
|
19
19
|
|
20
20
|
And then execute:
|
21
21
|
|
22
|
+
```sh
|
22
23
|
$ bundle
|
24
|
+
```
|
23
25
|
|
24
26
|
Or install it yourself as:
|
25
27
|
|
28
|
+
```sh
|
26
29
|
$ gem install nitrolinks-rails
|
30
|
+
```
|
27
31
|
|
28
32
|
## Usage
|
29
33
|
|
@@ -33,6 +37,28 @@ Include nitrolinks in your application.js
|
|
33
37
|
//= require nitrolinks
|
34
38
|
```
|
35
39
|
|
40
|
+
### Cucumber
|
41
|
+
|
42
|
+
If you are using cucumber with capybara, add this:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
# features/support/nitrolinks.rb
|
46
|
+
|
47
|
+
require 'nitrolinks/capybara/jscript'
|
48
|
+
require 'nitrolinks/capybara/wait_for_things'
|
49
|
+
|
50
|
+
World(Nitrolinks::Capybara::Jscript)
|
51
|
+
World(Nitrolinks::Capybara::WaitForThings)
|
52
|
+
```
|
53
|
+
|
54
|
+
Then on your application add something like this:
|
55
|
+
|
56
|
+
```html
|
57
|
+
<% if Rails.env == 'test' %>
|
58
|
+
<%= javascript_include_tag 'nitrolinks/load-helper' %>
|
59
|
+
<% end %>
|
60
|
+
```
|
61
|
+
|
36
62
|
## Development
|
37
63
|
|
38
64
|
To install this gem onto your local machine, run `bundle exec rake install`. To
|
@@ -0,0 +1,42 @@
|
|
1
|
+
whenReady = (fn) ->
|
2
|
+
if (if document.attachEvent then document.readyState == 'complete' else document.readyState != 'loading')
|
3
|
+
fn()
|
4
|
+
else
|
5
|
+
document.addEventListener "DOMContentLoaded", ->
|
6
|
+
fn()
|
7
|
+
|
8
|
+
eventListen = (event, handler) ->
|
9
|
+
document.addEventListener event, (e) ->
|
10
|
+
handler.call document, e
|
11
|
+
|
12
|
+
class NitrolinksLoadHelper
|
13
|
+
constructor: (@window, @document) ->
|
14
|
+
@active = false
|
15
|
+
|
16
|
+
body: ->
|
17
|
+
document.querySelector('body')
|
18
|
+
|
19
|
+
markAsLoading: (from)->
|
20
|
+
@active = true
|
21
|
+
@body().classList.add('testing-visiting')
|
22
|
+
|
23
|
+
markAsDoneLoading: ->
|
24
|
+
@active = false
|
25
|
+
@body().classList.remove('testing-visiting')
|
26
|
+
|
27
|
+
listen: ->
|
28
|
+
eventListen 'nitrolinks:visit', =>
|
29
|
+
@markAsLoading('nitrolinks:visit')
|
30
|
+
|
31
|
+
loads = (e) =>
|
32
|
+
@markAsDoneLoading()
|
33
|
+
|
34
|
+
eventListen 'nitrolinks:load', loads
|
35
|
+
eventListen 'nitrolinks:load-blank', loads
|
36
|
+
|
37
|
+
whenReady =>
|
38
|
+
@nitroLoadHelper = new NitrolinksLoadHelper(window, document)
|
39
|
+
@nitroLoadHelper.listen()
|
40
|
+
@nitroLoadHelper.markAsDoneLoading()
|
41
|
+
|
42
|
+
|
@@ -35,21 +35,9 @@ class NitrolinksTesting
|
|
35
35
|
body: ->
|
36
36
|
select('body')
|
37
37
|
|
38
|
-
markAsLoading: (from)->
|
39
|
-
@active = true
|
40
|
-
@body().classList.add('testing-visiting')
|
41
|
-
|
42
|
-
markAsDoneLoading: ->
|
43
|
-
@active = false
|
44
|
-
@body().classList.remove('testing-visiting')
|
45
|
-
|
46
38
|
listen: ->
|
47
|
-
eventListen 'nitrolinks:visit', =>
|
48
|
-
@markAsLoading('nitrolinks:visit')
|
49
|
-
|
50
39
|
loads = (e) =>
|
51
40
|
@loadCount += 1
|
52
|
-
@markAsDoneLoading()
|
53
41
|
@showDebugData()
|
54
42
|
|
55
43
|
eventListen 'nitrolinks:load', loads
|
@@ -68,7 +56,6 @@ class NitrolinksTesting
|
|
68
56
|
return unless select('#nitro-debugging')
|
69
57
|
@addToLoaded(@window.location.href)
|
70
58
|
@showDebugData()
|
71
|
-
@markAsDoneLoading()
|
72
59
|
|
73
60
|
addToFetched: (url) ->
|
74
61
|
@addToArrayStored(@fetchLoadKey, url)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Nitrolinks
|
2
|
+
module Capybara
|
3
|
+
module Jscript
|
4
|
+
def jscript(code)
|
5
|
+
page.evaluate_script(code)
|
6
|
+
end
|
7
|
+
|
8
|
+
def expect_script(code, filter = nil)
|
9
|
+
result = jscript(code)
|
10
|
+
if filter
|
11
|
+
result = result.send(filter)
|
12
|
+
end
|
13
|
+
expect(result)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Nitrolinks
|
2
|
+
module Capybara
|
3
|
+
module WaitForThings
|
4
|
+
def wait_for_page_load
|
5
|
+
Timeout.timeout(::Capybara.default_max_wait_time) do
|
6
|
+
loop until finished_loading?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def finished_loading?
|
11
|
+
jscript('document.getElementsByClassName("testing-visiting").length').zero?
|
12
|
+
end
|
13
|
+
|
14
|
+
def pause_pls
|
15
|
+
$stderr.write 'Press enter to continue'
|
16
|
+
$stdin.gets
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nitrolinks-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wayne Duran
|
@@ -95,10 +95,14 @@ files:
|
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
97
|
- app/assets/javascripts/nitrolinks.coffee
|
98
|
+
- app/assets/javascripts/nitrolinks/load-helper.coffee
|
98
99
|
- app/assets/javascripts/nitrolinks/testing.coffee
|
99
100
|
- app/assets/javascripts/nitrolinks/utilities.coffee
|
100
101
|
- bin/rails
|
101
102
|
- config/cucumber.yml
|
103
|
+
- lib/nitrolinks/capybara.rb
|
104
|
+
- lib/nitrolinks/capybara/jscript.rb
|
105
|
+
- lib/nitrolinks/capybara/wait_for_things.rb
|
102
106
|
- lib/nitrolinks/rails.rb
|
103
107
|
- lib/nitrolinks/rails/controller.rb
|
104
108
|
- lib/nitrolinks/rails/engine.rb
|
@@ -126,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
130
|
version: '0'
|
127
131
|
requirements: []
|
128
132
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.6.13
|
130
134
|
signing_key:
|
131
135
|
specification_version: 4
|
132
136
|
summary: Single-page Apps feel with less overhead
|