render_async 0.0.2 → 0.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1519f96a0247273fcf694f6a85bae9d668ee92db
4
+ data.tar.gz: 4a709ff43dbb29a8bccf09e285fe0e63f224aa2b
5
+ SHA512:
6
+ metadata.gz: 69aa88dbe5172447b87eb4da7cdf4b0869daa8d17b890f119e11b3a97b3ada3d35938f9f13cd54998596add714fd6cf270f3114ed1cc9054c74ff007fa9a1547
7
+ data.tar.gz: c3cafb358d191c916c8e57d1819e967e241811c1020f27f6b36830412dfa51640c02eb0402465dabb566509461021fcddd66fd30b6a94694baa7e1623462776c
@@ -0,0 +1,4 @@
1
+ [submodule "spec/fixtures/restaurant-reservations"]
2
+ path = spec/fixtures/restaurant-reservations
3
+ url = git@github.com:nikolalsvk/restaurant-reservations.git
4
+ branch = nd/render-async
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2016 Rendered Text
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,62 +1,93 @@
1
+ [![Build Status](https://semaphoreci.com/api/v1/renderedtext/render_async/branches/master/badge.svg)](https://semaphoreci.com/renderedtext/render_async)
2
+
1
3
  # RenderAsync
2
4
 
3
- Lets you render paths asynchronously in Rails with an AJAX call. You use it like this:
5
+ Renders partials to your views **asynchronously**. This is done through adding
6
+ Javascript code that does AJAX request to your controller which then renders
7
+ your partial.
4
8
 
5
- ```
6
- # routes.rb:
7
- match 'articles/counter' => 'articles#counter', :as => :articles_counter
8
- # ^ Of course you won't use match, but you get the idea.
9
+ Workflow:
9
10
 
10
- # In a view template:
11
- <%= render_async articles_counter_path %>
12
- ```
11
+ 1. user visits a page =>
12
+ 2. AJAX request on the controller action =>
13
+ 3. controller renders a partial =>
14
+ 4. partials renders in the place where you put `render_async` helper
13
15
 
14
- This will generate the following HTML:
15
-
16
- ```html
17
- <div id="render_async_1a931cec881377296672"></div>
18
-
19
- <script type="text/javascript">
20
- (function($){
21
- div_elem = $("#render_async_1a931cec881377296672");
22
- $.ajax({
23
- url: "/articles/counter",
24
- success: function(response, status) {
25
- div_elem.html(response);
26
- }
27
- });
28
- }(jQuery));
29
- </script>
30
- ```
16
+ Javascript is injected into `<%= content_for :render_async %>` so you choose
17
+ where to put it.
31
18
 
32
- ## Requirements
19
+ ## Installation
33
20
 
34
- RenderAsync depends on a footer-block in your application-wide template, like this:
21
+ Add this line to your application's Gemfile:
35
22
 
36
- ```erb
37
- <%= yield :footer %>
23
+ ```ruby
24
+ gem 'render_async', :source => "https://gem.fury.io/renderedtext/"
38
25
  ```
39
26
 
40
- And it also depends on you having included jQuery on the page.
27
+ And then execute:
41
28
 
42
- ## Installation
29
+ $ bundle
43
30
 
44
- Add this line to your application's Gemfile:
31
+ ## Usage
45
32
 
46
- gem 'render_async'
33
+ 1. Include `render_async` view helper somewhere in your views:
47
34
 
48
- And then execute:
35
+ ```ruby
36
+ # app/views/comments/show.html.erb
49
37
 
50
- $ bundle
38
+ <%= render_async comment_stats_path %>
39
+ ```
51
40
 
52
- Or install it yourself as:
41
+ 2. Then create a route that will `config/routes.rb`
42
+ ```ruby
43
+ # config/routes.rb
53
44
 
54
- $ gem install render_async
45
+ get :comment_stats, :controller => :comments
46
+ ```
47
+
48
+ 3. Fill in the logic in your controller
49
+ ```ruby
50
+ # app/controllers/comments_controller.rb
51
+
52
+ def comment_stats
53
+ @stats = Comment.get_stats
54
+
55
+ render :patial => "comment_stats"
56
+ end
57
+ ```
58
+
59
+ 4. Create a partial that will render
60
+ ```ruby
61
+ # app/views/comments/_comment_stats.html.erb
62
+
63
+ <div class="col-md-6">
64
+ <%= @stats %>
65
+ </div>
66
+ ```
67
+
68
+ 5. Add `content_for` in your base view file
69
+ ```ruby
70
+ # application.html.erb
71
+
72
+ <%= content_for :render_async %>
73
+ ```
74
+
75
+ ## Development
76
+
77
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
78
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
79
+ prompt that will allow you to experiment.
80
+
81
+ To install this gem onto your local machine, run `bundle exec rake install`. To
82
+ release a new version, update the version number in `version.rb`, and then run
83
+ `bundle exec rake release`, which will create a git tag for the version, push
84
+ git commits and tags, and push the `.gem` file to
85
+ [rubygems.org](https://rubygems.org).
55
86
 
56
87
  ## Contributing
57
88
 
58
- 1. Fork it
59
- 2. Create your feature branch (`git checkout -b my-new-feature`)
60
- 3. Commit your changes (`git commit -am 'Add some feature'`)
61
- 4. Push to the branch (`git push origin my-new-feature`)
62
- 5. Create new Pull Request
89
+ Bug reports and pull requests are welcome on GitHub at https://github.com/renderedtext/render_async.
90
+
91
+ ## License
92
+
93
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -1,15 +1,25 @@
1
- <div id="<%= container_name %>"></div>
1
+ <div id="<%= container_name %>">
2
+ <div id="<%= container_name %>_spinner" class="sk-spinner sk-spinner-double-bounce">
3
+ <div class="sk-double-bounce1"></div>
4
+ <div class="sk-double-bounce2"></div>
5
+ </div>
6
+ </div>
2
7
 
3
- <% content_for :footer do %>
8
+ <% content_for :render_async do %>
4
9
  <script type="text/javascript">
5
10
  (function($){
6
- div_elem = $("#<%= container_name %>");
7
11
  $.ajax({
8
- url: "<%= path %>",
9
- success: function(response, status) {
10
- div_elem.html(response);
11
- }
12
- });
12
+ url: "<%= path %>",
13
+ })
14
+ .done(function(response, status) {
15
+ $("#<%= container_name %>").html(response);
16
+ })
17
+ .fail(function(response, status) {
18
+ $("#<%= container_name %>").html(response);
19
+ })
20
+ .always(function(response, status) {
21
+ $("#<%= container_name %>_spinner").hide();
22
+ });
13
23
  }(jQuery));
14
24
  </script>
15
25
  <% end %>
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "render_async"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,3 +1,5 @@
1
1
  require "render_async/version"
2
+ require "render_async/view_helper"
3
+ require "render_async/engine" if defined? Rails
2
4
 
3
- require 'render_async/railtie' if defined?(Rails)
5
+ ActionView::Base.send :include, RenderAsync::ViewHelper if defined? ActionView::Base
@@ -0,0 +1,5 @@
1
+ module RenderAsync
2
+ class Engine < Rails::Engine
3
+ # Make it a Rails Engine
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module RenderAsync
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,14 @@
1
+ require 'securerandom'
2
+
3
+ module RenderAsync
4
+ module ViewHelper
5
+
6
+ def render_async(path)
7
+ container_name = "render_async_#{SecureRandom.hex(5)}#{Time.now.to_i}"
8
+
9
+ render "render_async/render_async", :container_name => container_name,
10
+ :path => path
11
+ end
12
+
13
+ end
14
+ end
@@ -6,18 +6,22 @@ require 'render_async/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "render_async"
8
8
  spec.version = RenderAsync::VERSION
9
- spec.authors = ["Kasper Grubbe"]
10
- spec.email = ["kawsper@gmail.com"]
11
- spec.description = %q{RenderAsync lets you include pages asynchronously with AJAX}
12
- spec.summary = %q{RenderAsync lets you include pages asynchronously with AJAX}
13
- spec.homepage = "https://github.com/kaspergrubbe/render_async"
9
+ spec.authors = ["Kasper Grubbe", "nikolalsvk"]
10
+ spec.email = ["nikolaseap@gmail.com"]
11
+
12
+ spec.summary = "Render parts of the page asynchronously with AJAX"
13
+ spec.description = "Load parts of your page through simple Javascript and Rails pipeline"
14
+ spec.homepage = "https://github.com/renderedtext/render_async"
14
15
  spec.license = "MIT"
15
16
 
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
22
  spec.require_paths = ["lib"]
20
23
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
24
+ spec.add_dependency "bundler", "~> 1.8"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rspec", "~> 3.2"
23
27
  end
metadata CHANGED
@@ -1,91 +1,104 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_async
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kasper Grubbe
8
+ - nikolalsvk
9
9
  autorequire:
10
- bindir: bin
10
+ bindir: exe
11
11
  cert_chain: []
12
- date: 2013-08-24 00:00:00.000000000 Z
12
+ date: 2017-05-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
- - - ~>
18
+ - - "~>"
20
19
  - !ruby/object:Gem::Version
21
- version: '1.3'
22
- type: :development
20
+ version: '1.8'
21
+ type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
- - - ~>
25
+ - - "~>"
28
26
  - !ruby/object:Gem::Version
29
- version: '1.3'
27
+ version: '1.8'
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: rake
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ! '>='
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
36
47
  - !ruby/object:Gem::Version
37
- version: '0'
48
+ version: '3.2'
38
49
  type: :development
39
50
  prerelease: false
40
51
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
52
  requirements:
43
- - - ! '>='
53
+ - - "~>"
44
54
  - !ruby/object:Gem::Version
45
- version: '0'
46
- description: RenderAsync lets you include pages asynchronously with AJAX
55
+ version: '3.2'
56
+ description: Load parts of your page through simple Javascript and Rails pipeline
47
57
  email:
48
- - kawsper@gmail.com
58
+ - nikolaseap@gmail.com
49
59
  executables: []
50
60
  extensions: []
51
61
  extra_rdoc_files: []
52
62
  files:
53
- - .gitignore
63
+ - ".gitignore"
64
+ - ".gitmodules"
65
+ - ".rspec"
54
66
  - Gemfile
67
+ - LICENSE
55
68
  - LICENSE.txt
56
69
  - README.md
57
70
  - Rakefile
58
71
  - app/views/render_async/_render_async.html.erb
72
+ - bin/console
73
+ - bin/setup
59
74
  - lib/render_async.rb
60
- - lib/render_async/rails/engine.rb
61
- - lib/render_async/railtie.rb
75
+ - lib/render_async/engine.rb
62
76
  - lib/render_async/version.rb
77
+ - lib/render_async/view_helper.rb
63
78
  - lib/render_async/view_helpers.rb
64
79
  - render_async.gemspec
65
- homepage: https://github.com/kaspergrubbe/render_async
80
+ homepage: https://github.com/renderedtext/render_async
66
81
  licenses:
67
82
  - MIT
83
+ metadata: {}
68
84
  post_install_message:
69
85
  rdoc_options: []
70
86
  require_paths:
71
87
  - lib
72
88
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
89
  requirements:
75
- - - ! '>='
90
+ - - ">="
76
91
  - !ruby/object:Gem::Version
77
92
  version: '0'
78
93
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
94
  requirements:
81
- - - ! '>='
95
+ - - ">="
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  requirements: []
85
99
  rubyforge_project:
86
- rubygems_version: 1.8.23
100
+ rubygems_version: 2.4.5.2
87
101
  signing_key:
88
- specification_version: 3
89
- summary: RenderAsync lets you include pages asynchronously with AJAX
102
+ specification_version: 4
103
+ summary: Render parts of the page asynchronously with AJAX
90
104
  test_files: []
91
- has_rdoc:
@@ -1,7 +0,0 @@
1
- module RenderAsync
2
- module Rails
3
- class Engine < ::Rails::Engine
4
- # auto wire
5
- end
6
- end
7
- end
@@ -1,11 +0,0 @@
1
- require 'render_async/view_helpers'
2
-
3
- module RenderAsync
4
- class Railtie < Rails::Railtie
5
- initializer "render_async.view_helpers" do
6
- ActionView::Base.send :include, ViewHelpers
7
- end
8
- end
9
- end
10
-
11
- require 'render_async/rails/engine'