Class: Marionette::Generators::AppGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/marionette/app/app_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_app_to_index_viewObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/generators/marionette/app/app_generator.rb', line 38

def add_app_to_index_view
  gem 'slim-rails'
  bundle_install
  if File.exist? "config/routes.rb"
    routes = File.read "config/routes.rb"
    home = routes.match(/root to: ['"]{1}([a-z_]+)\#index['"]{1}/).try :captures
    home = home.first
  else
    home = "home"
  end
  File.delete "app/views/#{home}/index.html.erb" if File.exist? "app/views/#{home}/index.html.erb"
  File.delete "app/views/#{home}/index.html.haml" if File.exist? "app/views/#{home}/index.html.haml"
  template "app/index.html.slim", "app/views/#{home}/index.html.slim"
end

#add_backbone_via_bowerObject



15
16
17
18
19
20
21
22
# File 'lib/generators/marionette/app/app_generator.rb', line 15

def add_backbone_via_bower
  gem 'bower-rails'
  bundle_install
  generate "bower_rails:initialize"
  append_to_file "Bowerfile", bower_data, after: "for more options\n"
  rake 'bower:install'
  rake 'bower:clean'
end

#create_directory_structureObject



8
9
10
11
12
13
# File 'lib/generators/marionette/app/app_generator.rb', line 8

def create_directory_structure
  %w(models collections routers utils views).each do |folder|
    empty_directory "app/assets/javascripts/backbone/#{folder}"
  end
  empty_directory "app/assets/templates"
end

#create_filesObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/marionette/app/app_generator.rb', line 24

def create_files
  gem 'skim'
  bundle_install
  backbone = "app/assets/javascripts/backbone"
  template "app/app.js.coffee", "#{backbone}/#{file_name}.js.coffee"
  template "app/layout.jst.skim", "app/assets/templates/layouts/layout.jst.skim"
  template "app/logger.js.coffee", "#{backbone}/utils/logger.js.coffee"
  template "app/defaults.js.coffee", "#{backbone}/utils/defaults.js.coffee"
  template "app/config.js.coffee", "#{backbone}/config.js.coffee"
  template "app/layout.js.coffee", "#{backbone}/views/layouts/layout.js.coffee"
  template "app/app_router.js.coffee", "#{backbone}/routers/app_router.js.coffee"
  template "app/application.html.slim", "app/views/layouts/application.html.slim"
end

#include_jsObject



53
54
55
56
# File 'lib/generators/marionette/app/app_generator.rb', line 53

def include_js
  gsub_file "app/assets/javascripts/application.js", "//= require_tree .", app_js_data
  inject_into_file "app/assets/javascripts/application.js", "//= require backbone/#{name.downcase}\n", after: "require marionette/lib/core/backbone.marionette\n"
end