ember-cli-rails 0.6.0 → 0.6.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +130 -47
- data/app/helpers/ember_rails_helper.rb +2 -23
- data/lib/ember-cli-rails.rb +2 -1
- data/lib/ember_cli/app.rb +7 -3
- data/lib/ember_cli/path_set.rb +0 -12
- data/lib/ember_cli/route_helpers.rb +2 -2
- data/lib/ember_cli/version.rb +1 -1
- data/lib/generators/ember/heroku/heroku_generator.rb +1 -1
- metadata +30 -7
- data/lib/ember_cli/asset_map.rb +0 -64
- data/lib/ember_cli/assets.rb +0 -51
- data/lib/ember_cli/capture.rb +0 -77
- data/lib/ember_cli/directory_asset_map.rb +0 -30
- data/lib/ember_cli/html_page.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c875893e377992ea0a7935ecff7b435f27f3dd8a
|
4
|
+
data.tar.gz: 20a40093eb23312813a4932a4471d4464e4c651e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a39aafa84caed46cd0007c4214e73d68268066a6be1c10a9ed0a9f164c461c68f54600beecbae9c2b14703aaca02f29f25e0546335fc3a484089278468250fc7
|
7
|
+
data.tar.gz: a07e683152ffe4fb647baad272dda0535eabc8b2aaafb95468a31ca664d8d43ab2cb7ae4671ef57f41bef5171238610b1a3660300ddfddf3a67a4cfde7be587d
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
master
|
2
2
|
------
|
3
3
|
|
4
|
+
0.6.1
|
5
|
+
-----
|
6
|
+
|
7
|
+
* Extract `include_ember_*_tags` and the associated code to the
|
8
|
+
`ember-cli-rails-assets` gem. Add `ember-cli-rails-assets` as a dependency.
|
9
|
+
[#363]
|
10
|
+
* Introduce `mount_ember_assets` to serve Ember assets in asset-helper style
|
11
|
+
projects.
|
12
|
+
|
13
|
+
[#363]: https://github.com/thoughtbot/ember-cli-rails/pull/363
|
14
|
+
|
4
15
|
0.6.0
|
5
16
|
-----
|
6
17
|
|
data/README.md
CHANGED
@@ -13,9 +13,13 @@ EmberCLI-Rails is designed to give you the best of both worlds:
|
|
13
13
|
stack through JavaScript-enabled Capybara tests
|
14
14
|
* Deploy your entire suite of applications to Heroku with a single `git push`
|
15
15
|
|
16
|
-
|
16
|
+
If you're having trouble, checkout the [example project]!
|
17
17
|
|
18
|
-
|
18
|
+
**EmberCLI-Rails Supports EmberCLI 1.13.13 and later.**
|
19
|
+
|
20
|
+
[example project]: https://github.com/seanpdoyle/ember-cli-rails-heroku-example
|
21
|
+
|
22
|
+
## Install
|
19
23
|
|
20
24
|
Add the following to your `Gemfile`:
|
21
25
|
|
@@ -29,7 +33,13 @@ Then run `bundle install`:
|
|
29
33
|
$ bundle install
|
30
34
|
```
|
31
35
|
|
32
|
-
|
36
|
+
If you haven't created an Ember application yet, generate a new one:
|
37
|
+
|
38
|
+
```bash
|
39
|
+
$ ember new frontend --skip-git
|
40
|
+
```
|
41
|
+
|
42
|
+
## Setup
|
33
43
|
|
34
44
|
First, generate the gem's initializer:
|
35
45
|
|
@@ -47,25 +57,19 @@ EmberCli.configure do |c|
|
|
47
57
|
end
|
48
58
|
```
|
49
59
|
|
50
|
-
|
60
|
+
This initializer assumes that your Ember application exists in
|
51
61
|
`Rails.root.join("frontend")`.
|
52
62
|
|
53
63
|
If this is not the case, you could
|
54
64
|
|
55
65
|
* move your existing Ember application into `Rails.root.join("frontend")`
|
56
|
-
* configure `frontend` to
|
66
|
+
* configure `frontend` to reference the Ember application in its current
|
57
67
|
directory:
|
58
68
|
|
59
69
|
```rb
|
60
70
|
c.app :frontend, path: "~/projects/my-ember-app"
|
61
71
|
```
|
62
72
|
|
63
|
-
* generate a new Ember project:
|
64
|
-
|
65
|
-
```bash
|
66
|
-
$ ember new frontend --skip-git
|
67
|
-
```
|
68
|
-
|
69
73
|
**Initializer options**
|
70
74
|
|
71
75
|
- `name` - this represents the name of the Ember CLI application.
|
@@ -105,7 +109,9 @@ For instance, if you're using the `0.6.x` version of the gem, specify
|
|
105
109
|
[addon]: https://github.com/rondale-sc/ember-cli-rails-addon/
|
106
110
|
[semver]: http://semver.org/
|
107
111
|
|
108
|
-
|
112
|
+
## Mount
|
113
|
+
|
114
|
+
Configure Rails to route requests to the `frontend` Ember application:
|
109
115
|
|
110
116
|
```rb
|
111
117
|
# config/routes.rb
|
@@ -115,9 +121,6 @@ Rails.application.routes.draw do
|
|
115
121
|
end
|
116
122
|
```
|
117
123
|
|
118
|
-
Ember requests will be set `params[:ember_app]` to the name of the application.
|
119
|
-
In the above example, `params[:ember_app] == :frontend`.
|
120
|
-
|
121
124
|
**Routing options**
|
122
125
|
|
123
126
|
* `to` - The path to handle as an Ember application. This will only apply to
|
@@ -136,7 +139,69 @@ $ rake ember:install
|
|
136
139
|
Boot your Rails application, navigate to `"/"`, and view your EmberCLI
|
137
140
|
application!
|
138
141
|
|
139
|
-
##
|
142
|
+
## Develop
|
143
|
+
|
144
|
+
EmberCLI Rails exposes several useful rake tasks.
|
145
|
+
|
146
|
+
**`ember:install`**
|
147
|
+
|
148
|
+
Install the Ember applications' dependencies.
|
149
|
+
|
150
|
+
**`ember:compile`**
|
151
|
+
|
152
|
+
Compile the Ember applications.
|
153
|
+
|
154
|
+
**`ember:test`**
|
155
|
+
|
156
|
+
Execute Ember's test suite.
|
157
|
+
|
158
|
+
If you're using Rake to run the test suite, make sure to configure your test
|
159
|
+
task to depend on `ember:test`.
|
160
|
+
|
161
|
+
For example, to configure a bare `rake` command to run both RSpec and Ember test
|
162
|
+
suites, configure the `default` task to depend on both `spec` and `ember:test`.
|
163
|
+
|
164
|
+
```rb
|
165
|
+
task default: [:spec, "ember:test"]
|
166
|
+
```
|
167
|
+
|
168
|
+
## Deploy
|
169
|
+
|
170
|
+
In production environments, assets should be served over a
|
171
|
+
Content Delivery Network.
|
172
|
+
|
173
|
+
Configuring an `ember-cli-rails` application to serve Ember's assets over a CDN
|
174
|
+
is very similar to [configuring an EmberCLI application to serve assets over a
|
175
|
+
CDN][ember-cli-cdn]:
|
176
|
+
|
177
|
+
[ember-cli-cdn]: http://ember-cli.com/user-guide/#fingerprinting-and-cdn-urls
|
178
|
+
|
179
|
+
```js
|
180
|
+
var app = new EmberApp({
|
181
|
+
fingerprint: {
|
182
|
+
prepend: 'https://cdn.example.com/'
|
183
|
+
}
|
184
|
+
});
|
185
|
+
```
|
186
|
+
|
187
|
+
If you're serving the Ember application from a path other than `"/"`, the
|
188
|
+
`prepend` URL must end with the mounted path:
|
189
|
+
|
190
|
+
```js
|
191
|
+
var app = new EmberApp({
|
192
|
+
fingerprint: {
|
193
|
+
// for an Ember application mounted to `/admin_panel/`
|
194
|
+
prepend: 'https://cdn.example.com/admin_panel/',
|
195
|
+
}
|
196
|
+
});
|
197
|
+
```
|
198
|
+
|
199
|
+
As long as your [CDN is configured to pull from your Rails application][dns-cdn]
|
200
|
+
, your assets will be served over the CDN.
|
201
|
+
|
202
|
+
[dns-cdn]: https://robots.thoughtbot.com/dns-cdn-origin
|
203
|
+
|
204
|
+
### Heroku
|
140
205
|
|
141
206
|
To configure your EmberCLI-Rails applications for Heroku:
|
142
207
|
|
@@ -163,7 +228,32 @@ applications into the project.
|
|
163
228
|
|
164
229
|
[buildpack]: https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app#adding-a-buildpack
|
165
230
|
|
166
|
-
|
231
|
+
### Capistrano
|
232
|
+
|
233
|
+
EmberCLI-Rails executes both `npm install` and `bower install` during EmberCLI's
|
234
|
+
compilation, triggered by the `asset:precompilation` rake task.
|
235
|
+
|
236
|
+
The `npm` and `bower` executables are required to be defined in the deployment
|
237
|
+
SSH session's `$PATH`. It is not sufficient to modify the session's `$PATH` in
|
238
|
+
a `.bash_profile`.
|
239
|
+
|
240
|
+
To resolve this issue, prepend the Node installation's `bin` directory to the
|
241
|
+
target system's `$PATH`:
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
#config/deploy/production.rb
|
245
|
+
|
246
|
+
set :default_env, {
|
247
|
+
"PATH" => "/home/deploy/.nvm/versions/node/v4.2.1/bin:$PATH"
|
248
|
+
}
|
249
|
+
```
|
250
|
+
|
251
|
+
The system in this example is using `nvm` to configure the node version. If
|
252
|
+
you're not using `nvm`, make sure the string you prepend to the `$PATH` variable
|
253
|
+
contains the directory or directories that contain the `bower` and `npm`
|
254
|
+
executables.
|
255
|
+
|
256
|
+
## Override
|
167
257
|
|
168
258
|
By default, routes defined by `ember_app` will be rendered with the internal
|
169
259
|
`EmberCli::EmberController`.
|
@@ -235,7 +325,7 @@ class ApplicationController < ActionController::Base
|
|
235
325
|
end
|
236
326
|
```
|
237
327
|
|
238
|
-
|
328
|
+
### Rendering the EmberCLI generated JS and CSS
|
239
329
|
|
240
330
|
Rendering EmberCLI applications with `render_ember_app` is the recommended,
|
241
331
|
actively supported method of serving EmberCLI applications.
|
@@ -253,9 +343,9 @@ In the corresponding view, use the asset helpers:
|
|
253
343
|
<%= include_ember_stylesheet_tags :frontend %>
|
254
344
|
```
|
255
345
|
|
256
|
-
### Mounting
|
346
|
+
### Mounting multiple Ember applications
|
257
347
|
|
258
|
-
Rendering Ember applications
|
348
|
+
Rendering Ember applications to paths other than `/` requires additional
|
259
349
|
configuration.
|
260
350
|
|
261
351
|
Consider a scenario where you had Ember applications named `frontend` and
|
@@ -339,6 +429,7 @@ and `include_ember_stylesheet_tags` helpers to a path other than `"/"`, a
|
|
339
429
|
`<base>` tag must also be injected with a corresponding `href` value:
|
340
430
|
|
341
431
|
```erb
|
432
|
+
<base href="/">
|
342
433
|
<%= include_ember_script_tags :frontend %>
|
343
434
|
<%= include_ember_stylesheet_tags :frontend %>
|
344
435
|
|
@@ -347,6 +438,18 @@ and `include_ember_stylesheet_tags` helpers to a path other than `"/"`, a
|
|
347
438
|
<%= include_ember_stylesheet_tags :admin_panel %>
|
348
439
|
```
|
349
440
|
|
441
|
+
If you're using the `include_ember` style helpers with a single-page Ember
|
442
|
+
application that defers routing to the Rails application, insert a call to
|
443
|
+
`mount_ember_assets` at the bottom of your routes file to serve the
|
444
|
+
EmberCLI-generated assets:
|
445
|
+
|
446
|
+
```rb
|
447
|
+
# config/routes.rb
|
448
|
+
Rails.application.routes.draw do
|
449
|
+
mount_ember_assets :frontend, to: "/"
|
450
|
+
end
|
451
|
+
```
|
452
|
+
|
350
453
|
## CSRF Tokens
|
351
454
|
|
352
455
|
Your Rails controllers, by default, expect a valid authenticity token to
|
@@ -377,32 +480,6 @@ the CSRF tags to its view's `<head>`.
|
|
377
480
|
[ember-cli-rails-addon][addon] configures your Ember application to make HTTP
|
378
481
|
requests with the injected CSRF tokens in the `X-CSRF-TOKEN` header.
|
379
482
|
|
380
|
-
### Integrating with Rake
|
381
|
-
|
382
|
-
EmberCLI Rails exposes several useful rake tasks.
|
383
|
-
|
384
|
-
**`ember:install`**
|
385
|
-
|
386
|
-
Install the Ember applications' dependencies.
|
387
|
-
|
388
|
-
**`ember:compile`**
|
389
|
-
|
390
|
-
Compile the Ember applications.
|
391
|
-
|
392
|
-
**`ember:test`**
|
393
|
-
|
394
|
-
Execute Ember's test suite.
|
395
|
-
|
396
|
-
If you're using Rake to run the test suite, make sure to configure your test
|
397
|
-
task to depend on `ember:test`.
|
398
|
-
|
399
|
-
For example, to configure a bare `rake` command to run both RSpec and Ember test
|
400
|
-
suites, configure the `default` task to depend on both `spec` and `ember:test`.
|
401
|
-
|
402
|
-
```rb
|
403
|
-
task default: [:spec, "ember:test"]
|
404
|
-
```
|
405
|
-
|
406
483
|
## Serving from multi-process servers in development
|
407
484
|
|
408
485
|
If you're using a multi-process server ([Puma], [Unicorn], etc.) in development,
|
@@ -415,7 +492,7 @@ EmberCLI runners to clobber each others' work][#94].
|
|
415
492
|
[Unicorn]: https://rubygems.org/gems/unicorn
|
416
493
|
[#94]: https://github.com/thoughtbot/ember-cli-rails/issues/94#issuecomment-77627453
|
417
494
|
|
418
|
-
|
495
|
+
## `RAILS_ENV`
|
419
496
|
|
420
497
|
While being managed by EmberCLI Rails, EmberCLI process will have
|
421
498
|
access to the `RAILS_ENV` environment variable. This can be helpful to detect
|
@@ -441,6 +518,12 @@ if (environment === 'development') {
|
|
441
518
|
|
442
519
|
[ember-cli-mirage]: http://ember-cli-mirage.com/docs/latest/
|
443
520
|
|
521
|
+
## EmberCLI support
|
522
|
+
|
523
|
+
This project supports:
|
524
|
+
|
525
|
+
* EmberCLI versions `>= 1.13.13`
|
526
|
+
|
444
527
|
## Ruby and Rails support
|
445
528
|
|
446
529
|
This project supports:
|
@@ -1,34 +1,13 @@
|
|
1
|
-
require "
|
2
|
-
require "ember_cli/assets"
|
1
|
+
require "html_page/capture"
|
3
2
|
|
4
3
|
module EmberRailsHelper
|
5
4
|
def render_ember_app(name, &block)
|
6
5
|
EmberCli[name].build
|
7
6
|
|
8
|
-
markup_capturer =
|
7
|
+
markup_capturer = HtmlPage::Capture.new(self, &block)
|
9
8
|
|
10
9
|
head, body = markup_capturer.capture
|
11
10
|
|
12
11
|
render inline: EmberCli[name].index_html(head: head, body: body)
|
13
12
|
end
|
14
|
-
|
15
|
-
def include_ember_script_tags(name, **options)
|
16
|
-
EmberCli[name].build
|
17
|
-
|
18
|
-
assets = EmberCli::Assets.new(EmberCli[name])
|
19
|
-
|
20
|
-
assets.javascript_assets.
|
21
|
-
map { |src| %{<script src="#{src}"></script>}.html_safe }.
|
22
|
-
reduce(&:+)
|
23
|
-
end
|
24
|
-
|
25
|
-
def include_ember_stylesheet_tags(name, **options)
|
26
|
-
EmberCli[name].build
|
27
|
-
|
28
|
-
assets = EmberCli::Assets.new(EmberCli[name])
|
29
|
-
|
30
|
-
assets.stylesheet_assets.
|
31
|
-
map { |src| %{<link rel="stylesheet" href="#{src}">}.html_safe }.
|
32
|
-
reduce(&:+)
|
33
|
-
end
|
34
13
|
end
|
data/lib/ember-cli-rails.rb
CHANGED
data/lib/ember_cli/app.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "ember_cli/shell"
|
2
|
-
require "
|
2
|
+
require "html_page/renderer"
|
3
3
|
require "ember_cli/build_monitor"
|
4
4
|
|
5
5
|
module EmberCli
|
@@ -24,10 +24,14 @@ module EmberCli
|
|
24
24
|
@build = BuildMonitor.new(name, @paths)
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def root_path
|
28
28
|
paths.root
|
29
29
|
end
|
30
30
|
|
31
|
+
def dist_path
|
32
|
+
paths.dist
|
33
|
+
end
|
34
|
+
|
31
35
|
def compile
|
32
36
|
@compiled ||= begin
|
33
37
|
prepare
|
@@ -49,7 +53,7 @@ module EmberCli
|
|
49
53
|
|
50
54
|
def index_html(head:, body:)
|
51
55
|
if index_file.exist?
|
52
|
-
html = HtmlPage.new(
|
56
|
+
html = HtmlPage::Renderer.new(
|
53
57
|
head: head,
|
54
58
|
body: body,
|
55
59
|
content: index_file.read,
|
data/lib/ember_cli/path_set.rb
CHANGED
@@ -34,22 +34,10 @@ module EmberCli
|
|
34
34
|
@dist ||= ember_cli_root.join("apps", app_name).tap(&:mkpath)
|
35
35
|
end
|
36
36
|
|
37
|
-
def asset_map
|
38
|
-
@asset_map ||= Pathname.glob(assets.join("assetMap*.json")).first
|
39
|
-
end
|
40
|
-
|
41
|
-
def assets
|
42
|
-
@assets ||= dist.join("assets").tap(&:mkpath)
|
43
|
-
end
|
44
|
-
|
45
37
|
def gemfile
|
46
38
|
@gemfile ||= root.join("Gemfile")
|
47
39
|
end
|
48
40
|
|
49
|
-
def package_json_file
|
50
|
-
@package_json_file ||= root.join("package.json")
|
51
|
-
end
|
52
|
-
|
53
41
|
def ember
|
54
42
|
@ember ||= begin
|
55
43
|
root.join("node_modules", ".bin", "ember").tap do |path|
|
@@ -14,13 +14,13 @@ module ActionDispatch
|
|
14
14
|
format: :html,
|
15
15
|
)
|
16
16
|
|
17
|
-
dist_directory = EmberCli[app_name].paths.dist
|
18
|
-
|
19
17
|
Rails.application.routes.draw do
|
20
18
|
scope constraints: EmberCli::HtmlConstraint.new do
|
21
19
|
get("#{to}(*rest)", routing_options)
|
22
20
|
end
|
23
21
|
|
22
|
+
dist_directory = EmberCli[app_name].paths.dist
|
23
|
+
|
24
24
|
mount Rack::File.new(dist_directory.to_s) => to
|
25
25
|
end
|
26
26
|
end
|
data/lib/ember_cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ember-cli-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Pravosud
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-12-
|
13
|
+
date: 2015-12-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ember-cli-rails-assets
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.6.1
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: railties
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,6 +60,20 @@ dependencies:
|
|
46
60
|
- - "~>"
|
47
61
|
- !ruby/object:Gem::Version
|
48
62
|
version: 0.5.8
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: html_page
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.1.0
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.1.0
|
49
77
|
description:
|
50
78
|
email:
|
51
79
|
- pavel@pravosud.com
|
@@ -63,18 +91,13 @@ files:
|
|
63
91
|
- app/views/ember_cli/ember/index.html.erb
|
64
92
|
- lib/ember-cli-rails.rb
|
65
93
|
- lib/ember_cli/app.rb
|
66
|
-
- lib/ember_cli/asset_map.rb
|
67
|
-
- lib/ember_cli/assets.rb
|
68
94
|
- lib/ember_cli/build_monitor.rb
|
69
|
-
- lib/ember_cli/capture.rb
|
70
95
|
- lib/ember_cli/command.rb
|
71
96
|
- lib/ember_cli/configuration.rb
|
72
|
-
- lib/ember_cli/directory_asset_map.rb
|
73
97
|
- lib/ember_cli/engine.rb
|
74
98
|
- lib/ember_cli/errors.rb
|
75
99
|
- lib/ember_cli/helpers.rb
|
76
100
|
- lib/ember_cli/html_constraint.rb
|
77
|
-
- lib/ember_cli/html_page.rb
|
78
101
|
- lib/ember_cli/path_set.rb
|
79
102
|
- lib/ember_cli/route_helpers.rb
|
80
103
|
- lib/ember_cli/runner.rb
|
data/lib/ember_cli/asset_map.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
require "ember_cli/errors"
|
2
|
-
|
3
|
-
module EmberCli
|
4
|
-
class AssetMap
|
5
|
-
def initialize(ember_app_name:, asset_map:)
|
6
|
-
@ember_app_name = ember_app_name
|
7
|
-
@asset_map = asset_map
|
8
|
-
end
|
9
|
-
|
10
|
-
def javascripts
|
11
|
-
assert_asset_map!
|
12
|
-
|
13
|
-
[
|
14
|
-
asset_matching(%r{vendor(.*)\.js\z}),
|
15
|
-
asset_matching(%r{#{ember_app_name}(.*)\.js\z}),
|
16
|
-
]
|
17
|
-
end
|
18
|
-
|
19
|
-
def stylesheets
|
20
|
-
assert_asset_map!
|
21
|
-
|
22
|
-
[
|
23
|
-
asset_matching(%r{vendor(.*)\.css\z}),
|
24
|
-
asset_matching(%r{#{ember_app_name}(.*)\.css\z}),
|
25
|
-
]
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
attr_reader :app_name, :ember_app_name, :asset_map
|
31
|
-
|
32
|
-
def asset_matching(regex)
|
33
|
-
matching_asset = files.detect { |asset| asset =~ regex }
|
34
|
-
|
35
|
-
if matching_asset.blank?
|
36
|
-
raise_missing_asset(regex)
|
37
|
-
end
|
38
|
-
|
39
|
-
prepend + matching_asset
|
40
|
-
end
|
41
|
-
|
42
|
-
def prepend
|
43
|
-
asset_map["prepend"].to_s
|
44
|
-
end
|
45
|
-
|
46
|
-
def files
|
47
|
-
Array(assets.values)
|
48
|
-
end
|
49
|
-
|
50
|
-
def assets
|
51
|
-
asset_map["assets"] || {}
|
52
|
-
end
|
53
|
-
|
54
|
-
def raise_missing_asset(regex)
|
55
|
-
raise BuildError.new("Failed to find assets matching `#{regex}`")
|
56
|
-
end
|
57
|
-
|
58
|
-
def assert_asset_map!
|
59
|
-
if assets.empty?
|
60
|
-
raise BuildError.new("Missing `#{ember_app_name}/assets/assetMap.json`")
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
data/lib/ember_cli/assets.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require "ember_cli/errors"
|
2
|
-
require "ember_cli/asset_map"
|
3
|
-
require "ember_cli/directory_asset_map"
|
4
|
-
|
5
|
-
module EmberCli
|
6
|
-
class Assets
|
7
|
-
def initialize(app)
|
8
|
-
@app = app
|
9
|
-
end
|
10
|
-
|
11
|
-
def javascript_assets
|
12
|
-
asset_map.javascripts
|
13
|
-
end
|
14
|
-
|
15
|
-
def stylesheet_assets
|
16
|
-
asset_map.stylesheets
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :app
|
22
|
-
|
23
|
-
def asset_map
|
24
|
-
AssetMap.new(
|
25
|
-
ember_app_name: ember_app_name,
|
26
|
-
asset_map: asset_map_hash.to_h,
|
27
|
-
)
|
28
|
-
end
|
29
|
-
|
30
|
-
def asset_map_file
|
31
|
-
app.paths.asset_map
|
32
|
-
end
|
33
|
-
|
34
|
-
def asset_map_hash
|
35
|
-
if asset_map_file.present? && asset_map_file.exist?
|
36
|
-
JSON.parse(asset_map_file.read)
|
37
|
-
else
|
38
|
-
DirectoryAssetMap.new(app.paths.assets)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def ember_app_name
|
43
|
-
@ember_app_name ||= app.options.fetch(:name) { package_json.fetch(:name) }
|
44
|
-
end
|
45
|
-
|
46
|
-
def package_json
|
47
|
-
@package_json ||=
|
48
|
-
JSON.parse(app.paths.package_json_file.read).with_indifferent_access
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/ember_cli/capture.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class Capture
|
3
|
-
def initialize(sprockets:, &block)
|
4
|
-
@sprockets = sprockets
|
5
|
-
@block = block || NullBlock.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def capture
|
9
|
-
if block.arity > 0
|
10
|
-
block.call(*block_arguments)
|
11
|
-
end
|
12
|
-
|
13
|
-
[head.content, body.content]
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :block, :sprockets
|
19
|
-
|
20
|
-
def block_arguments
|
21
|
-
[head, body].first(block.arity)
|
22
|
-
end
|
23
|
-
|
24
|
-
def body
|
25
|
-
@body ||= Block.new(sprockets)
|
26
|
-
end
|
27
|
-
|
28
|
-
def head
|
29
|
-
@head ||= begin
|
30
|
-
if block.arity < 1
|
31
|
-
BlockWithoutArguments.new(sprockets, &block)
|
32
|
-
else
|
33
|
-
Block.new(sprockets)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class BlockWithoutArguments
|
39
|
-
def initialize(sprockets, &block)
|
40
|
-
@sprockets = sprockets
|
41
|
-
@block = block
|
42
|
-
end
|
43
|
-
|
44
|
-
def content
|
45
|
-
@sprockets.with_output_buffer(&@block)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
private_constant :BlockWithoutArguments
|
49
|
-
|
50
|
-
class Block
|
51
|
-
def initialize(sprockets)
|
52
|
-
@sprockets = sprockets
|
53
|
-
@content = []
|
54
|
-
end
|
55
|
-
|
56
|
-
def append(&block)
|
57
|
-
@content.push(@sprockets.with_output_buffer(&block))
|
58
|
-
nil
|
59
|
-
end
|
60
|
-
|
61
|
-
def content
|
62
|
-
@content.join
|
63
|
-
end
|
64
|
-
end
|
65
|
-
private_constant :Block
|
66
|
-
|
67
|
-
class NullBlock
|
68
|
-
def arity
|
69
|
-
1
|
70
|
-
end
|
71
|
-
|
72
|
-
def call(*)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
private_constant :NullBlock
|
76
|
-
end
|
77
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class DirectoryAssetMap
|
3
|
-
def initialize(directory)
|
4
|
-
@directory = Pathname(directory)
|
5
|
-
end
|
6
|
-
|
7
|
-
def to_h
|
8
|
-
{
|
9
|
-
"assets" => files_with_data,
|
10
|
-
"prepend" => "assets/",
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
def files_with_data
|
15
|
-
files.reduce({}) do |manifest, file|
|
16
|
-
name = File.basename(file.path)
|
17
|
-
|
18
|
-
manifest[name] = name
|
19
|
-
|
20
|
-
manifest
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def files
|
27
|
-
@directory.children.map { |path| File.new(path) }
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/ember_cli/html_page.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class HtmlPage
|
3
|
-
def initialize(content:, head: "", body: "")
|
4
|
-
@content = content
|
5
|
-
@head = head
|
6
|
-
@body = body
|
7
|
-
end
|
8
|
-
|
9
|
-
def render
|
10
|
-
if has_head_tag?
|
11
|
-
insert_head_content
|
12
|
-
end
|
13
|
-
|
14
|
-
if has_body_tag?
|
15
|
-
insert_body_content
|
16
|
-
end
|
17
|
-
|
18
|
-
content
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
attr_reader :content
|
24
|
-
|
25
|
-
def has_head_tag?
|
26
|
-
head_tag_index >= 0
|
27
|
-
end
|
28
|
-
|
29
|
-
def has_body_tag?
|
30
|
-
body_tag_index >= 0
|
31
|
-
end
|
32
|
-
|
33
|
-
def insert_head_content
|
34
|
-
content.insert(head_tag_index, @head.to_s)
|
35
|
-
end
|
36
|
-
|
37
|
-
def insert_body_content
|
38
|
-
content.insert(body_tag_index, @body.to_s)
|
39
|
-
end
|
40
|
-
|
41
|
-
def head_tag_index
|
42
|
-
content.index("</head") || -1
|
43
|
-
end
|
44
|
-
|
45
|
-
def body_tag_index
|
46
|
-
content.index("</body") || -1
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|