ember-appkit-rails 0.4.0 → 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/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
|