Class: BackbarsGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/backbars/backbars_generator.rb

Instance Method Summary collapse

Instance Method Details

#generate_foldersObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/generators/backbars/backbars_generator.rb', line 3

def generate_folders
  # Creates folders to store Backbone related files
  empty_directory 'app/assets/javascripts/backbone/routers'
  empty_directory 'app/assets/javascripts/backbone/models'
  empty_directory 'app/assets/javascripts/backbone/collections'
  empty_directory 'app/assets/javascripts/backbone/views'

  # Creates a folder for Handlebars Template files
  empty_directory 'app/assets/javascripts/templates'

  # Adds a .keep file to prevent git from ignoring empty directories
  create_file 'app/assets/javascripts/backbone/routers/.keep'
  create_file 'app/assets/javascripts/backbone/models/.keep'
  create_file 'app/assets/javascripts/backbone/collections/.keep'
  create_file 'app/assets/javascripts/backbone/views/.keep'
  create_file 'app/assets/javascripts/templates/.keep'
end

#get_javascript_librariesObject



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generators/backbars/backbars_generator.rb', line 46

def get_javascript_libraries
  # Adds rails-assets library dependencies
  gem 'rails-assets-underscore', source: 'https://rails-assets.org'
  gem 'rails-assets-backbone', source: 'https://rails-assets.org'

  # Will run bundle install after adding new gems
  Bundler.with_clean_env do
    output = `bundle install`
    print output unless options[:quiet]
  end
end

#include_dependenciesObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/generators/backbars/backbars_generator.rb', line 21

def include_dependencies

  # Inserts require statements into application.js file
  insert_into_file(
    'app/assets/javascripts/application.js',
    [
      "//= require underscore",
      "//= require backbone",
      "//= require handlebars",
      "//= require_self",
      "//= require_tree ./backbone/routers",
      "//= require_tree ./backbone/models",
      "//= require_tree ./backbone/collections",
      "//= require_tree ./backbone/views",
      "//= require_tree ./templates\n"
    ].join("\n"),
    after: "//= require turbolinks\n")

  # Inserts App object structure
  insert_into_file(
    'app/assets/javascripts/application.js',
    "var App = {\n\tModels: {}, \n\tCollections: {}, \n\tViews: {}, \n\tRouters: {}\n};",
    after: "//= require_tree .\n")
end