-
-
Notifications
You must be signed in to change notification settings - Fork 205
/
app.rb
137 lines (112 loc) · 2.32 KB
/
app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
require "html_page/renderer"
require "ember_cli/path_set"
require "ember_cli/shell"
require "ember_cli/build_monitor"
require "ember_cli/deploy/file"
module EmberCli
class App
attr_reader :name, :options, :paths
def initialize(name, **options)
@name = name.to_s
@options = options
@paths = PathSet.new(
app: self,
environment: Rails.env,
rails_root: Rails.root,
ember_cli_root: EmberCli.root,
)
@shell = Shell.new(
paths: @paths,
env: env_hash,
options: options,
)
@build = BuildMonitor.new(name, @paths)
end
def root_path
paths.root
end
def dist_path
paths.dist
end
def compile
@compiled ||= begin
prepare
@shell.compile
@build.check!
true
end
end
def build
unless EmberCli.skip?
if development?
build_and_watch
elsif test?
compile
end
@build.wait!
end
end
def index_html(head:, body:)
html = HtmlPage::Renderer.new(
head: head,
body: body,
content: deploy.index_html,
)
html.render
end
def install_dependencies
@shell.install
end
def test
prepare
@shell.test
end
def check_for_errors!
@build.check!
end
private
def development?
env.to_s == "development"
end
def test?
env.to_s == "test"
end
def deploy
deploy_strategy.new(self)
end
def deploy_strategy
strategy = options.fetch(:deploy, {})
if strategy.respond_to?(:fetch)
strategy.fetch(rails_env, EmberCli::Deploy::File)
else
strategy
end
end
def rails_env
Rails.env.to_s.to_sym
end
def env
EmberCli.env
end
def build_and_watch
prepare
@shell.build_and_watch
end
def prepare
@prepared ||= begin
@build.reset
true
end
end
def excluded_ember_deps
Array.wrap(options[:exclude_ember_deps]).join("?")
end
def env_hash
ENV.to_h.tap do |vars|
vars["RAILS_ENV"] = Rails.env
vars["EXCLUDE_EMBER_ASSETS"] = excluded_ember_deps
vars["BUNDLE_GEMFILE"] = paths.gemfile.to_s if paths.gemfile.exist?
end
end
end
end