hanber-rails 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +17 -0
  3. data/Appraisals +10 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +44 -0
  6. data/README.md +29 -0
  7. data/Rakefile +14 -0
  8. data/hanber-rails.gemspec +29 -0
  9. data/lib/.DS_Store +0 -0
  10. data/lib/generators/.DS_Store +0 -0
  11. data/lib/generators/hanber/.DS_Store +0 -0
  12. data/lib/generators/hanber/bootstrap_generator.rb +56 -0
  13. data/lib/generators/hanber/controller_generator.rb +24 -0
  14. data/lib/generators/hanber/generator_helpers.rb +19 -0
  15. data/lib/generators/hanber/install_generator.rb +94 -0
  16. data/lib/generators/hanber/model_generator.rb +44 -0
  17. data/lib/generators/hanber/resource_override.rb +32 -0
  18. data/lib/generators/hanber/route_handler_generator.rb +15 -0
  19. data/lib/generators/hanber/scaffold_generator.rb +46 -0
  20. data/lib/generators/hanber/view_generator.rb +20 -0
  21. data/lib/generators/templates/app.js +11 -0
  22. data/lib/generators/templates/application.handlebars +3 -0
  23. data/lib/generators/templates/array_controller.js +3 -0
  24. data/lib/generators/templates/controller.js +3 -0
  25. data/lib/generators/templates/model.js +5 -0
  26. data/lib/generators/templates/object_controller.js +3 -0
  27. data/lib/generators/templates/route_handler.js +11 -0
  28. data/lib/generators/templates/router.js +4 -0
  29. data/lib/generators/templates/scaffolded_route.js +11 -0
  30. data/lib/generators/templates/store.js +5 -0
  31. data/lib/generators/templates/view.handlebars +5 -0
  32. data/lib/generators/templates/view.js +3 -0
  33. data/lib/hanber/.DS_Store +0 -0
  34. data/lib/hanber/handlebars/template.rb +96 -0
  35. data/lib/hanber/handlebars/version.rb +5 -0
  36. data/lib/hanber/rails/engine.rb +21 -0
  37. data/lib/hanber/rails/version.rb +5 -0
  38. data/lib/hanber/version.rb +3 -0
  39. data/lib/hanber-rails.rb +1 -0
  40. data/lib/hanber_rails.rb +62 -0
  41. metadata +197 -0
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Appraisals ADDED
@@ -0,0 +1,10 @@
1
+ appraise "rails3" do
2
+ gem 'rails', '~> 3.1'
3
+ end
4
+
5
+ unless RUBY_VERSION == "1.8.7"
6
+ appraise "rails4" do
7
+ gem 'rails', :git => 'https://github.com/rails/rails.git'
8
+ gem 'activerecord-deprecated_finders', :git => 'https://github.com/rails/activerecord-deprecated_finders.git'
9
+ end
10
+ end
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in hanber-rails.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,44 @@
1
+ Copyright (c) 2013 logical42
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ ---
25
+
26
+ Copyright (c) 2012 Keith Pitt, Rob Monie, Joao Carlos, Paul Chavard and ember-rails contributors
27
+
28
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
29
+ this software and associated documentation files (the "Software"), to deal in
30
+ the Software without restriction, including without limitation the rights to
31
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
32
+ of the Software, and to permit persons to whom the Software is furnished to do
33
+ so, subject to the following conditions:
34
+
35
+ The above copyright notice and this permission notice shall be included in all
36
+ copies or substantial portions of the Software.
37
+
38
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
40
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
42
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
43
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
44
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Hanber::Rails
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'hanber-rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install hanber-rails
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require "bundler"
2
+ Bundler::GemHelper.install_tasks
3
+ require 'appraisal'
4
+
5
+ require 'rake/testtask'
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'lib'
9
+ t.libs << 'test'
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.verbose = false
12
+ end
13
+
14
+ task :default => :test
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'hanber/rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "hanber-rails"
8
+ gem.version = Hanber::Rails::VERSION
9
+ gem.authors = ["logical42"]
10
+ gem.email = ["han@thirstlabs.com"]
11
+ gem.description = %q{ hacked version of ember-rails }
12
+ gem.summary = %q{ customized version of ember-rails for me, han }
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency "execjs", [">= 1.2"]
21
+ gem.add_dependency "railties", [">= 3.1"]
22
+ gem.add_dependency "active_model_serializers"
23
+ gem.add_dependency "barber"
24
+
25
+ gem.add_development_dependency "bundler", [">= 1.2.2"]
26
+ gem.add_development_dependency "appraisal"
27
+ gem.add_development_dependency "tzinfo"
28
+
29
+ end
data/lib/.DS_Store ADDED
Binary file
Binary file
Binary file
@@ -0,0 +1,56 @@
1
+ require 'generators/hanber/generator_helpers'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class BootstrapGenerator < ::Rails::Generators::Base
6
+ include Hanber::Generators::GeneratorHelpers
7
+
8
+ source_root File.expand_path("../../templates", __FILE__)
9
+
10
+ desc "Creates a default Ember.js folder layout in app/assets/javascripts/ember"
11
+
12
+ class_option :skip_git, :type => :boolean, :aliases => "-g", :default => false, :desc => "Skip Git keeps"
13
+
14
+ def inject_ember
15
+ application_file = "app/assets/javascripts/application.js"
16
+
17
+ inject_into_file(application_file, :before => "//= require_tree") do
18
+ dependencies = [
19
+ # this should eventually become handlebars-runtime when we remove
20
+ # the runtime dependency on compilation
21
+ "//= require handlebars",
22
+ "//= require ember",
23
+ "//= require ember-data",
24
+ "//= require_self",
25
+ "//= require #{application_name.underscore}",
26
+ "#{application_name.camelize} = Ember.Application.create();"
27
+ ]
28
+ dependencies.join("\n").concat("\n")
29
+ end
30
+ end
31
+
32
+ def create_dir_layout
33
+ %W{models controllers views route_handlers helpers templates}.each do |dir|
34
+ empty_directory "#{ember_path}/#{dir}"
35
+ create_file "#{ember_path}/#{dir}/.gitkeep" unless options[:skip_git]
36
+ end
37
+ end
38
+
39
+ def create_app_file
40
+ template "app.js", "#{ember_path}/#{application_name.underscore}.js"
41
+ end
42
+
43
+ def create_router_file
44
+ template "router.js", "#{ember_path}/router.js"
45
+ end
46
+
47
+ def create_store_file
48
+ template "store.js", "#{ember_path}/store.js"
49
+ end
50
+
51
+ def create_app_stubs
52
+ generate "ember:view", "application"
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,24 @@
1
+ require 'hanber/version'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class ControllerGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../../templates", __FILE__)
7
+
8
+ desc "Creates a new Ember.js controller"
9
+ class_option :array, :type => :boolean, :default => false, :desc => "Create an Ember.ArrayController to represent multiple objects"
10
+ class_option :object, :type => :boolean, :default => false, :desc => "Create an Ember.ObjectController to represent a single object"
11
+
12
+ def create_controller_files
13
+ file_path = File.join('app/assets/javascripts/controllers', class_path, "#{file_name}_controller.js")
14
+ if options.array?
15
+ template 'array_controller.js', file_path
16
+ elsif options.object?
17
+ template 'object_controller.js', file_path
18
+ else
19
+ template 'controller.js', file_path
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module Hanber
2
+ module Generators
3
+ module GeneratorHelpers
4
+
5
+ def ember_path
6
+ "app/assets/javascripts"
7
+ end
8
+
9
+ def application_name
10
+ if defined?(::Rails) && ::Rails.application
11
+ ::Rails.application.class.name.split('::').first
12
+ else
13
+ "app"
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,94 @@
1
+ require 'hanber/version'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+ desc "Install Ember.js into your vendor folder"
7
+ class_option :head, :type => :boolean, :default => false, :desc => "Download latest Ember.js from GitHub and copy it into your project"
8
+
9
+ def copy_ember
10
+ if options.head?
11
+
12
+ git_root = File.expand_path "~/.ember"
13
+ gem_file = File.join git_root, "Gemfile"
14
+
15
+ # If it doesn't exist yet
16
+ unless File.exist?(git_root)
17
+ command = %{git clone git://github.com/emberjs/ember.js.git "#{git_root}"}
18
+ say_status("downloading", command, :green)
19
+
20
+ cmd command
21
+ else
22
+ Dir.chdir git_root do
23
+ command = "git fetch origin && git reset origin/master --hard"
24
+ say_status("updating", command, :green)
25
+
26
+ cmd command
27
+ end
28
+ end
29
+
30
+ Dir.chdir git_root do
31
+ say_status("building", "bundle && bundle exec rake dist", :green)
32
+ Bundler.with_clean_env do
33
+ cmd "bundle --gemfile #{gem_file}"
34
+ cmd %{BUNDLE_GEMFILE="#{gem_file}" bundle exec rake dist}
35
+ end
36
+ end
37
+
38
+ source_paths << File.join(git_root, "dist")
39
+
40
+ copy_file "ember.js", "vendor/assets/ember/development/ember.js"
41
+ copy_file "ember.min.js", "vendor/assets/ember/production/ember.js"
42
+ end
43
+ end
44
+
45
+ def copy_ember_data
46
+ if options.head?
47
+
48
+ git_root = File.expand_path "~/.ember-data"
49
+ gem_file = File.join git_root, "Gemfile"
50
+
51
+ # If it doesn't exist yet
52
+ unless File.exist?(git_root)
53
+ command = %{git clone git://github.com/emberjs/data.git "#{git_root}"}
54
+ say_status("downloading", command, :green)
55
+
56
+ cmd command
57
+ else
58
+ Dir.chdir git_root do
59
+ command = "git fetch origin && git reset origin/master --hard"
60
+ say_status("updating", command, :green)
61
+
62
+ cmd command
63
+ end
64
+ end
65
+
66
+ Dir.chdir git_root do
67
+ say_status("building", "bundle && bundle exec rake", :green)
68
+ Bundler.with_clean_env do
69
+ cmd "bundle --gemfile #{gem_file}"
70
+ cmd %{BUNDLE_GEMFILE="#{gem_file}" bundle exec rake}
71
+ end
72
+ end
73
+
74
+ source_paths << File.join(git_root, "dist")
75
+
76
+ copy_file "ember-data.js", "vendor/assets/ember/development/ember-data.js"
77
+ copy_file "ember-data.min.js", "vendor/assets/ember/production/ember-data.js"
78
+ end
79
+ end
80
+
81
+ private
82
+
83
+ def cmd(command)
84
+ out = `#{command}`
85
+
86
+ if $?.exitstatus != 0
87
+ raise "Command error: command `#{command}` in directory #{Dir.pwd} has failed."
88
+ end
89
+ out
90
+ end
91
+
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,44 @@
1
+ require 'hanber/version'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class ModelGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../../templates", __FILE__)
7
+ argument :attributes, :type => :array, :default => [], :banner => "field[:type] field[:type] ..."
8
+
9
+ desc "Creates a new Ember.js model"
10
+
11
+ def create_model_files
12
+ template 'model.js', File.join('app/assets/javascripts/models', class_path, "#{file_name}.js")
13
+ end
14
+
15
+ private
16
+ EMBER_TYPE_LOOKUP = {
17
+ nil => 'string',
18
+
19
+ binary: 'string',
20
+ string: 'string',
21
+ text: 'string',
22
+ boolean: 'boolean',
23
+ date: 'date',
24
+ datetime: 'date',
25
+ time: 'date',
26
+ timestamp: 'date',
27
+ decimal: 'number',
28
+ float: 'number',
29
+ integer: 'number',
30
+ primary_key: 'number'
31
+ }
32
+
33
+ def parse_attributes!
34
+ self.attributes = (attributes || []).map do |attr|
35
+ name, type = attr.split(':')
36
+ key = type.try(:to_sym)
37
+ ember_type = EMBER_TYPE_LOOKUP[key] || type
38
+
39
+ { name: name, type: ember_type }
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,32 @@
1
+ require "rails/generators"
2
+ require "rails/generators/rails/resource/resource_generator"
3
+ require "generators/hanber/controller_generator"
4
+ require "generators/hanber/view_generator"
5
+
6
+ module Rails
7
+ module Generators
8
+ ResourceGenerator.class_eval do
9
+ def add_ember
10
+ say_status :invoke, "ember:model", :white
11
+ with_padding do
12
+ invoke "ember:model"
13
+ end
14
+
15
+ say_status :invoke, "ember controller and view (singular)", :white
16
+ with_padding do
17
+ invoke "ember:view", [singular_name], :object => true
18
+ end
19
+
20
+ @_invocations[Ember::Generators::ControllerGenerator].delete "create_controller_files"
21
+ @_invocations[Ember::Generators::ViewGenerator].delete "create_view_files"
22
+
23
+ say_status :invoke, "ember controller and view (plural)", :white
24
+ with_padding do
25
+ invoke "ember:view", [plural_name], :array => true
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+
@@ -0,0 +1,15 @@
1
+ require 'hanber/version'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class RouteHandlerGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../../templates", __FILE__)
7
+
8
+ desc "Creates a new route handler"
9
+
10
+ def create_view_files
11
+ template 'route_handler.js', File.join('app/assets/javascripts/route_handlers', class_path, "#{file_name}_route.js")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,46 @@
1
+ require 'hanber/version'
2
+ require 'generators/hanber/generator_helpers'
3
+ require 'generators/hanber/model_generator'
4
+ require 'generators/hanber/route_handler_generator'
5
+ module Hanber
6
+ module Generators
7
+ class ScaffoldGenerator < ::Rails::Generators::NamedBase
8
+ include Hanber::Generators::GeneratorHelpers
9
+
10
+ source_root File.expand_path("../../templates", __FILE__)
11
+
12
+ argument :attributes, :type => :array, :default => [], :banner => "field[:type] field[:type] ..."
13
+ class_option :skip_model, :type => :boolean, :default => false, :desc => "Generate with no model file"
14
+ desc "Scaffold a restful resource for ember similarly to the rails scaffold generator."
15
+
16
+ def create_model
17
+ unless options.skip_model?
18
+ generate("hanber:model", "#{file_name} #{puts attributes}")
19
+ end
20
+ #template 'model.js', File.join('app/assets/javascripts/models', class_path, "#{file_name}.js")
21
+ end
22
+ def create_resourceful_route
23
+
24
+ insert_into_file "app/assets/javascripts/router.js", after: ".map(function(match) {\n" do
25
+ %Q(
26
+ match("/#{file_name.pluralize}").to("#{file_name.pluralize}", function(match) {
27
+ match("/").to("#{file_name.pluralize}Index");
28
+ match("/new").to("#{file_name}New");
29
+ match("/:#{file_name.underscore}_id").to("#{file_name}", function(match) {
30
+ match('/').to("#{file_name}Show")
31
+ match("/content").to("#{file_name}Edit");
32
+ });
33
+ });
34
+ )
35
+ end
36
+ end
37
+ def create_route_handlers
38
+ resource_hash = {show: "#{file_name}Show", index: "#{file_name.pluralize}Index", new: "#{file_name}New", edit: "#{file_name}Edit"}
39
+ resource_hash.each do |restful_action, restful_name|
40
+ @rest_action = restful_name
41
+ template('scaffolded_route.js', File.join("app/assets/javascripts/route_handlers/#{file_name}_routes", class_path, "#{restful_action.to_s}.js"))
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,20 @@
1
+ require 'hanber/version'
2
+
3
+ module Hanber
4
+ module Generators
5
+ class ViewGenerator < ::Rails::Generators::NamedBase
6
+ source_root File.expand_path("../../templates", __FILE__)
7
+
8
+ desc "Creates a new Ember.js view and associated Handlebars template"
9
+ class_option :array, :type => :boolean, :default => false, :desc => "Create an Ember.ArrayController to represent multiple objects"
10
+ class_option :object, :type => :boolean, :default => false, :desc => "Create an Ember.ObjectController to represent a single object"
11
+
12
+ def create_view_files
13
+ template 'view.js', File.join('app/assets/javascripts/views', class_path, "#{file_name}_view.js")
14
+ template 'view.handlebars', File.join('app/assets/javascripts/templates', class_path, "#{file_name}.hjs")
15
+ invoke('ember:controller', [ file_name ], options)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ //= require ./store
2
+ //= require_tree ./models
3
+ //= require_tree ./controllers
4
+ //= require_tree ./views
5
+ //= require_tree ./helpers
6
+ //= require_tree ./templates
7
+ //= require router
8
+ //= require_tree ./route_handlers
9
+ //= require_self
10
+
11
+ <%= application_name.camelize %>.initialize();
@@ -0,0 +1,3 @@
1
+ <h1><%= application_name %></h1>
2
+
3
+ {{outlet}}
@@ -0,0 +1,3 @@
1
+ <%= application_name.camelize %>.<%= class_name %>Controller = Ember.ArrayController.extend({
2
+
3
+ });
@@ -0,0 +1,3 @@
1
+ <%= application_name.camelize %>.<%= class_name %>Controller = Ember.Controller.extend({
2
+
3
+ });
@@ -0,0 +1,5 @@
1
+ <%= application_name.camelize %>.<%= class_name %> = DS.Model.extend({
2
+ <% attributes.each_index do |idx| -%>
3
+ <%= attributes[idx][:name].camelize(:lower) %>: DS.attr('<%= attributes[idx][:type] %>')<% if (idx < attributes.length-1) %>,<% end %>
4
+ <% end -%>
5
+ });
@@ -0,0 +1,3 @@
1
+ <%= application_name.camelize %>.<%= class_name %>Controller = Ember.ObjectController.extend({
2
+
3
+ });
@@ -0,0 +1,11 @@
1
+ <%= application_name.camelize %>.<%= class_name %>Route = Ember.Route.extend({
2
+ renderTemplates: function() {
3
+ this.render('<%= class_name.underscore %>');
4
+ },
5
+ setupControllers: function(controller) {
6
+
7
+ },
8
+ enter: function() {
9
+ console.log("entering <%= class_name.underscore %> route")
10
+ }
11
+ });
@@ -0,0 +1,4 @@
1
+ <%= application_name.camelize %>.map(function(match) {
2
+ // routes here
3
+ // i.e. match("/").to("home")
4
+ });
@@ -0,0 +1,11 @@
1
+ <%= application_name.camelize %>.<%= @rest_action.camelize %>Route = Ember.Route.extend({
2
+ renderTemplates: function() {
3
+ this.render('<%= @rest_action.underscore %>');
4
+ },
5
+ setupControllers: function(controller) {
6
+
7
+ },
8
+ enter: function() {
9
+ console.log("entering <%= @rest_action.underscore %> route")
10
+ }
11
+ });
@@ -0,0 +1,5 @@
1
+ <%= application_name.camelize %>.Store = DS.Store.extend({
2
+ revision: 4,
3
+ adapter: DS.RESTAdapter.create()
4
+ });
5
+
@@ -0,0 +1,5 @@
1
+ <h1><%= class_name %></h1>
2
+
3
+ <p>Your content here.</p>
4
+
5
+ {{outlet}}
@@ -0,0 +1,3 @@
1
+ <%= application_name.camelize %>.<%= class_name.camelize %>View = Ember.View.extend({
2
+ templateName: '<%= class_name.underscore %>'
3
+ });
Binary file
@@ -0,0 +1,96 @@
1
+ require 'sprockets'
2
+ require 'sprockets/engines'
3
+ require 'barber'
4
+
5
+ module Hanber
6
+ module Handlebars
7
+ class Template < Tilt::Template
8
+ def self.default_mime_type
9
+ 'application/javascript'
10
+ end
11
+
12
+ def prepare; end
13
+
14
+ def evaluate(scope, locals, &block)
15
+ target = template_target(scope)
16
+ raw = handlebars?(scope)
17
+
18
+ if raw
19
+ template = data
20
+ else
21
+ template = mustache_to_handlebars(scope, data)
22
+ end
23
+
24
+ if configuration.precompile
25
+ if raw
26
+ template = precompile_handlebars(template)
27
+ else
28
+ template = precompile_ember_handlebars(template)
29
+ end
30
+ else
31
+ if raw
32
+ template = compile_handlebars(data)
33
+ else
34
+ template = compile_ember_handlebars(template)
35
+ end
36
+ end
37
+
38
+ "#{target} = #{template}\n"
39
+ end
40
+
41
+ private
42
+
43
+ def handlebars?(scope)
44
+ scope.pathname.to_s =~ /\.raw\.(handlebars|hjs|hbs)/
45
+ end
46
+
47
+ def template_target(scope)
48
+ "Hanber.TEMPLATES[#{template_path(scope.logical_path).inspect}]"
49
+ end
50
+
51
+ def compile_handlebars(string)
52
+ "Handlebars.compile(#{indent(string).inspect});"
53
+ end
54
+
55
+ def precompile_handlebars(string)
56
+ Barber::FilePrecompiler.call(string)
57
+ end
58
+
59
+ def compile_ember_handlebars(string)
60
+ "Hanber.Handlebars.compile(#{indent(string).inspect});"
61
+ end
62
+
63
+ def precompile_ember_handlebars(string)
64
+ Barber::Ember::FilePrecompiler.call(string)
65
+ end
66
+
67
+ def mustache_to_handlebars(scope, template)
68
+ if scope.pathname.to_s =~ /\.mustache\.(handlebars|hjs|hbs)/
69
+ template.gsub(/\{\{(\w[^\}\}]+)\}\}/){ |x| "{{unbound #{$1}}}" }
70
+ else
71
+ template
72
+ end
73
+ end
74
+
75
+ def template_path(path)
76
+ root = configuration.templates_root
77
+
78
+ unless root.blank?
79
+ path.gsub!(/^#{Regexp.quote(root)}\/?/, '')
80
+ end
81
+
82
+ path = path.split('/')
83
+
84
+ path.join(configuration.templates_path_separator)
85
+ end
86
+
87
+ def configuration
88
+ ::Rails.configuration.handlebars
89
+ end
90
+
91
+ def indent(string)
92
+ string.gsub(/$(.)/m, "\\1 ").strip
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,5 @@
1
+ module Hanber
2
+ module Handlebars
3
+ VERSION = "1.0.rc.1"
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ require 'hanber/handlebars/template'
2
+ require 'active_model_serializers'
3
+
4
+ module Hanber
5
+ module Rails
6
+ class Engine < ::Rails::Engine
7
+ config.handlebars = ActiveSupport::OrderedOptions.new
8
+
9
+ config.handlebars.precompile = true
10
+ config.handlebars.templates_root = "templates"
11
+ config.handlebars.templates_path_separator = '/'
12
+
13
+ initializer "ember_rails.setup", :group => :all do |app|
14
+
15
+ app.assets.register_engine '.handlebars', Ember::Handlebars::Template
16
+ app.assets.register_engine '.hbs', Ember::Handlebars::Template
17
+ app.assets.register_engine '.hjs', Ember::Handlebars::Template
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ module Hanber
2
+ module Rails
3
+ VERSION = '0.0.8'
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module Hanber
2
+ VERSION = "1.0-pre.2"
3
+ end
@@ -0,0 +1 @@
1
+ require 'hanber_rails'
@@ -0,0 +1,62 @@
1
+ require 'rails'
2
+ require 'hanber/rails/version'
3
+ require 'hanber/version'
4
+ require 'hanber/handlebars/version'
5
+ require 'hanber/rails/engine'
6
+
7
+ module Hanber
8
+ module Rails
9
+ class Railtie < ::Rails::Railtie
10
+ config.ember = ActiveSupport::OrderedOptions.new
11
+
12
+ generators do |app|
13
+ app ||= ::Rails.application # Rails 3.0.x does not yield `app`
14
+
15
+ app.config.generators.assets = false
16
+
17
+ ::Rails::Generators.configure!(app.config.generators)
18
+ ::Rails::Generators.hidden_namespaces.uniq!
19
+ require "generators/hanber/resource_override"
20
+ end
21
+
22
+ initializer "ember_rails.setup_vendor", :after => "ember_rails.setup", :group => :all do |app|
23
+ if variant = app.config.ember.variant
24
+ # Add the gem's vendored ember to the end of the asset search path
25
+ ember_path = File.expand_path("../../vendor/ember/#{variant}", __FILE__)
26
+ app.config.assets.paths.push(ember_path.to_s)
27
+
28
+ # Allow a local variant override
29
+ ember_path = app.root.join("vendor/assets/ember/#{variant}")
30
+ app.config.assets.paths.unshift(ember_path.to_s) if ember_path.exist?
31
+ else
32
+ warn "No ember.js variant was specified in your config environment."
33
+ warn "You can set a specific variant in your application config in "
34
+ warn "order for sprockets to locate ember's assets:"
35
+ warn ""
36
+ warn " config.ember.variant = :development"
37
+ warn ""
38
+ warn "Valid values are :development and :production"
39
+ end
40
+ end
41
+
42
+ initializer "ember_rails.find_ember", :after => "ember_rails.setup_vendor", :group => :all do |app|
43
+ config.ember.ember_location ||= location_for(app, "ember.js")
44
+ config.ember.handlebars_location ||= location_for(app, "handlebars.js")
45
+ end
46
+
47
+ initializer "ember_rails.es5_default", :group => :all do |app|
48
+ if defined?(Closure::Compiler) && app.config.assets.js_compressor == :closure
49
+ Closure::Compiler::DEFAULT_OPTIONS[:language_in] = 'ECMASCRIPT5'
50
+ end
51
+ end
52
+
53
+ def location_for(app, file)
54
+ path = app.config.assets.paths.find do |dir|
55
+ Pathname.new(dir).join(file).exist?
56
+ end
57
+
58
+ File.join(path, file) if path
59
+ end
60
+ end
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hanber-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - logical42
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: execjs
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - !ruby/object:Gem::Dependency
31
+ name: railties
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '3.1'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '3.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: active_model_serializers
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: barber
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: bundler
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 1.2.2
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.2.2
94
+ - !ruby/object:Gem::Dependency
95
+ name: appraisal
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: tzinfo
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: ! ' hacked version of ember-rails '
127
+ email:
128
+ - han@thirstlabs.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .DS_Store
134
+ - .gitignore
135
+ - Appraisals
136
+ - Gemfile
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - hanber-rails.gemspec
141
+ - lib/.DS_Store
142
+ - lib/generators/.DS_Store
143
+ - lib/generators/hanber/.DS_Store
144
+ - lib/generators/hanber/bootstrap_generator.rb
145
+ - lib/generators/hanber/controller_generator.rb
146
+ - lib/generators/hanber/generator_helpers.rb
147
+ - lib/generators/hanber/install_generator.rb
148
+ - lib/generators/hanber/model_generator.rb
149
+ - lib/generators/hanber/resource_override.rb
150
+ - lib/generators/hanber/route_handler_generator.rb
151
+ - lib/generators/hanber/scaffold_generator.rb
152
+ - lib/generators/hanber/view_generator.rb
153
+ - lib/generators/templates/app.js
154
+ - lib/generators/templates/application.handlebars
155
+ - lib/generators/templates/array_controller.js
156
+ - lib/generators/templates/controller.js
157
+ - lib/generators/templates/model.js
158
+ - lib/generators/templates/object_controller.js
159
+ - lib/generators/templates/route_handler.js
160
+ - lib/generators/templates/router.js
161
+ - lib/generators/templates/scaffolded_route.js
162
+ - lib/generators/templates/store.js
163
+ - lib/generators/templates/view.handlebars
164
+ - lib/generators/templates/view.js
165
+ - lib/hanber-rails.rb
166
+ - lib/hanber/.DS_Store
167
+ - lib/hanber/handlebars/template.rb
168
+ - lib/hanber/handlebars/version.rb
169
+ - lib/hanber/rails/engine.rb
170
+ - lib/hanber/rails/version.rb
171
+ - lib/hanber/version.rb
172
+ - lib/hanber_rails.rb
173
+ homepage: ''
174
+ licenses: []
175
+ post_install_message:
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ! '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ! '>='
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ requirements: []
192
+ rubyforge_project:
193
+ rubygems_version: 1.8.24
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: customized version of ember-rails for me, han
197
+ test_files: []