ember-cli-rails 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e714e874e4aff9d3ed1b4e38391a90600e535645
4
- data.tar.gz: c0b07cd28fbc2137ec0a94c607b9eebe28122e6e
3
+ metadata.gz: 580f5c9e269dae3296f0550c842ace8dde54ad3d
4
+ data.tar.gz: 37badb9926e0d597a9bfd764c69d3958b95296b2
5
5
  SHA512:
6
- metadata.gz: b3986f63d3426774b566a10b23921abae0ea3c20b15f9f38270bd0e95ff5b6209285284dc690c76f2d16a6e2172d0fd45d72782dc1c162ce755a0cb1ec49004d
7
- data.tar.gz: 05c81821e084dc06ad55b943635503f3683c640375a610b1cde503cb6a9943a31dc453534095d4c56499768a3c362b1f9b349285c5bda4a9d91b20d7f394c20d
6
+ metadata.gz: 7640726999ea40bb413500cade7fd2ebe310d81a5b1aa54252761763c7746e2e525d9fa3372e56abdab4f02fbdd130fe99f12c23b81948ecd54ddbf6236a72c0
7
+ data.tar.gz: 98fb575c245a29ea5e69b2cd7efae1ae56e881f972caa60830e66b10cf6770aaa775ad7b610ae896149d8ecc8fa07947011b9b6321913f04c891e4b5a9973caf
data/README.md CHANGED
@@ -58,18 +58,13 @@ EmberCLI.configure do |c|
58
58
  end
59
59
  ```
60
60
 
61
- Once you've updated your initializer to taste, you need to tell EmberCLI that
62
- you want the meta tag to be served in your javascript. Open up your
63
- `Brocfile.js` inside your EmberCLI app and add `{storeConfigInMeta: false}`.
61
+ Once you've updated your initializer to taste, you need to install the
62
+ [ember-cli-rails-addon](https://github.com/rondale-sc/ember-cli-rails-addon).
64
63
 
65
- It should look something like this (if you've left it unchanged):
64
+ For each of your EmberCLI applications install the addon with:
66
65
 
67
- ```javascript
68
- var EmberApp = require('ember-cli/lib/broccoli/ember-app');
69
-
70
- var app = new EmberApp({storeConfigInMeta: false});
71
-
72
- // etc...
66
+ ```sh
67
+ npm install --save-dev ember-cli-rails-addon@0.0.3
73
68
  ```
74
69
 
75
70
  And that's it!
@@ -7,6 +7,7 @@ module EmberCLI
7
7
  autoload :Configuration, "ember-cli/configuration"
8
8
  autoload :ViewHelpers, "ember-cli/view_helpers"
9
9
  autoload :Helpers, "ember-cli/helpers"
10
+ autoload :Middleware, "ember-cli/middleware"
10
11
 
11
12
  def configure
12
13
  yield configuration
@@ -26,20 +27,7 @@ module EmberCLI
26
27
 
27
28
  def enable!
28
29
  prepare!
29
-
30
- Rails.application.singleton_class.class_eval do
31
- alias_method :call_without_ember_cli, :call
32
-
33
- def call(env)
34
- @_ember_cli_enabled ||= begin
35
- EmberCLI.compile!
36
- EmberCLI.run! if Rails.env.development?
37
- true
38
- end
39
-
40
- call_without_ember_cli(env)
41
- end
42
- end
30
+ Rails.configuration.middleware.use Middleware
43
31
  end
44
32
 
45
33
  def run!
@@ -56,6 +44,10 @@ module EmberCLI
56
44
  each_app &:stop
57
45
  end
58
46
 
47
+ def wait!
48
+ each_app &:wait
49
+ end
50
+
59
51
  def root
60
52
  @root ||= Rails.root.join("tmp", "ember-cli-#{uid}")
61
53
  end
@@ -1,5 +1,10 @@
1
+ require "timeout"
2
+
1
3
  module EmberCLI
2
4
  class App
5
+ ADDON_VERSION = "0.0.3"
6
+ EMBER_CLI_VERSION = "~> 0.1.3"
7
+
3
8
  attr_reader :name, :options, :pid
4
9
 
5
10
  def initialize(name, options={})
@@ -32,20 +37,92 @@ module EmberCLI
32
37
  %W[#{name}/vendor #{name}/#{ember_app_name}]
33
38
  end
34
39
 
40
+ def wait
41
+ Timeout.timeout(build_timeout) do
42
+ sleep 0.1 while lockfile.exist?
43
+ end
44
+ rescue Timeout::Error
45
+ suggested_timeout = build_timeout + 5
46
+
47
+ warn <<-MSG.strip_heredoc
48
+ ============================= WARNING! =============================
49
+
50
+ Seems like Ember #{name} application takes more than #{build_timeout}
51
+ seconds to compile.
52
+
53
+ To prevent race conditions consider adjusting build timeout
54
+ configuration in your ember initializer:
55
+
56
+ EmberCLI.configure do |config|
57
+ config.build_timeout = #{suggested_timeout} # in seconds
58
+ end
59
+
60
+ Alternatively, you can set build timeout per application like this:
61
+
62
+ EmberCLI.configure do |config|
63
+ config.app :#{name}, build_timeout: #{suggested_timeout}
64
+ end
65
+
66
+ ============================= WARNING! =============================
67
+ MSG
68
+ end
69
+
35
70
  private
36
71
 
37
72
  delegate :ember_path, to: :configuration
38
73
  delegate :tee_path, to: :configuration
39
74
  delegate :configuration, to: :EmberCLI
40
75
 
76
+ def build_timeout
77
+ options.fetch(:build_timeout){ configuration.build_timeout }
78
+ end
79
+
80
+ def lockfile
81
+ tmp_path.join("build.lock")
82
+ end
83
+
41
84
  def prepare
42
85
  @prepared ||= begin
86
+ check_addon!
87
+ check_ember_cli_version!
88
+ FileUtils.touch lockfile
43
89
  symlink_to_assets_root
44
90
  add_assets_to_precompile_list
45
91
  true
46
92
  end
47
93
  end
48
94
 
95
+ def check_ember_cli_version!
96
+ version = dev_dependencies.fetch("ember-cli").split("-").first
97
+ version = Gem::Version.new(version)
98
+ requirement = Gem::Requirement.new(EMBER_CLI_VERSION)
99
+
100
+ unless requirement.satisfied_by?(version)
101
+ fail <<-MSG.strip_heredoc
102
+ EmberCLI Rails require ember-cli NPM package version to be
103
+ #{requirement} to work properly. Please update your package.json
104
+ accordingly and run:
105
+
106
+ $ npm install
107
+
108
+ MSG
109
+ end
110
+ end
111
+
112
+ def check_addon!
113
+ unless dev_dependencies["ember-cli-rails-addon"] == ADDON_VERSION
114
+ fail <<-MSG.strip_heredoc
115
+ EmberCLI Rails requires your Ember app to have an addon.
116
+
117
+ Please run:
118
+
119
+ $ npm install --save-dev ember-cli-rails-addon@#{ADDON_VERSION}`
120
+
121
+ in you Ember application root: #{app_path}
122
+ MSG
123
+ end
124
+ end
125
+
49
126
  def symlink_to_assets_root
50
127
  symlink_path = dist_path.join("assets")
51
128
  assets_path.join(name).make_symlink symlink_path unless symlink_path.exist?
@@ -65,9 +142,7 @@ module EmberCLI
65
142
  end
66
143
 
67
144
  def ember_app_name
68
- @ember_app_name ||= options.fetch(:name) do
69
- JSON.parse(app_path.join("package.json").read).fetch("name")
70
- end
145
+ @ember_app_name ||= options.fetch(:name){ package_json.fetch(:name) }
71
146
  end
72
147
 
73
148
  def app_path
@@ -77,6 +152,14 @@ module EmberCLI
77
152
  end
78
153
  end
79
154
 
155
+ def tmp_path
156
+ @tmp_path ||= begin
157
+ path = app_path.join("tmp")
158
+ path.mkdir unless path.exist?
159
+ path
160
+ end
161
+ end
162
+
80
163
  def log_path
81
164
  Rails.root.join("log", "ember-#{name}.#{Rails.env}.log")
82
165
  end
@@ -92,5 +175,13 @@ module EmberCLI
92
175
  def environment
93
176
  Helpers.non_production?? "development" : "production"
94
177
  end
178
+
179
+ def package_json
180
+ @package_json ||= JSON.parse(app_path.join("package.json").read).with_indifferent_access
181
+ end
182
+
183
+ def dev_dependencies
184
+ package_json.fetch("devDependencies", {})
185
+ end
95
186
  end
96
187
  end
@@ -23,6 +23,10 @@ module EmberCLI
23
23
  end
24
24
  end
25
25
 
26
- attr_writer :ember_path
26
+ def build_timeout
27
+ @build_timeout ||= 5
28
+ end
29
+
30
+ attr_writer :ember_path, :build_timeout
27
31
  end
28
32
  end
@@ -0,0 +1,28 @@
1
+ module EmberCLI
2
+ class Middleware
3
+ def initialize(app)
4
+ @app = app
5
+ end
6
+
7
+ def call(env)
8
+ enable_ember_cli
9
+ EmberCLI.wait!
10
+
11
+ @app.call(env)
12
+ end
13
+
14
+ private
15
+
16
+ def enable_ember_cli
17
+ @enabled ||= begin
18
+ if Rails.env.development?
19
+ EmberCLI.run!
20
+ else
21
+ EmberCLI.compile!
22
+ end
23
+
24
+ true
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module EmberCLI
2
- VERSION = "0.0.9".freeze
2
+ VERSION = "0.0.10".freeze
3
3
  end
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.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Pravosud
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-15 00:00:00.000000000 Z
12
+ date: 2014-12-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -53,6 +53,7 @@ files:
53
53
  - lib/ember-cli/app.rb
54
54
  - lib/ember-cli/configuration.rb
55
55
  - lib/ember-cli/helpers.rb
56
+ - lib/ember-cli/middleware.rb
56
57
  - lib/ember-cli/railtie.rb
57
58
  - lib/ember-cli/version.rb
58
59
  - lib/ember-cli/view_helpers.rb