ember-cli-rails 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +48 -0
- data/lib/ember-cli-rails.rb +4 -7
- data/lib/ember_cli/app.rb +45 -26
- data/lib/ember_cli/configuration.rb +3 -18
- data/lib/ember_cli/deploy/file.rb +35 -0
- data/lib/ember_cli/helpers.rb +5 -15
- data/lib/ember_cli/path_set.rb +19 -14
- data/lib/ember_cli/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f36a51e987ca3f318c486ebb3827e3b033eea0f0
|
4
|
+
data.tar.gz: a3b9cd8366e58423d70eab4de81d042f55fc86c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15b9f51c70c042c3eb3b7ff915cbf1269a8ebc23bf76c1d30d56242d645a19775596f3086dd02ac5a0923a40a2223db10c6d0e20b84cee0bad80c417d3a26733
|
7
|
+
data.tar.gz: 52e7f0822e858e957e4a72277a0e6645eaf9fea6b00c803e52e7673e531edd96e52a5f5f78a562a63876f24be4195e73ca87d1f61f6b952ed947667b4d320d40
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
master
|
2
2
|
------
|
3
3
|
|
4
|
+
0.7.0
|
5
|
+
-----
|
6
|
+
|
7
|
+
* Introduce the `deploy` configuration option.
|
8
|
+
* Translate Rails environments other than `test` or `development` to
|
9
|
+
`production`, unless an `EMBER_ENV` is specified. [#366]
|
10
|
+
|
11
|
+
[#366]: https://github.com/thoughtbot/ember-cli-rails/pull/366
|
12
|
+
|
4
13
|
0.6.1
|
5
14
|
-----
|
6
15
|
|
data/README.md
CHANGED
@@ -201,6 +201,38 @@ As long as your [CDN is configured to pull from your Rails application][dns-cdn]
|
|
201
201
|
|
202
202
|
[dns-cdn]: https://robots.thoughtbot.com/dns-cdn-origin
|
203
203
|
|
204
|
+
### Deployment Strategies
|
205
|
+
|
206
|
+
By default, EmberCLI-Rails will serve the `index.html` file that `ember build`
|
207
|
+
produces.
|
208
|
+
|
209
|
+
If you need to override this behavior (for instance, if you're using
|
210
|
+
[`ember-cli-deploy`'s "Lightning Fast Deployment"][lightning] strategy in
|
211
|
+
`production`), you can specify the strategy's class in the initializer:
|
212
|
+
|
213
|
+
```rb
|
214
|
+
EmberCli.configure do |config|
|
215
|
+
config.app :frontend, deploy: { production: EmberCli::Deploy::Redis }
|
216
|
+
end
|
217
|
+
```
|
218
|
+
|
219
|
+
This example configures the `frontend` Ember application to retrieve the
|
220
|
+
index's HTML from an [`ember-cli-deploy-redis`][ember-cli-deploy-redis]
|
221
|
+
-populated Redis entry using the
|
222
|
+
[`ember-cli-rails-deploy-redis`][ember-cli-rails-deploy-redis] gem.
|
223
|
+
|
224
|
+
If you're deploying HTML with a custom strategy in `development` or `test`,
|
225
|
+
disable EmberCLI-Rails' build step by setting `ENV["SKIP_EMBER"] = true`.
|
226
|
+
|
227
|
+
**NOTE:**
|
228
|
+
|
229
|
+
Specifying a deployment strategy is only supported for applications that use the
|
230
|
+
`mount_ember_app` and `render_ember_app` helpers.
|
231
|
+
|
232
|
+
[ember-cli-deploy-redis]: https://github.com/ember-cli-deploy/ember-cli-deploy-redis
|
233
|
+
[ember-cli-rails-deploy-redis]: https://github.com/seanpdoyle/ember-cli-rails-deploy-redis
|
234
|
+
[lightning]: https://github.com/ember-cli-deploy/ember-cli-deploy-lightning-pack
|
235
|
+
|
204
236
|
### Heroku
|
205
237
|
|
206
238
|
To configure your EmberCLI-Rails applications for Heroku:
|
@@ -492,6 +524,22 @@ EmberCLI runners to clobber each others' work][#94].
|
|
492
524
|
[Unicorn]: https://rubygems.org/gems/unicorn
|
493
525
|
[#94]: https://github.com/thoughtbot/ember-cli-rails/issues/94#issuecomment-77627453
|
494
526
|
|
527
|
+
## `SKIP_EMBER`
|
528
|
+
|
529
|
+
If set on the environment, `SKIP_EMBER` will configure `ember-cli-rails` to skip
|
530
|
+
the build step entirely. This is useful if you're using an alternative
|
531
|
+
deployment strategy in the `test` or `development` environment. By default,
|
532
|
+
`ember-cli-rails` will skip the build step in `production`-like environments.
|
533
|
+
|
534
|
+
## `EMBER_ENV`
|
535
|
+
|
536
|
+
If set on the environment, the value of `EMBER_ENV` will be passed to the
|
537
|
+
`ember` process as the value of the `--environment` flag.
|
538
|
+
|
539
|
+
If `EMBER_ENV` is unspecified, the current Rails environment will be passed to
|
540
|
+
the `ember` process, with the exception of non-standard Rails environments,
|
541
|
+
which will be replaced with `production`.
|
542
|
+
|
495
543
|
## `RAILS_ENV`
|
496
544
|
|
497
545
|
While being managed by EmberCLI Rails, EmberCLI process will have
|
data/lib/ember-cli-rails.rb
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
require "fileutils"
|
2
|
-
require "ember_cli/engine"
|
3
2
|
require "ember-cli-rails-assets"
|
3
|
+
require "ember_cli/engine"
|
4
|
+
require "ember_cli/configuration"
|
5
|
+
require "ember_cli/helpers"
|
4
6
|
require "ember_cli/errors"
|
5
7
|
|
6
8
|
module EmberCli
|
7
9
|
extend self
|
8
10
|
|
9
|
-
autoload :App, "ember_cli/app"
|
10
|
-
autoload :Configuration, "ember_cli/configuration"
|
11
|
-
autoload :Helpers, "ember_cli/helpers"
|
12
|
-
autoload :PathSet, "ember_cli/path_set"
|
13
|
-
|
14
11
|
def configure
|
15
12
|
yield configuration
|
16
13
|
end
|
@@ -53,7 +50,7 @@ module EmberCli
|
|
53
50
|
end
|
54
51
|
|
55
52
|
def env
|
56
|
-
@env ||= Helpers.current_environment
|
53
|
+
@env ||= Helpers.current_environment
|
57
54
|
end
|
58
55
|
|
59
56
|
delegate :apps, to: :configuration
|
data/lib/ember_cli/app.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
require "ember_cli/shell"
|
2
1
|
require "html_page/renderer"
|
2
|
+
require "ember_cli/path_set"
|
3
|
+
require "ember_cli/shell"
|
3
4
|
require "ember_cli/build_monitor"
|
5
|
+
require "ember_cli/deploy/file"
|
4
6
|
|
5
7
|
module EmberCli
|
6
8
|
class App
|
@@ -11,7 +13,6 @@ module EmberCli
|
|
11
13
|
@options = options
|
12
14
|
@paths = PathSet.new(
|
13
15
|
app: self,
|
14
|
-
configuration: EmberCli.configuration,
|
15
16
|
environment: Rails.env,
|
16
17
|
rails_root: Rails.root,
|
17
18
|
ember_cli_root: EmberCli.root,
|
@@ -42,31 +43,25 @@ module EmberCli
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def build
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
unless EmberCli.skip?
|
47
|
+
if development?
|
48
|
+
build_and_watch
|
49
|
+
elsif test?
|
50
|
+
compile
|
51
|
+
end
|
52
|
+
|
53
|
+
@build.wait!
|
49
54
|
end
|
50
|
-
|
51
|
-
@build.wait!
|
52
55
|
end
|
53
56
|
|
54
57
|
def index_html(head:, body:)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
)
|
61
|
-
|
62
|
-
html.render
|
63
|
-
else
|
64
|
-
@build.check!
|
58
|
+
html = HtmlPage::Renderer.new(
|
59
|
+
head: head,
|
60
|
+
body: body,
|
61
|
+
content: deploy.index_html,
|
62
|
+
)
|
65
63
|
|
66
|
-
|
67
|
-
EmberCLI failed to generate an `index.html` file.
|
68
|
-
MSG
|
69
|
-
end
|
64
|
+
html.render
|
70
65
|
end
|
71
66
|
|
72
67
|
def install_dependencies
|
@@ -79,12 +74,36 @@ module EmberCli
|
|
79
74
|
@shell.test
|
80
75
|
end
|
81
76
|
|
77
|
+
def check_for_errors!
|
78
|
+
@build.check!
|
79
|
+
end
|
80
|
+
|
82
81
|
private
|
83
82
|
|
84
|
-
|
83
|
+
def development?
|
84
|
+
env.to_s == "development"
|
85
|
+
end
|
86
|
+
|
87
|
+
def test?
|
88
|
+
env.to_s == "test"
|
89
|
+
end
|
90
|
+
|
91
|
+
def deploy
|
92
|
+
deploy_strategy.new(self)
|
93
|
+
end
|
94
|
+
|
95
|
+
def deploy_strategy
|
96
|
+
strategy = options.fetch(:deploy, {})
|
97
|
+
|
98
|
+
if strategy.respond_to?(:fetch)
|
99
|
+
strategy.fetch(rails_env, EmberCli::Deploy::File)
|
100
|
+
else
|
101
|
+
strategy
|
102
|
+
end
|
103
|
+
end
|
85
104
|
|
86
|
-
def
|
87
|
-
|
105
|
+
def rails_env
|
106
|
+
Rails.env.to_s.to_sym
|
88
107
|
end
|
89
108
|
|
90
109
|
def env
|
@@ -104,7 +123,7 @@ module EmberCli
|
|
104
123
|
end
|
105
124
|
|
106
125
|
def excluded_ember_deps
|
107
|
-
Array.wrap(options[:exclude_ember_deps]).join(
|
126
|
+
Array.wrap(options[:exclude_ember_deps]).join("?")
|
108
127
|
end
|
109
128
|
|
110
129
|
def env_hash
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require "singleton"
|
2
|
+
require "ember_cli/app"
|
2
3
|
|
3
4
|
module EmberCli
|
4
5
|
class Configuration
|
5
6
|
include Singleton
|
6
7
|
|
8
|
+
attr_accessor :watcher
|
9
|
+
|
7
10
|
def app(name, **options)
|
8
11
|
app = App.new(name, options)
|
9
12
|
apps.store(name, app)
|
@@ -12,23 +15,5 @@ module EmberCli
|
|
12
15
|
def apps
|
13
16
|
@apps ||= HashWithIndifferentAccess.new
|
14
17
|
end
|
15
|
-
|
16
|
-
def bower_path
|
17
|
-
@bower_path ||= Helpers.which("bower")
|
18
|
-
end
|
19
|
-
|
20
|
-
def npm_path
|
21
|
-
@npm_path ||= Helpers.which("npm")
|
22
|
-
end
|
23
|
-
|
24
|
-
def tee_path
|
25
|
-
@tee_path ||= Helpers.which("tee")
|
26
|
-
end
|
27
|
-
|
28
|
-
def bundler_path
|
29
|
-
@bundler_path ||= Helpers.which("bundler")
|
30
|
-
end
|
31
|
-
|
32
|
-
attr_accessor :watcher
|
33
18
|
end
|
34
19
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "ember_cli/errors"
|
2
|
+
|
3
|
+
module EmberCli
|
4
|
+
module Deploy
|
5
|
+
class File
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def index_html
|
11
|
+
if index_file.exist?
|
12
|
+
index_file.read
|
13
|
+
else
|
14
|
+
check_for_error_and_raise!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
attr_reader :app
|
21
|
+
|
22
|
+
def check_for_error_and_raise!
|
23
|
+
app.check_for_errors!
|
24
|
+
|
25
|
+
raise BuildError.new <<-MSG
|
26
|
+
EmberCLI failed to generate an `index.html` file.
|
27
|
+
MSG
|
28
|
+
end
|
29
|
+
|
30
|
+
def index_file
|
31
|
+
app.dist_path.join("index.html")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ember_cli/helpers.rb
CHANGED
@@ -3,7 +3,7 @@ module EmberCli
|
|
3
3
|
extend self
|
4
4
|
|
5
5
|
def which(cmd)
|
6
|
-
exts = ENV.fetch("PATHEXT",
|
6
|
+
exts = ENV.fetch("PATHEXT", ";").split(";", -1).uniq
|
7
7
|
|
8
8
|
ENV.fetch("PATH").split(File::PATH_SEPARATOR).each do |path|
|
9
9
|
exts.each do |ext|
|
@@ -16,26 +16,16 @@ module EmberCli
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def current_environment
|
19
|
-
|
19
|
+
ENV.fetch("EMBER_ENV") { default_environment }
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
24
|
def default_environment
|
25
|
-
if Rails.env.test
|
26
|
-
|
27
|
-
elsif Rails.env.production? || !rails_config_for(:consider_all_requests_local)
|
28
|
-
"production"
|
29
|
-
else
|
30
|
-
"development"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def rails_config_for(key)
|
35
|
-
if Rails.configuration.respond_to?(key)
|
36
|
-
Rails.configuration.public_send(key)
|
25
|
+
if Rails.env.match(/test|development/)
|
26
|
+
Rails.env
|
37
27
|
else
|
38
|
-
|
28
|
+
"production"
|
39
29
|
end
|
40
30
|
end
|
41
31
|
end
|
data/lib/ember_cli/path_set.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
require "ember_cli/helpers"
|
2
|
+
|
1
3
|
module EmberCli
|
2
4
|
class PathSet
|
3
|
-
def initialize(app:, rails_root:, ember_cli_root:, environment
|
5
|
+
def initialize(app:, rails_root:, ember_cli_root:, environment:)
|
4
6
|
@app = app
|
5
|
-
@configuration = configuration
|
6
7
|
@rails_root = rails_root
|
7
8
|
@environment = environment
|
8
9
|
@ember_cli_root = ember_cli_root
|
@@ -18,10 +19,6 @@ module EmberCli
|
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
21
|
-
def index_file
|
22
|
-
dist.join("index.html")
|
23
|
-
end
|
24
|
-
|
25
22
|
def tmp
|
26
23
|
@tmp ||= root.join("tmp").tap(&:mkpath)
|
27
24
|
end
|
@@ -65,7 +62,7 @@ module EmberCli
|
|
65
62
|
|
66
63
|
def bower
|
67
64
|
@bower ||= begin
|
68
|
-
bower_path = app_options.fetch(:bower_path) {
|
65
|
+
bower_path = app_options.fetch(:bower_path) { which("bower") }
|
69
66
|
|
70
67
|
bower_path.tap do |path|
|
71
68
|
unless Pathname(path).executable?
|
@@ -82,24 +79,32 @@ module EmberCli
|
|
82
79
|
end
|
83
80
|
|
84
81
|
def npm
|
85
|
-
@npm ||= app_options.fetch(:npm_path) {
|
82
|
+
@npm ||= app_options.fetch(:npm_path) { which("npm") }
|
86
83
|
end
|
87
84
|
|
88
85
|
def tee
|
89
|
-
@tee ||= app_options.fetch(:tee_path) {
|
86
|
+
@tee ||= app_options.fetch(:tee_path) { which("tee") }
|
90
87
|
end
|
91
88
|
|
92
89
|
def bundler
|
93
|
-
@bundler ||= app_options.fetch(:bundler_path)
|
94
|
-
configuration.bundler_path
|
95
|
-
end
|
90
|
+
@bundler ||= app_options.fetch(:bundler_path) { which("bundler") }
|
96
91
|
end
|
97
92
|
|
98
93
|
private
|
99
94
|
|
100
|
-
attr_reader :app, :
|
95
|
+
attr_reader :app, :ember_cli_root, :environment, :rails_root
|
101
96
|
|
102
|
-
|
97
|
+
def app_name
|
98
|
+
app.name
|
99
|
+
end
|
100
|
+
|
101
|
+
def app_options
|
102
|
+
app.options
|
103
|
+
end
|
104
|
+
|
105
|
+
def which(executable)
|
106
|
+
Helpers.which(executable)
|
107
|
+
end
|
103
108
|
|
104
109
|
def logs
|
105
110
|
rails_root.join("log").tap(&:mkpath)
|
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.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Pravosud
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-12-
|
13
|
+
date: 2015-12-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ember-cli-rails-assets
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/ember_cli/build_monitor.rb
|
95
95
|
- lib/ember_cli/command.rb
|
96
96
|
- lib/ember_cli/configuration.rb
|
97
|
+
- lib/ember_cli/deploy/file.rb
|
97
98
|
- lib/ember_cli/engine.rb
|
98
99
|
- lib/ember_cli/errors.rb
|
99
100
|
- lib/ember_cli/helpers.rb
|