active_reloader 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/LICENSE.txt +22 -0
- data/README.md +81 -0
- data/Rakefile +2 -0
- data/active_reloader.gemspec +23 -0
- data/app/assets/javascripts/active_reloader.js +1 -0
- data/app/assets/javascripts/active_reloader_initializer.js.erb +28 -0
- data/app/assets/javascripts/active_reloader_main.js +37 -0
- data/app/assets/javascripts/jquery-1.11.2.js +10346 -0
- data/app/html/iframe.html +10 -0
- data/config.ru +2 -0
- data/lib/active_reloader.rb +21 -0
- data/lib/active_reloader/configuration.rb +22 -0
- data/lib/active_reloader/engine.rb +4 -0
- data/lib/active_reloader/file_system.rb +65 -0
- data/lib/active_reloader/railtie.rb +7 -0
- data/lib/active_reloader/server.rb +43 -0
- data/lib/active_reloader/version.rb +3 -0
- metadata +98 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
<!Doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>ActiveReloader</title>
|
5
|
+
<script type="text/javascript" src="/javascripts/jquery-1.11.2.js"></script>
|
6
|
+
<script type="text/javascript" src="/javascripts/active_reloader_main.js"></script>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
</body>
|
10
|
+
</html>
|
data/config.ru
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require "active_reloader/version"
|
2
|
+
require "active_reloader/server"
|
3
|
+
require "active_reloader/railtie"
|
4
|
+
require "active_reloader/engine"
|
5
|
+
require "active_reloader/configuration"
|
6
|
+
|
7
|
+
module ActiveReloader
|
8
|
+
end
|
9
|
+
|
10
|
+
# Code to run active_reloader server
|
11
|
+
if (defined?(Rails::Server) && Rails.env.development?)
|
12
|
+
Thread.new do
|
13
|
+
server_script_path = File.expand_path("../../config.ru", __FILE__)
|
14
|
+
port = Rails::Server.new.options[:Port] + 1
|
15
|
+
ActiveReloader::Server.port = port
|
16
|
+
`rackup '#{server_script_path}' -p #{port} -E none`
|
17
|
+
end
|
18
|
+
File.write(File.expand_path("../../app/assets/javascripts/active_reloader.js", __FILE__), "//= require active_reloader_initializer");
|
19
|
+
else
|
20
|
+
File.write(File.expand_path("../../app/assets/javascripts/active_reloader.js", __FILE__), "");
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ActiveReloader
|
2
|
+
class Configuration
|
3
|
+
|
4
|
+
@@paths = ["app"]
|
5
|
+
|
6
|
+
def self.paths=(value)
|
7
|
+
@@paths = value
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.paths
|
11
|
+
if @@paths.is_a?(String)
|
12
|
+
@@paths = [@@paths]
|
13
|
+
end
|
14
|
+
@@paths
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.update(&block)
|
18
|
+
yield self
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'find'
|
3
|
+
require 'time'
|
4
|
+
module ActiveReloader
|
5
|
+
class FileSystem
|
6
|
+
def initialize(request)
|
7
|
+
@request = request
|
8
|
+
end
|
9
|
+
|
10
|
+
def notify
|
11
|
+
_notify
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def _notify
|
17
|
+
response = {"status" => 0}
|
18
|
+
watched_directories = []
|
19
|
+
|
20
|
+
rails_root = @request.params["rails_root"]
|
21
|
+
paths = @request.params["paths"]
|
22
|
+
|
23
|
+
paths.split(",").each do |path|
|
24
|
+
watched_directories << "#{rails_root}/#{path}"
|
25
|
+
end
|
26
|
+
|
27
|
+
file_paths = []
|
28
|
+
change_found = false
|
29
|
+
|
30
|
+
# Time.now.to_i gives us time in UTC
|
31
|
+
start_time = Time.now.to_i
|
32
|
+
end_time = start_time + 25
|
33
|
+
|
34
|
+
Find.find(*watched_directories) do |path|
|
35
|
+
if (FileTest.file?(path) && File.basename(path)[0] != ".")
|
36
|
+
# File.mtime gives us time in local time zone. We will convert it to UTC using to_i method on Time
|
37
|
+
file_mtime = Time.parse(File.mtime(path).to_s).to_i
|
38
|
+
if (file_mtime > start_time)
|
39
|
+
change_found = true
|
40
|
+
break
|
41
|
+
end
|
42
|
+
file_paths << path
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
while(Time.now.to_i < end_time && change_found == false)
|
47
|
+
file_paths.each do |path|
|
48
|
+
file_mtime = Time.parse(File.mtime(path).to_s).to_i
|
49
|
+
if (file_mtime > start_time)
|
50
|
+
change_found = true
|
51
|
+
break
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
if (change_found)
|
57
|
+
response["status"] = 1
|
58
|
+
end
|
59
|
+
|
60
|
+
[response.to_json]
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require "active_reloader/file_system"
|
2
|
+
module ActiveReloader
|
3
|
+
class Server
|
4
|
+
def self.start
|
5
|
+
builder = Rack::Builder.new do
|
6
|
+
map '/' do
|
7
|
+
html_response = File.read(File.expand_path("../../../app/html/iframe.html", __FILE__))
|
8
|
+
run Proc.new { [200, {"Content-Type" => "text/html"}, [html_response]] }
|
9
|
+
end
|
10
|
+
|
11
|
+
map '/check_for_changes' do
|
12
|
+
run Proc.new { |env|
|
13
|
+
req = Rack::Request.new(env)
|
14
|
+
json = ActiveReloader::FileSystem.new(req).notify
|
15
|
+
[200, {"Content-Type" => "application/json"}, json]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
map '/javascripts/jquery-1.11.2.js' do
|
20
|
+
js_code = File.read(File.expand_path("../../../app/assets/javascripts/jquery-1.11.2.js", __FILE__))
|
21
|
+
run Proc.new { [200, {"Content-Type" => "text/javascript"}, [js_code]] }
|
22
|
+
end
|
23
|
+
|
24
|
+
map '/javascripts/active_reloader_main.js' do
|
25
|
+
js_code = File.read(File.expand_path("../../../app/assets/javascripts/active_reloader_main.js", __FILE__))
|
26
|
+
run Proc.new { [200, {"Content-Type" => "text/javascript"}, [js_code]] }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.port=(value)
|
32
|
+
@@port = value
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.port
|
36
|
+
@@port
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.url
|
40
|
+
"http://localhost:#{@@port}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_reloader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Imran Latif
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: A Rails gem that reloads browser as soon as you do some changes in your
|
42
|
+
Rails app. We as web developers are sometimes bounded in Change -> Switch to Browser
|
43
|
+
-> Refresh -> Change cycle. This really hurts productivity. This gem will help you
|
44
|
+
in breaking this cumbersome routine and your browser will be refreshed automatically
|
45
|
+
whenever it detects any change in Rails code thus freeing you from that manually
|
46
|
+
updating browser and hence resulting in increased productivity.
|
47
|
+
email:
|
48
|
+
- ilatif.bwp@gmail.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- ".gitignore"
|
54
|
+
- Gemfile
|
55
|
+
- LICENSE
|
56
|
+
- LICENSE.txt
|
57
|
+
- README.md
|
58
|
+
- Rakefile
|
59
|
+
- active_reloader.gemspec
|
60
|
+
- app/assets/javascripts/active_reloader.js
|
61
|
+
- app/assets/javascripts/active_reloader_initializer.js.erb
|
62
|
+
- app/assets/javascripts/active_reloader_main.js
|
63
|
+
- app/assets/javascripts/jquery-1.11.2.js
|
64
|
+
- app/html/iframe.html
|
65
|
+
- config.ru
|
66
|
+
- lib/active_reloader.rb
|
67
|
+
- lib/active_reloader/configuration.rb
|
68
|
+
- lib/active_reloader/engine.rb
|
69
|
+
- lib/active_reloader/file_system.rb
|
70
|
+
- lib/active_reloader/railtie.rb
|
71
|
+
- lib/active_reloader/server.rb
|
72
|
+
- lib/active_reloader/version.rb
|
73
|
+
homepage: ''
|
74
|
+
licenses:
|
75
|
+
- MIT
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.2.2
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: A Rails gem that reloads browser as soon as you do some changes in your Rails
|
97
|
+
app.
|
98
|
+
test_files: []
|