ember-cli-rails 0.4.3 → 0.5.0
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 +31 -0
- data/README.md +183 -115
- data/app/controller/ember-cli/ember_controller.rb +9 -0
- data/app/helpers/ember_rails_helper.rb +13 -9
- data/app/views/ember_cli/ember/index.html.erb +5 -0
- data/lib/ember-cli-rails.rb +11 -25
- data/lib/ember-cli/app.rb +47 -295
- data/lib/ember-cli/build_monitor.rb +56 -0
- data/lib/ember-cli/capture.rb +15 -15
- data/lib/ember-cli/command.rb +63 -0
- data/lib/ember-cli/configuration.rb +34 -3
- data/lib/ember-cli/constraint.rb +9 -0
- data/lib/ember-cli/controller_extension.rb +13 -0
- data/lib/ember-cli/engine.rb +14 -3
- data/lib/ember-cli/errors.rb +4 -0
- data/lib/ember-cli/helpers.rb +5 -11
- data/lib/ember-cli/html_page.rb +8 -15
- data/lib/ember-cli/path_set.rb +44 -29
- data/lib/ember-cli/route_helpers.rb +25 -0
- data/lib/ember-cli/shell.rb +84 -0
- data/lib/ember-cli/sprockets.rb +44 -0
- data/lib/ember-cli/version.rb +1 -1
- data/lib/generators/ember-cli/heroku/heroku_generator.rb +10 -0
- data/lib/tasks/ember-cli.rake +1 -1
- metadata +26 -7
- data/app/controllers/ember_tests_controller.rb +0 -31
- data/config/routes.rb +0 -3
- data/lib/ember-cli/asset_resolver.rb +0 -54
- data/lib/ember-cli/middleware.rb +0 -18
- data/lib/ember-cli/runner.rb +0 -53
@@ -0,0 +1,25 @@
|
|
1
|
+
require "ember-cli/constraint"
|
2
|
+
|
3
|
+
module ActionDispatch
|
4
|
+
module Routing
|
5
|
+
class Mapper
|
6
|
+
def mount_ember_app(app_name, to:, **options)
|
7
|
+
routing_options = options.deep_merge(
|
8
|
+
defaults: { ember_app: app_name },
|
9
|
+
)
|
10
|
+
|
11
|
+
routing_options.reverse_merge!(
|
12
|
+
controller: "ember_cli/ember",
|
13
|
+
action: "index",
|
14
|
+
format: :html,
|
15
|
+
)
|
16
|
+
|
17
|
+
Rails.application.routes.draw do
|
18
|
+
scope constraints: EmberCli::Constraint.new do
|
19
|
+
get("#{to}(*rest)", routing_options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require "ember-cli/command"
|
2
|
+
|
3
|
+
module EmberCli
|
4
|
+
class Shell
|
5
|
+
def initialize(paths:, env: {}, options: {})
|
6
|
+
@paths = paths
|
7
|
+
@env = env
|
8
|
+
@ember = Command.new(
|
9
|
+
paths: paths,
|
10
|
+
options: options,
|
11
|
+
)
|
12
|
+
@on_exit ||= at_exit { stop }
|
13
|
+
end
|
14
|
+
|
15
|
+
def compile
|
16
|
+
silence_build { exec ember.build }
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_and_watch
|
20
|
+
unless running?
|
21
|
+
lock_buildfile
|
22
|
+
self.pid = spawn ember.build(watch: true)
|
23
|
+
detach
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def stop
|
28
|
+
if pid.present?
|
29
|
+
Process.kill(:INT, pid)
|
30
|
+
self.pid = nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def install
|
35
|
+
if paths.gemfile.exist?
|
36
|
+
exec "#{paths.bundler} install"
|
37
|
+
end
|
38
|
+
|
39
|
+
exec "#{paths.npm} prune && #{paths.npm} install"
|
40
|
+
exec "#{paths.bower} prune && #{paths.bower} install"
|
41
|
+
end
|
42
|
+
|
43
|
+
def test
|
44
|
+
exec ember.test
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
attr_accessor :pid
|
50
|
+
attr_reader :ember, :env, :options, :paths
|
51
|
+
|
52
|
+
def spawn(command)
|
53
|
+
exec(command, method: :spawn)
|
54
|
+
end
|
55
|
+
|
56
|
+
def exec(command, method: :system)
|
57
|
+
Dir.chdir paths.root do
|
58
|
+
Kernel.public_send(method, env, command, err: :out) || exit(1)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def running?
|
63
|
+
pid.present? && Process.getpgid(pid)
|
64
|
+
rescue Errno::ESRCH
|
65
|
+
false
|
66
|
+
end
|
67
|
+
|
68
|
+
def lock_buildfile
|
69
|
+
FileUtils.touch(paths.lockfile)
|
70
|
+
end
|
71
|
+
|
72
|
+
def detach
|
73
|
+
Process.detach pid
|
74
|
+
end
|
75
|
+
|
76
|
+
def silence_build(&block)
|
77
|
+
if ENV.fetch("EMBER_CLI_RAILS_VERBOSE") { EmberCli.env.production? }
|
78
|
+
yield
|
79
|
+
else
|
80
|
+
silence_stream(STDOUT, &block)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "non-stupid-digest-assets"
|
2
|
+
require "ember-cli/html_page"
|
3
|
+
|
4
|
+
module EmberCli
|
5
|
+
class Sprockets
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def register!
|
11
|
+
assets = %r{\A#{app.name}/}
|
12
|
+
|
13
|
+
Rails.configuration.assets.precompile << assets
|
14
|
+
NonStupidDigestAssets.whitelist << assets
|
15
|
+
end
|
16
|
+
|
17
|
+
def index_html(head:, body:)
|
18
|
+
html_page = HtmlPage.new(
|
19
|
+
content: app.index_file.read,
|
20
|
+
head: head,
|
21
|
+
body: body,
|
22
|
+
)
|
23
|
+
|
24
|
+
html_page.render
|
25
|
+
end
|
26
|
+
|
27
|
+
def assets
|
28
|
+
["#{app.name}/assets/vendor", "#{app.name}/assets/#{ember_app_name}"]
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
attr_reader :app
|
34
|
+
|
35
|
+
def ember_app_name
|
36
|
+
@ember_app_name ||= app.options.fetch(:name) { package_json.fetch(:name) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def package_json
|
40
|
+
@package_json ||=
|
41
|
+
JSON.parse(app.paths.package_json_file.read).with_indifferent_access
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/ember-cli/version.rb
CHANGED
@@ -13,6 +13,16 @@ module EmberCli
|
|
13
13
|
run "chmod a+x bin/heroku_install"
|
14
14
|
end
|
15
15
|
|
16
|
+
def config_js_compressor
|
17
|
+
production_config = "config/environments/production.rb"
|
18
|
+
|
19
|
+
inject_into_file production_config, before: "end\n" do
|
20
|
+
<<-RUBY
|
21
|
+
config.assets.js_compressor = nil
|
22
|
+
RUBY
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
16
26
|
def inject_12factor_gem
|
17
27
|
gem "rails_12factor", group: [:staging, :production]
|
18
28
|
end
|
data/lib/tasks/ember-cli.rake
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.5.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-11-
|
13
|
+
date: 2015-11-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
@@ -32,6 +32,20 @@ dependencies:
|
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '5'
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: non-stupid-digest-assets
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.0.0
|
42
|
+
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.0.0
|
35
49
|
- !ruby/object:Gem::Dependency
|
36
50
|
name: sprockets
|
37
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,20 +72,25 @@ files:
|
|
58
72
|
- CHANGELOG.md
|
59
73
|
- LICENSE.txt
|
60
74
|
- README.md
|
61
|
-
- app/
|
75
|
+
- app/controller/ember-cli/ember_controller.rb
|
62
76
|
- app/helpers/ember_rails_helper.rb
|
63
|
-
-
|
77
|
+
- app/views/ember_cli/ember/index.html.erb
|
64
78
|
- lib/ember-cli-rails.rb
|
65
79
|
- lib/ember-cli/app.rb
|
66
|
-
- lib/ember-cli/
|
80
|
+
- lib/ember-cli/build_monitor.rb
|
67
81
|
- lib/ember-cli/capture.rb
|
82
|
+
- lib/ember-cli/command.rb
|
68
83
|
- lib/ember-cli/configuration.rb
|
84
|
+
- lib/ember-cli/constraint.rb
|
85
|
+
- lib/ember-cli/controller_extension.rb
|
69
86
|
- lib/ember-cli/engine.rb
|
87
|
+
- lib/ember-cli/errors.rb
|
70
88
|
- lib/ember-cli/helpers.rb
|
71
89
|
- lib/ember-cli/html_page.rb
|
72
|
-
- lib/ember-cli/middleware.rb
|
73
90
|
- lib/ember-cli/path_set.rb
|
74
|
-
- lib/ember-cli/
|
91
|
+
- lib/ember-cli/route_helpers.rb
|
92
|
+
- lib/ember-cli/shell.rb
|
93
|
+
- lib/ember-cli/sprockets.rb
|
75
94
|
- lib/ember-cli/version.rb
|
76
95
|
- lib/generators/ember-cli/heroku/USAGE
|
77
96
|
- lib/generators/ember-cli/heroku/heroku_generator.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class EmberTestsController < ActionController::Base
|
2
|
-
def index
|
3
|
-
render text: test_html_with_corrected_asset_urls, layout: false
|
4
|
-
end
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def test_html_with_corrected_asset_urls
|
9
|
-
test_html.gsub(%r{assets/}i, "#{asset_prefix}/#{app_name}/")
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_html
|
13
|
-
tests_index_path.read
|
14
|
-
end
|
15
|
-
|
16
|
-
def tests_index_path
|
17
|
-
app.tests_path.join("index.html")
|
18
|
-
end
|
19
|
-
|
20
|
-
def app
|
21
|
-
EmberCli[app_name]
|
22
|
-
end
|
23
|
-
|
24
|
-
def app_name
|
25
|
-
params.fetch(:app_name)
|
26
|
-
end
|
27
|
-
|
28
|
-
def asset_prefix
|
29
|
-
Rails.configuration.assets.prefix
|
30
|
-
end
|
31
|
-
end
|
data/config/routes.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class AssetResolver
|
3
|
-
def initialize(app:, sprockets:)
|
4
|
-
@app = app
|
5
|
-
@sprockets = sprockets
|
6
|
-
end
|
7
|
-
|
8
|
-
def resolve_urls(html_content)
|
9
|
-
mappings.reduce(html_content) do |resolved_content, (asset, new_path)|
|
10
|
-
resolved_content.gsub(%{"assets/#{asset}"}, %{"#{new_path}"})
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def mappings
|
17
|
-
{
|
18
|
-
"#{name}.js" => application.js,
|
19
|
-
"#{name}.css" => application.css,
|
20
|
-
"vendor.js" => vendor.js,
|
21
|
-
"vendor.css" => vendor.css,
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
def name
|
26
|
-
@app.name
|
27
|
-
end
|
28
|
-
|
29
|
-
def application
|
30
|
-
AssetPath.new(@sprockets, @app.application_assets)
|
31
|
-
end
|
32
|
-
|
33
|
-
def vendor
|
34
|
-
AssetPath.new(@sprockets, @app.vendor_assets)
|
35
|
-
end
|
36
|
-
|
37
|
-
class AssetPath
|
38
|
-
def initialize(sprockets, assets)
|
39
|
-
@sprockets = sprockets
|
40
|
-
@assets = assets
|
41
|
-
end
|
42
|
-
|
43
|
-
def js
|
44
|
-
@sprockets.asset_path(@assets, type: :javascript)
|
45
|
-
end
|
46
|
-
|
47
|
-
def css
|
48
|
-
@sprockets.asset_path(@assets, type: :stylesheet)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
private_constant :AssetPath
|
53
|
-
end
|
54
|
-
end
|
data/lib/ember-cli/middleware.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class Middleware
|
3
|
-
def initialize(app)
|
4
|
-
@app = app
|
5
|
-
end
|
6
|
-
|
7
|
-
def call(env)
|
8
|
-
path = env["PATH_INFO"].to_s
|
9
|
-
|
10
|
-
if path == "/testem.js"
|
11
|
-
[ 200, { "Content-Type" => "text/javascript" }, [""] ]
|
12
|
-
else
|
13
|
-
EmberCli.process_path path
|
14
|
-
@app.call(env)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/ember-cli/runner.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
module EmberCli
|
2
|
-
class Runner
|
3
|
-
TRUE_PROC = ->(*){ true }
|
4
|
-
|
5
|
-
attr_reader :app, :path
|
6
|
-
|
7
|
-
def initialize(app, path)
|
8
|
-
@app, @path = app, path
|
9
|
-
end
|
10
|
-
|
11
|
-
def process
|
12
|
-
return if skip?
|
13
|
-
|
14
|
-
if EmberCli.env.development?
|
15
|
-
start_or_restart!
|
16
|
-
else
|
17
|
-
compile!
|
18
|
-
end
|
19
|
-
|
20
|
-
wait!
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def skip?
|
26
|
-
invoker = app.options.fetch(:enable, TRUE_PROC)
|
27
|
-
!invoker.call(path)
|
28
|
-
end
|
29
|
-
|
30
|
-
def start_or_restart!
|
31
|
-
run! unless app.pid && still_running?
|
32
|
-
end
|
33
|
-
|
34
|
-
def still_running?
|
35
|
-
Process.getpgid app.pid
|
36
|
-
true
|
37
|
-
rescue Errno::ESRCH # no such process
|
38
|
-
false
|
39
|
-
end
|
40
|
-
|
41
|
-
def wait!
|
42
|
-
app.wait
|
43
|
-
end
|
44
|
-
|
45
|
-
def compile!
|
46
|
-
app.compile
|
47
|
-
end
|
48
|
-
|
49
|
-
def run!
|
50
|
-
app.run
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|