rjs-rails 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rjs-rails.rb +1 -3
- data/lib/rjs-rails/build.js.erb +2 -2
- data/lib/rjs-rails/build/api.rb +140 -0
- data/lib/rjs-rails/build/config.rb +99 -0
- data/lib/rjs-rails/env.rb +19 -35
- data/lib/rjs-rails/{build_env.rb → moved/build_env.rb} +1 -1
- data/lib/rjs-rails/moved/env.rb +46 -0
- data/lib/rjs-rails/moved/railtie.rb +17 -0
- data/lib/rjs-rails/{runtime_env.rb → moved/runtime_env.rb} +0 -0
- data/lib/rjs-rails/railtie.rb +6 -3
- data/lib/rjs-rails/rjs_helpers.rb +4 -10
- data/lib/rjs-rails/runtime/api.rb +31 -0
- data/lib/rjs-rails/runtime/config.rb +86 -0
- data/lib/rjs-rails/sources.rb +41 -0
- data/lib/rjs-rails/sprockets.rb +34 -0
- data/lib/rjs-rails/version.rb +1 -1
- data/lib/tasks/rjs-rails.rake +9 -112
- data/vendor/assets/javascripts/r.js +8821 -6460
- data/vendor/assets/javascripts/require.js +31 -31
- metadata +48 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d03357dc42a524d14a96a92d0558bb0bbf90a1f5
|
4
|
+
data.tar.gz: e4b4b038dfb70351d7cc5f0745b48221dcf6b6cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a0f556e170e39ca84162a108768c53e965beabde97a7a20cfd62324f856bb2e2633d7106aa505fb0e744175e2b6b3d6ef1d6aef79452d38e20a36054f84a748
|
7
|
+
data.tar.gz: 499cea07c02aa931cc19cf975e92e0743bbffd59dc62d6233b19be1005596f1c280f3e129ebdef1b7b8e7ac58aac8781fb7ec5ad9690b3d4688908e6ddbf5d39
|
data/lib/rjs-rails.rb
CHANGED
data/lib/rjs-rails/build.js.erb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
var baseConfig = <%= JSON.pretty_generate(
|
1
|
+
var baseConfig = <%= JSON.pretty_generate(config_hash) %>
|
2
2
|
baseConfig["onModuleBundleComplete"] = function(data) {
|
3
3
|
console.log("Module Finished:", data.path);
|
4
4
|
for (var i=0; i<data.included.length; i++) {
|
@@ -7,7 +7,7 @@ baseConfig["onModuleBundleComplete"] = function(data) {
|
|
7
7
|
console.log("total files:", data.included.length);
|
8
8
|
};
|
9
9
|
|
10
|
-
var requirejs = require("<%=
|
10
|
+
var requirejs = require("<%= env.rjs_path %>");
|
11
11
|
|
12
12
|
requirejs.optimize(baseConfig);
|
13
13
|
|
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'rjs-rails/env'
|
2
|
+
require 'rjs-rails/sources'
|
3
|
+
require 'rjs-rails/sprockets'
|
4
|
+
require 'rjs-rails/build/config'
|
5
|
+
|
6
|
+
module RjsRails
|
7
|
+
module Build
|
8
|
+
class Api
|
9
|
+
|
10
|
+
def env
|
11
|
+
@env ||= ::RjsRails::Env.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def precompile
|
15
|
+
copy_sources
|
16
|
+
generate_build_js
|
17
|
+
optimize
|
18
|
+
prepend_path
|
19
|
+
add_assets_for_precompile
|
20
|
+
end
|
21
|
+
|
22
|
+
def copy_sources
|
23
|
+
empty_dirs
|
24
|
+
puts "=> copying sources"
|
25
|
+
asset_paths.each_with_index do |logical_path, i|
|
26
|
+
cr = "\r"
|
27
|
+
clear = "\e[0K"
|
28
|
+
print cr
|
29
|
+
print clear
|
30
|
+
print "#{i+1}/#{num_assets} #{logical_path}"
|
31
|
+
write_asset logical_path
|
32
|
+
end
|
33
|
+
puts
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def generate_build_js
|
38
|
+
puts "=> generating build.js"
|
39
|
+
template = env.template
|
40
|
+
output_file = env.build_js
|
41
|
+
File.open(template) do |f|
|
42
|
+
erb = ERB.new(f.read)
|
43
|
+
File.open(output_file , 'w') do |of|
|
44
|
+
of.write erb.result(binding)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def optimize
|
50
|
+
puts "=> optimizing "
|
51
|
+
command = "node #{env.build_js}"
|
52
|
+
IO.popen(command) do |f|
|
53
|
+
f.each { |line| puts line }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def prepend_path
|
58
|
+
puts "=> prepend_path"
|
59
|
+
assets_env = sprockets.rails_assets_env
|
60
|
+
assets_env.prepend_path env.build_dir
|
61
|
+
case Rails.env
|
62
|
+
when "development"
|
63
|
+
Rails.application.assets = assets_env
|
64
|
+
else
|
65
|
+
Rails.application.assets = assets_env.index
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def add_assets_for_precompile
|
70
|
+
puts "=> auto adding assets for precompile"
|
71
|
+
assets_array = config.assets_for_precompile
|
72
|
+
Rails.application.config.assets.precompile.concat(assets_array)
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
def config
|
77
|
+
@config ||= Config.new(env)
|
78
|
+
end
|
79
|
+
|
80
|
+
def config_hash
|
81
|
+
config.to_h
|
82
|
+
end
|
83
|
+
|
84
|
+
def assets
|
85
|
+
@assets ||= sprockets.index
|
86
|
+
end
|
87
|
+
|
88
|
+
def sources
|
89
|
+
@sources || ::RjsRails::Sources.new(env)
|
90
|
+
end
|
91
|
+
|
92
|
+
def reload!
|
93
|
+
@env = nil
|
94
|
+
@sources = nil
|
95
|
+
@assets = nil
|
96
|
+
@config = nil
|
97
|
+
@asset_paths = nil
|
98
|
+
@num_assets = nil
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
def empty_dirs
|
104
|
+
puts "Emptying #{env.sources_dir}"
|
105
|
+
FileUtils.remove_entry_secure(env.sources_dir, true)
|
106
|
+
FileUtils.mkpath env.sources_dir
|
107
|
+
|
108
|
+
puts "Emptying #{env.build_dir}"
|
109
|
+
FileUtils.remove_entry_secure(env.build_dir, true)
|
110
|
+
FileUtils.mkpath env.build_dir
|
111
|
+
end
|
112
|
+
|
113
|
+
def logical_paths
|
114
|
+
sources.paths + config.sources
|
115
|
+
end
|
116
|
+
|
117
|
+
def write_asset(logical_path)
|
118
|
+
if asset = assets.find_asset(logical_path)
|
119
|
+
filename = "#{env.sources_dir}/#{logical_path}"
|
120
|
+
asset.write_to(filename)
|
121
|
+
else
|
122
|
+
puts "WARNING could not find #{logical_path}"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def asset_paths
|
127
|
+
@asset_paths ||= assets.each_logical_path(logical_paths)
|
128
|
+
end
|
129
|
+
|
130
|
+
def num_assets
|
131
|
+
@num_assets ||= asset_paths.count
|
132
|
+
end
|
133
|
+
|
134
|
+
def sprockets
|
135
|
+
@sprockets ||= ::RjsRails::Sprockets.new
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module RjsRails
|
2
|
+
module Build
|
3
|
+
class Config
|
4
|
+
|
5
|
+
attr_accessor :env
|
6
|
+
|
7
|
+
def initialize(env = nil)
|
8
|
+
self.env = env
|
9
|
+
end
|
10
|
+
|
11
|
+
def config
|
12
|
+
@config ||= base_config.merge(user_config)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_h
|
16
|
+
config
|
17
|
+
end
|
18
|
+
|
19
|
+
def modules
|
20
|
+
config.fetch "modules", []
|
21
|
+
end
|
22
|
+
|
23
|
+
def module_names
|
24
|
+
modules.collect { |m| m["name"] }
|
25
|
+
end
|
26
|
+
|
27
|
+
def shims
|
28
|
+
config.fetch "shim", {}
|
29
|
+
end
|
30
|
+
|
31
|
+
def paths
|
32
|
+
config.fetch "paths", {}
|
33
|
+
end
|
34
|
+
|
35
|
+
def sources
|
36
|
+
sources = []
|
37
|
+
module_names.each { |m| sources << "#{m}.js" }
|
38
|
+
paths_hash = paths
|
39
|
+
shims.each do |key, _|
|
40
|
+
if paths_hash.has_key? key
|
41
|
+
sources << "#{paths_hash[key]}.js"
|
42
|
+
else
|
43
|
+
sources << "#{key}.js"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
return sources
|
47
|
+
end
|
48
|
+
|
49
|
+
def assets_for_precompile
|
50
|
+
js = []
|
51
|
+
js << 'require.js'
|
52
|
+
module_names.each { |m| js << "#{m}.js" }
|
53
|
+
js
|
54
|
+
end
|
55
|
+
|
56
|
+
def precompile_required?
|
57
|
+
! user_config.empty?
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def env
|
63
|
+
@env ||= ::RjsRails::Env.new
|
64
|
+
end
|
65
|
+
|
66
|
+
def config_path
|
67
|
+
@config_path ||= Pathname.new(env.build_yml)
|
68
|
+
end
|
69
|
+
|
70
|
+
def readable?
|
71
|
+
config_path.readable?
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def load_config
|
76
|
+
return {} if not readable?
|
77
|
+
File.open config_path do |f|
|
78
|
+
YAML.load f.read
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def base_config
|
83
|
+
base_config = ({
|
84
|
+
"baseUrl" => env.sources_dir,
|
85
|
+
"dir" => env.build_dir,
|
86
|
+
"optimize" => "none",
|
87
|
+
"skipDirOptimize" => true,
|
88
|
+
"keepBuildDir" => false,
|
89
|
+
"normalizeDirDefines" => "skip"
|
90
|
+
})
|
91
|
+
end
|
92
|
+
|
93
|
+
def user_config
|
94
|
+
@user_config ||= load_config
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/rjs-rails/env.rb
CHANGED
@@ -1,46 +1,30 @@
|
|
1
1
|
module RjsRails
|
2
2
|
class Env
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
c.extensions = [/.js$/]
|
8
|
-
c.source_dir = "#{Rails.root}/tmp/assets_source_dir"
|
9
|
-
c.build_dir = "#{Rails.root}/tmp/assets_build_dir"
|
10
|
-
c.rjs_build_yml = "#{Rails.root}/config/rjs_build.yml"
|
11
|
-
c.rjs_runtime_yml = "#{Rails.root}/config/rjs_runtime.yml"
|
12
|
-
c.rjs_path = File.expand_path("../../vendor/assets/javascripts/r.js", File.dirname(__FILE__))
|
13
|
-
c.template = File.expand_path("./build.js.erb", File.dirname(__FILE__))
|
14
|
-
c.build_js = "#{Rails.root}/tmp/build.js"
|
15
|
-
@conf = c
|
16
|
-
end
|
4
|
+
attr_accessor :sources_dir, :build_dir, :build_js
|
5
|
+
attr_accessor :build_yml, :sources_yml, :rjs_path
|
6
|
+
attr_accessor :template, :runtime_yml
|
17
7
|
|
18
|
-
def build_env
|
19
|
-
@build_env ||= RjsRails::BuildEnv.new(config)
|
20
|
-
end
|
21
|
-
|
22
|
-
def runtime_env
|
23
|
-
@runtime_env ||= RjsRails::RuntimeEnv.new(config)
|
24
|
-
end
|
25
8
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
9
|
+
def initialize
|
10
|
+
self.sources_dir = rails_path "tmp/assets_source_dir"
|
11
|
+
self.build_dir = rails_path "tmp/assets_build_dir"
|
12
|
+
self.build_js = rails_path "tmp/build.js"
|
13
|
+
self.build_yml = rails_path "config/rjs/build.yml"
|
14
|
+
self.sources_yml = rails_path "config/rjs/sources.yml"
|
15
|
+
self.runtime_yml = rails_path "config/rjs/runtime.yml"
|
16
|
+
self.rjs_path = relative_path "../../vendor/assets/javascripts/r.js"
|
17
|
+
self.template = relative_path "./build.js.erb"
|
31
18
|
end
|
32
19
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
def precompile_required?
|
38
|
-
build_env.yml_exists?
|
20
|
+
def relative_path(path)
|
21
|
+
dir = File.dirname(__FILE__)
|
22
|
+
File.expand_path path, dir
|
39
23
|
end
|
40
24
|
|
41
|
-
def
|
42
|
-
|
43
|
-
end
|
25
|
+
def rails_path(path)
|
26
|
+
"#{Rails.root}/#{path}"
|
27
|
+
end
|
44
28
|
|
45
29
|
end
|
46
|
-
end
|
30
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module RjsRails
|
2
|
+
class Env
|
3
|
+
|
4
|
+
def config
|
5
|
+
return @conf if @conf
|
6
|
+
c = ::ActiveSupport::OrderedOptions.new
|
7
|
+
c.extensions = [/.js$/]
|
8
|
+
c.source_dir = "#{Rails.root}/tmp/assets_source_dir"
|
9
|
+
c.build_dir = "#{Rails.root}/tmp/assets_build_dir"
|
10
|
+
c.rjs_build_yml = "#{Rails.root}/config/rjs_build.yml"
|
11
|
+
c.rjs_runtime_yml = "#{Rails.root}/config/rjs_runtime.yml"
|
12
|
+
c.rjs_path = File.expand_path("../../vendor/assets/javascripts/r.js", File.dirname(__FILE__))
|
13
|
+
c.template = File.expand_path("./build.js.erb", File.dirname(__FILE__))
|
14
|
+
c.build_js = "#{Rails.root}/tmp/build.js"
|
15
|
+
@conf = c
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_env
|
19
|
+
@build_env ||= RjsRails::BuildEnv.new(config)
|
20
|
+
end
|
21
|
+
|
22
|
+
def runtime_env
|
23
|
+
@runtime_env ||= RjsRails::RuntimeEnv.new(config)
|
24
|
+
end
|
25
|
+
|
26
|
+
def reload!
|
27
|
+
@build_env = nil
|
28
|
+
@runtime_env = nil
|
29
|
+
build_env
|
30
|
+
runtime_env
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_binding()
|
34
|
+
binding()
|
35
|
+
end
|
36
|
+
|
37
|
+
def precompile_required?
|
38
|
+
build_env.yml_exists?
|
39
|
+
end
|
40
|
+
|
41
|
+
def assets_for_precompile
|
42
|
+
build_env.assets_for_precompile
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RjsRails
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
initializer "rjs_rails.configure_rails_initialization" do
|
4
|
+
config.rjs = RjsRails::Env.new
|
5
|
+
ActionView::Base.send :include, RjsRails::RjsHelpers
|
6
|
+
end
|
7
|
+
|
8
|
+
config.to_prepare do
|
9
|
+
Rails.application.config.rjs.reload!
|
10
|
+
end
|
11
|
+
|
12
|
+
rake_tasks do
|
13
|
+
load File.expand_path("../tasks/rjs-rails.rake", File.dirname(__FILE__))
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
File without changes
|
data/lib/rjs-rails/railtie.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
+
require "rjs-rails/runtime/api"
|
2
|
+
require "rjs-rails/rjs_helpers"
|
3
|
+
|
1
4
|
module RjsRails
|
2
5
|
class Railtie < Rails::Railtie
|
3
6
|
initializer "rjs_rails.configure_rails_initialization" do
|
4
|
-
config.
|
7
|
+
config.rjs_runtime = RjsRails::Runtime::Api.new
|
5
8
|
ActionView::Base.send :include, RjsRails::RjsHelpers
|
6
9
|
end
|
7
10
|
|
8
11
|
config.to_prepare do
|
9
|
-
Rails.application.config.
|
12
|
+
Rails.application.config.rjs_runtime.reload!
|
10
13
|
end
|
11
14
|
|
12
15
|
rake_tasks do
|
@@ -14,4 +17,4 @@ module RjsRails
|
|
14
17
|
end
|
15
18
|
|
16
19
|
end
|
17
|
-
end
|
20
|
+
end
|