ember-appkit-rails 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ember/appkit/rails.rb +4 -0
- data/lib/ember/appkit/rails/engine.rb +6 -1
- data/lib/ember/appkit/rails/teaspoon.rb +5 -0
- data/lib/ember/appkit/rails/teaspoon/engine.rb +3 -0
- data/lib/ember/appkit/rails/teaspoon/suite.rb +7 -0
- data/lib/ember/appkit/rails/version.rb +1 -1
- data/lib/ember/appkit/rails/views/teaspoon/spec/_eak_rails.html.erb +10 -0
- data/lib/generators/ember/bootstrap_generator.rb +27 -9
- data/lib/generators/ember/component_generator.rb +2 -2
- data/lib/generators/ember/controller_generator.rb +4 -4
- data/lib/generators/ember/generator_helpers.rb +4 -0
- data/lib/generators/ember/install_generator.rb +150 -0
- data/lib/generators/ember/model_generator.rb +7 -2
- data/lib/generators/ember/resource_generator.rb +1 -1
- data/lib/generators/ember/route_generator.rb +2 -2
- data/lib/generators/ember/scaffold_generator.rb +17 -3
- data/lib/generators/ember/serializer_override.rb +18 -0
- data/lib/generators/ember/view_generator.rb +2 -2
- data/{test/dummy/config/adapters/application.js.es6.erb → lib/generators/templates/adapters/application.es6.erb} +0 -0
- data/lib/generators/templates/application.js.erb +1 -0
- data/lib/generators/templates/{array_controller.js.es6 → array_controller.es6} +0 -0
- data/lib/generators/templates/{component.js.es6 → component.es6} +0 -0
- data/lib/generators/templates/{controller.js.es6 → controller.es6} +0 -0
- data/lib/generators/templates/environment.js.erb +2 -0
- data/lib/generators/templates/environments/development.js.erb +5 -5
- data/lib/generators/templates/environments/production.js.erb +2 -2
- data/lib/generators/templates/environments/test.js.erb +1 -1
- data/lib/generators/templates/initializers/teaspoon.rb +63 -0
- data/lib/generators/templates/{model.js.es6 → model.es6} +0 -0
- data/lib/generators/templates/{object_controller.js.es6 → object_controller.es6} +0 -0
- data/lib/generators/templates/{route.js.es6 → route.es6} +0 -0
- data/lib/generators/templates/{router.js.es6 → router.es6} +0 -0
- data/lib/generators/templates/scaffold/route/{edit.js.es6 → edit.es6} +1 -1
- data/lib/generators/templates/scaffold/route/{index.js.es6 → index.es6} +1 -1
- data/lib/generators/templates/scaffold/route/{new.js.es6 → new.es6} +1 -1
- data/lib/generators/templates/scaffold/route/{show.js.es6 → show.es6} +1 -1
- data/lib/generators/templates/scaffold/template/form.hbs +3 -4
- data/lib/generators/templates/scaffold/template/index.hbs +2 -2
- data/lib/generators/templates/scaffold/template/show.hbs +2 -2
- data/lib/generators/templates/scaffold_controller/controller.rb +2 -2
- data/lib/generators/templates/test/model.es6 +7 -0
- data/lib/generators/templates/test/route.es6 +23 -0
- data/lib/generators/templates/test/teaspoon_env.rb +38 -0
- data/lib/generators/templates/test/test_helper.js +55 -0
- data/lib/generators/templates/{view.js.es6 → view.es6} +0 -0
- data/test/dummy/config/adapters/application.es6.erb +3 -0
- data/test/dummy/config/application.js +1 -0
- data/test/dummy/config/environment.js.erb +2 -0
- data/test/dummy/config/environments/development.js.erb +5 -5
- data/test/dummy/config/environments/production.js.erb +2 -2
- data/test/dummy/config/environments/test.js.erb +1 -1
- data/test/dummy/config/initializers/secret_token.rb +1 -1
- data/test/dummy/config/initializers/teaspoon.rb +63 -0
- data/test/dummy/config/{router.js.es6 → router.es6} +0 -0
- data/test/dummy/log/test.log +71 -8
- data/test/dummy/test/teaspoon_env.rb +38 -0
- data/test/dummy/test/test_helper.js +55 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{eeb5bd38d1dad0d908461fd114f702bc → 08230536deeb8bca57aa54c1cf9a8a67} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0f4e288e1e01cda64059f8f521519f5a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{492d1909e24832f58ebca96dade2a876 → 1318d49b0a8b80264cc6d140438953bf} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/39492898b23538577ff8db562a35fb7c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/3f9cb5a26b08b9e25de91fe142228ad2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4a1d4e32cd7b9fd1c62bfd553ae56051 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4d3cadf0ab91b4a77adf81282a5550a1 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{1f15c49a05b13c3a7ee50d2ac3900f38 → 571f65ff5db500e9ad70fc11060270a8} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/660bc633c8899c6c1b20514637fa0169 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/67afcba9807cd5e57b80b5fdf9f26758 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{47fb03bce147145961cb3deeafca54d7 → 7190c4707840ff0d7c60920ae9739c79} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7ca4966e0a480430a858a7ab74518c75 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/83030d43d9bff738a1a01366d61d7691 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/83af35bb6b852de883a26a9458fd4e3a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8adfb5e646dca2c629e5d3dc88e2c2e9 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/9160f792acb62d1f7721c714681fcfe6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/a6a0d79927cb0ec286aa0afb9812685c +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/bb4a2293175928af3e23c47488077098 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/bf689240392e7355c0de5cfd47272146 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{66c0ce49a71def0f29dcf0bcaf8fb28d → c4eca8931f39b747ea9f916a3b42d8da} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cdbe9110f011148cc7a1f172dc18a883 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d5a48c6656341c56cac8a8e42bb925a5 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{d4cb455bee790d041fb3111fb1636531 → d5b1e7219e29c039a8ebb0a4e5b19a2b} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{ce7582379ff02bb25cee3ac0486fe1f2 → d5ce5243d4ca4a3739a15e60e3c685ba} +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/de0932670a6c856bc6eda1586fd29061 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e9abb671d48f6ff2be6ffb463ea652bf +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/{e36a853a1349d7f33f6c0083c05f897b → fb43f1b92235ac87bedc9ac12be00188} +0 -0
- data/test/dummy/tmp/generator_test_output/app/views/{post.js.es6 → post.es6} +0 -0
- data/test/fixtures/vcr_cassettes/fetch_ember_beta.yml +39609 -0
- data/test/fixtures/vcr_cassettes/fetch_ember_canary.yml +41381 -0
- data/test/fixtures/vcr_cassettes/fetch_ember_data_tagged.yml +4283 -0
- data/test/fixtures/vcr_cassettes/fetch_ember_release.yml +38824 -0
- data/test/fixtures/vcr_cassettes/fetch_ember_tagged.yml +29518 -0
- data/test/generators/bootstrap_generator_test.rb +12 -4
- data/test/generators/component_generator_test.rb +6 -6
- data/test/generators/controller_generator_test.rb +5 -5
- data/test/generators/install_generator_test.rb +163 -0
- data/test/generators/model_generator_test.rb +29 -7
- data/test/generators/resource_generator_test.rb +6 -6
- data/test/generators/route_generator_test.rb +1 -1
- data/test/generators/scaffold_generator_test.rb +59 -10
- data/test/generators/serializer_override_test.rb +19 -0
- data/test/generators/view_generator_test.rb +6 -6
- data/test/integration/engine_test.rb +4 -0
- data/test/support/generator_test_support.rb +2 -2
- data/vendor/assets/javascripts/{app.js.es6.erb → app.es6.erb} +3 -1
- data/vendor/assets/javascripts/ember-appkit/index.js +0 -1
- data/vendor/assets/javascripts/ember-appkit/resolver.js +235 -32
- data/vendor/assets/javascripts/fake_xml_http_request.js +473 -0
- data/vendor/assets/javascripts/fakehr.js +52 -0
- data/vendor/assets/javascripts/httpRespond.js +24 -0
- metadata +126 -55
- data/lib/generators/templates/adapter.js.erb +0 -3
- data/test/dummy/tmp/cache/assets/test/sprockets/10fe949cc641775f5630b5dad6deb5fc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/129b422236f443119233cdb0a4525a06 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/25b8b60341168a02f48dabd2b0aa82ad +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/827fafc13575b345cc572fd041ef1fba +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/83a9a7d15d681a382363d2bccb9528bb +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/de94a60b438eb5bf57653f3a220acd80 +0 -0
- data/vendor/assets/javascripts/ember-appkit/resolver_ext.js +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d4fe1e8ce27cb4f95d4b4c30f9c2aaf94e69350
|
4
|
+
data.tar.gz: ab980b71bd234c9f9d1ed61e397be7d51ae2a791
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e50c2af8ceffd072f9004f356f099249727560558269010074da492cc67ec7ae279125fc5de73640c8f5dd354f68669ad6b99f3bb7594c3729d061dd72aa2e60
|
7
|
+
data.tar.gz: 90e012ed5359a4268bc52730723af7224d7c80c1b2c5c73bd852ebbde83068f9610f332923627ace524f709579fe28d5576804cd2c3864a4b2b6a6835c833981
|
data/lib/ember/appkit/rails.rb
CHANGED
@@ -17,3 +17,7 @@ require 'ember/appkit/rails/engine'
|
|
17
17
|
require 'ember/appkit/rails/sprockets'
|
18
18
|
require 'ember/appkit/rails/template'
|
19
19
|
require 'ember/appkit/rails/active_support'
|
20
|
+
|
21
|
+
if [:development, :test].include?(Rails.env.to_sym)
|
22
|
+
require 'ember/appkit/rails/teaspoon'
|
23
|
+
end
|
@@ -20,6 +20,7 @@ class Ember::Appkit::Rails::Engine < ::Rails::Engine
|
|
20
20
|
require 'generators/ember/resource_override'
|
21
21
|
require 'generators/ember/scaffold_override'
|
22
22
|
require 'generators/ember/scaffold_controller_override'
|
23
|
+
require 'generators/ember/serializer_override'
|
23
24
|
end
|
24
25
|
|
25
26
|
initializer :appkit_transpiler do
|
@@ -57,13 +58,17 @@ class Ember::Appkit::Rails::Engine < ::Rails::Engine
|
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
61
|
+
initializer :appkit_serializer, before: :set_autoload_paths do |app|
|
62
|
+
app.config.paths.add File.join(Rails.root, 'config/serializers'), eager_load: true
|
63
|
+
end
|
64
|
+
|
60
65
|
initializer :appkit_sprockets do
|
61
66
|
assets = Sprockets::Railtie.config.assets
|
62
67
|
|
63
68
|
precompile_index = config.assets.precompile.index { |i| i =~ File.join(Rails.root, 'app/assets/javascripts/application.js') }
|
64
69
|
config.assets.precompile[precompile_index] = /(?<!assets\/javascripts)(?:\/|\\|\A)application\.(css|js)$/
|
65
70
|
|
66
|
-
|
71
|
+
assets.paths.delete(::Rails.root.join('app','assets','javascripts').to_s)
|
67
72
|
assets.paths.delete(::Rails.root.join('lib', 'assets','javascript').to_s)
|
68
73
|
|
69
74
|
index_of_last_app_assets = assets.paths.rindex { |path| path.to_s.start_with?(::Rails.root.join('app').to_s) } + 1
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= javascript_include_tag_for_teaspoon *@suite.spec_javascripts, @javascript_options %>
|
2
|
+
|
3
|
+
<script type="text/javascript">
|
4
|
+
Teaspoon.onWindowLoad(function () {
|
5
|
+
<% @suite.spec_javascripts_for_require.map(&:dasherize).each do |test| %>
|
6
|
+
require(<%=raw test.to_json %>);
|
7
|
+
<% end %>
|
8
|
+
Teaspoon.execute();
|
9
|
+
});
|
10
|
+
</script>
|
@@ -3,6 +3,9 @@ require 'generators/ember/generator_helpers'
|
|
3
3
|
module Ember
|
4
4
|
module Generators
|
5
5
|
class BootstrapGenerator < ::Rails::Generators::Base
|
6
|
+
APP_FOLDERS = %W{models controllers views routes components templates templates/components mixins}
|
7
|
+
CONFIG_FOLDERS = %W{serializers}
|
8
|
+
|
6
9
|
include Ember::Generators::GeneratorHelpers
|
7
10
|
|
8
11
|
source_root File.expand_path("../../templates", __FILE__)
|
@@ -13,15 +16,16 @@ module Ember
|
|
13
16
|
class_option :config_path, :type => :string, :aliases => "-c", :default => false, :desc => "Custom ember config path"
|
14
17
|
class_option :app_name, :type => :string, :aliases => "-n", :default => false, :desc => "Custom ember app name"
|
15
18
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
def create_app_dir_layout
|
20
|
+
create_layout(APP_FOLDERS)
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_config_dir_layout
|
24
|
+
create_layout(CONFIG_FOLDERS, config_path)
|
21
25
|
end
|
22
26
|
|
23
27
|
def create_router_file
|
24
|
-
template "router.
|
28
|
+
template "router.es6", "#{config_path}/router.es6"
|
25
29
|
end
|
26
30
|
|
27
31
|
def create_application_file
|
@@ -29,7 +33,7 @@ module Ember
|
|
29
33
|
end
|
30
34
|
|
31
35
|
def create_ember_adapter_file
|
32
|
-
|
36
|
+
copy_file "adapters/application.es6.erb", "#{config_path}/adapters/application.es6.erb"
|
33
37
|
end
|
34
38
|
|
35
39
|
def create_ember_environment_files
|
@@ -63,19 +67,33 @@ module Ember
|
|
63
67
|
def add_custom_paths
|
64
68
|
if app_path != configuration.paths.app
|
65
69
|
insert_into_file 'config/application.rb', before: /\s\send\nend/ do
|
66
|
-
" config.ember.
|
70
|
+
" config.ember.paths.app = '#{app_path}'\n"
|
67
71
|
end
|
68
72
|
end
|
69
73
|
|
70
74
|
if config_path != configuration.paths.config
|
71
75
|
insert_into_file 'config/application.rb', before: /\s\send\nend/ do
|
72
|
-
" config.ember.
|
76
|
+
" config.ember.paths.config = '#{config_path}'\n"
|
73
77
|
end
|
74
78
|
end
|
75
79
|
end
|
76
80
|
|
81
|
+
def add_teaspoon_files
|
82
|
+
copy_file "initializers/teaspoon.rb", "config/initializers/teaspoon.rb"
|
83
|
+
copy_file "test/teaspoon_env.rb", "test/teaspoon_env.rb"
|
84
|
+
copy_file "test/test_helper.js", "test/test_helper.js"
|
85
|
+
empty_directory "test/integration"
|
86
|
+
end
|
87
|
+
|
77
88
|
private
|
78
89
|
|
90
|
+
def create_layout(directories, path = app_path)
|
91
|
+
directories.each do |dir|
|
92
|
+
empty_directory "#{path}/#{dir}"
|
93
|
+
create_file "#{path}/#{dir}/.gitkeep" unless options[:skip_git]
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
79
97
|
def remove_turbolinks_from_layout
|
80
98
|
path = Pathname.new(destination_root).join('app','views','layouts','application.html.erb')
|
81
99
|
return unless path.exist?
|
@@ -11,8 +11,8 @@ module Ember
|
|
11
11
|
|
12
12
|
def create_component_files
|
13
13
|
dashed_file_name = file_name.gsub(/_/, '-')
|
14
|
-
component_path = File.join(app_path, 'components', class_path, "#{dashed_file_name}.
|
15
|
-
template "component.
|
14
|
+
component_path = File.join(app_path, 'components', class_path, "#{dashed_file_name}.es6")
|
15
|
+
template "component.es6", component_path
|
16
16
|
|
17
17
|
template_path = File.join(app_path, 'templates/components', class_path, "#{dashed_file_name}.hbs")
|
18
18
|
template "component.template.hbs", template_path
|
@@ -13,14 +13,14 @@ module Ember
|
|
13
13
|
class_option :object, :type => :boolean, :default => false, :desc => "Create an Ember.ObjectController to represent a single object."
|
14
14
|
|
15
15
|
def create_controller_files
|
16
|
-
file_path = File.join(app_path, 'controllers', class_path, "#{file_name}.
|
16
|
+
file_path = File.join(app_path, 'controllers', class_path, "#{file_name}.es6")
|
17
17
|
|
18
18
|
if options.array?
|
19
|
-
template "array_controller.
|
19
|
+
template "array_controller.es6", file_path
|
20
20
|
elsif options.object?
|
21
|
-
template "object_controller.
|
21
|
+
template "object_controller.es6", file_path
|
22
22
|
else
|
23
|
-
template "controller.
|
23
|
+
template "controller.es6", file_path
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -44,6 +44,10 @@ module Ember
|
|
44
44
|
(class_path + [file_name]).map!{ |m| m.camelize }.join()
|
45
45
|
end
|
46
46
|
|
47
|
+
def require_name
|
48
|
+
(class_path + [file_name]).map!{ |m| m.dasherize }.join('/')
|
49
|
+
end
|
50
|
+
|
47
51
|
def handlebars_template_path
|
48
52
|
File.join(class_path, file_name).gsub(/^\//, '')
|
49
53
|
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'uri'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
|
6
|
+
# Based on https://github.com/emberjs/ember-rails/blob/master/lib/generators/ember/install_generator.rb
|
7
|
+
module Ember
|
8
|
+
module Generators
|
9
|
+
class InstallGenerator < ::Rails::Generators::Base
|
10
|
+
|
11
|
+
class InvalidChannel < ::Thor::Error; end
|
12
|
+
class ConflictingOptions < ::Thor::Error; end
|
13
|
+
class Deprecated < ::Thor::Error; end
|
14
|
+
class InsufficientOptions < ::Thor::Error; end
|
15
|
+
|
16
|
+
::InvalidChannel = InvalidChannel
|
17
|
+
::ConflictingOptions = ConflictingOptions
|
18
|
+
::Deprecated = Deprecated
|
19
|
+
::InsufficientOptions = InsufficientOptions
|
20
|
+
|
21
|
+
desc "Install Ember.js into your vendor folder"
|
22
|
+
class_option :channel,
|
23
|
+
:type => :string,
|
24
|
+
:required => false,
|
25
|
+
:desc => "Ember release channel Choose between 'release', 'beta' or 'canary'"
|
26
|
+
class_option :ember_only,
|
27
|
+
:type => :boolean,
|
28
|
+
:required => false,
|
29
|
+
:desc => "Only download Ember.",
|
30
|
+
:aliases => '--ember'
|
31
|
+
class_option :ember_data_only,
|
32
|
+
:type => :boolean,
|
33
|
+
:required => false,
|
34
|
+
:desc => "Only download ember-data",
|
35
|
+
:aliases => '--ember-data'
|
36
|
+
class_option :tag,
|
37
|
+
:type => :string,
|
38
|
+
:required => false,
|
39
|
+
:desc => "Download tagged release use syntax v1.0.0-beta.3/ember-data & v1.0.0-rc.8/ember"
|
40
|
+
|
41
|
+
def initialize(args = [], options = {}, config = {})
|
42
|
+
super(args, options, config)
|
43
|
+
check_options
|
44
|
+
process_options
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def ember
|
49
|
+
return if options.ember_data_only?
|
50
|
+
|
51
|
+
get_ember_for(:development)
|
52
|
+
get_ember_for(:production)
|
53
|
+
rescue Thor::Error
|
54
|
+
say('WARNING: no ember files on this channel or tag' , :yellow)
|
55
|
+
end
|
56
|
+
|
57
|
+
def ember_data
|
58
|
+
return if options.ember_only?
|
59
|
+
|
60
|
+
get_ember_for(:development, ember_data_channel, 'ember-data')
|
61
|
+
get_ember_for(:production, ember_data_channel, 'ember-data')
|
62
|
+
rescue Thor::Error
|
63
|
+
say('WARNING: no ember-data files on this channel or tag' , :yellow)
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def get_ember_for(environment, chan = channel, name = 'ember')
|
69
|
+
file_name = environment == :production ? "#{name}.prod.js" : "#{name}.js"
|
70
|
+
create_file "vendor/assets/javascripts/#{file_name}" do
|
71
|
+
fetch "#{base_url}/#{chan}/#{file_name_for(name, environment)}", "vendor/assets/javascripts/#{file_name}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def ember_data_channel
|
76
|
+
if channel == :release
|
77
|
+
say_status("warning:", 'Ember Data is not available on the :release channel. Falling back to beta channel.' , :yellow)
|
78
|
+
:beta
|
79
|
+
else
|
80
|
+
channel
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def file_name_for(component,environment)
|
85
|
+
case environment
|
86
|
+
when :production
|
87
|
+
"#{component}.min.js"
|
88
|
+
when :development
|
89
|
+
"#{component}.js"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def check_options
|
94
|
+
if options.channel? && !%w(release beta canary).include?(options[:channel])
|
95
|
+
say 'ERROR: channel can either be release, beta or canary', :red
|
96
|
+
raise InvalidChannel
|
97
|
+
end
|
98
|
+
if options.channel? && options.tag?
|
99
|
+
say 'ERROR: conflicting options. --tag and --channel. --tag is incompatible with other options', :red
|
100
|
+
raise ConflictingOptions
|
101
|
+
end
|
102
|
+
if options.tag? && !(options.ember_only? || options.ember_data_only?)
|
103
|
+
say 'ERROR: insufficient options. --tag needs to be combined with eithe --ember or --ember-data', :red
|
104
|
+
raise InsufficientOptions
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def process_options
|
109
|
+
if options.tag?
|
110
|
+
@channel = "tags/#{options.tag}"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def base_url
|
115
|
+
'http://builds.emberjs.com'
|
116
|
+
end
|
117
|
+
|
118
|
+
def channel
|
119
|
+
if options.channel
|
120
|
+
@channel ||= options[:channel]
|
121
|
+
else
|
122
|
+
@channel ||= :release
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def fetch(from, to)
|
127
|
+
message = "#{from} -> #{to}"
|
128
|
+
say_status("downloading:", message , :green)
|
129
|
+
|
130
|
+
uri = URI(from)
|
131
|
+
output = StringIO.new
|
132
|
+
output.puts "// Fetched from channel: #{channel}, with url " + uri.to_s
|
133
|
+
output.puts "// Fetched on: " + Time.now.utc.iso8601.to_s
|
134
|
+
response = Net::HTTP.get_response(uri)
|
135
|
+
case response.code
|
136
|
+
when '404'
|
137
|
+
say "ERROR: Error reading the content from the channel with url #{from}. File not found" , :red
|
138
|
+
raise Thor::Error
|
139
|
+
when '200'
|
140
|
+
output.puts response.body.force_encoding("UTF-8")
|
141
|
+
else
|
142
|
+
say "ERROR: Unexpected error with status #{response.code} reading the content from the channel with url #{from}." , :red
|
143
|
+
raise Thor::Error
|
144
|
+
end
|
145
|
+
output.rewind
|
146
|
+
content = output.read
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -10,8 +10,13 @@ module Ember
|
|
10
10
|
argument :attributes, :type => :array, :default => [], :banner => "field[:type] field[:type] ..."
|
11
11
|
|
12
12
|
def create_model_files
|
13
|
-
file_path = File.join(app_path, 'models', class_path, "#{file_name.singularize}.
|
14
|
-
template "model.
|
13
|
+
file_path = File.join(app_path, 'models', class_path, "#{file_name.singularize}.es6")
|
14
|
+
template "model.es6", file_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_test_files
|
18
|
+
file_path = File.join('test', 'models', class_path, "#{file_name.singularize}_test.es6")
|
19
|
+
template "test/model.es6", file_path
|
15
20
|
end
|
16
21
|
|
17
22
|
private
|
@@ -25,7 +25,7 @@ module Ember
|
|
25
25
|
private
|
26
26
|
|
27
27
|
def inject_into_router_file(name)
|
28
|
-
router_file = "#{config_path}/router.
|
28
|
+
router_file = "#{config_path}/router.es6"
|
29
29
|
inject_into_file(router_file, :after => /^.*Router.map\(function\(\) \{*$/) do
|
30
30
|
"\n this.resource('#{name.pluralize}');"
|
31
31
|
end
|
@@ -10,8 +10,8 @@ module Ember
|
|
10
10
|
desc "Creates a new Ember.js route"
|
11
11
|
|
12
12
|
def create_route_files
|
13
|
-
file_path = File.join(app_path, 'routes', class_path, "#{file_name}.
|
14
|
-
template "route.
|
13
|
+
file_path = File.join(app_path, 'routes', class_path, "#{file_name}.es6")
|
14
|
+
template "route.es6", file_path
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -11,7 +11,7 @@ module Ember
|
|
11
11
|
class_option :object, :type => :boolean, :default => false, :desc => "Create an Ember.ObjectController to represent a single object"
|
12
12
|
|
13
13
|
def create_route_files
|
14
|
-
create_resource_files_for(:route, '
|
14
|
+
create_resource_files_for(:route, 'es6')
|
15
15
|
inject_into_router_file(file_name)
|
16
16
|
end
|
17
17
|
|
@@ -21,6 +21,12 @@ module Ember
|
|
21
21
|
template "scaffold/template/form.hbs", File.join(app_path, 'templates', file_name.pluralize, 'form.hbs')
|
22
22
|
end
|
23
23
|
|
24
|
+
def create_tests
|
25
|
+
["route"].each do |type|
|
26
|
+
create_test_files_for(type)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
24
30
|
private
|
25
31
|
|
26
32
|
def create_resource_files_for(type, extension)
|
@@ -32,8 +38,17 @@ module Ember
|
|
32
38
|
end
|
33
39
|
end
|
34
40
|
|
41
|
+
def create_test_files_for(type)
|
42
|
+
resource = file_name.pluralize
|
43
|
+
|
44
|
+
[:edit, :index, :new, :show].each do |action|
|
45
|
+
object = "#{resource}_#{action}_#{type}".camelize
|
46
|
+
template "test/#{type}.es6", File.join('test', type.pluralize, "#{resource}/#{action}_test.es6"), object: object, action: action
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
35
50
|
def inject_into_router_file(name)
|
36
|
-
router_file = "#{config_path}/router.
|
51
|
+
router_file = "#{config_path}/router.es6"
|
37
52
|
js = <<-JS
|
38
53
|
|
39
54
|
this.resource('#{name.pluralize}', function() {
|
@@ -49,4 +64,3 @@ module Ember
|
|
49
64
|
end
|
50
65
|
end
|
51
66
|
end
|
52
|
-
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "generators/serializer/serializer_generator"
|
5
|
+
rescue LoadError
|
6
|
+
# TODO: Make this primary when active_model_serializers 0.9.0 is final
|
7
|
+
require "active_model/serializer/generators/serializer/serializer_generator"
|
8
|
+
end
|
9
|
+
|
10
|
+
module Rails
|
11
|
+
module Generators
|
12
|
+
SerializerGenerator.class_eval do
|
13
|
+
def create_serializer_file
|
14
|
+
template 'serializer.rb', File.join('config/serializers', class_path, "#{file_name}_serializer.rb")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|