app_drone 0.8.6 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +54 -39
- data/lib/app_drone/dependency_chain.rb +8 -1
- data/lib/app_drone/drone.rb +9 -0
- data/lib/app_drone/drones/carrierwave/carrierwave.rb +20 -0
- data/lib/app_drone/drones/chronic/chronic.rb +13 -0
- data/lib/app_drone/drones/{easy_roles_45/easy_roles_45.rb~ → easy_rolez/easy_rolez.rb} +1 -1
- data/lib/app_drone/drones/factory_girl/factory_girl.rb +13 -0
- data/lib/app_drone/drones/has_scope/has_scope.rb +13 -0
- data/lib/app_drone/drones/nested_form/nested_form.rb +14 -0
- data/lib/app_drone/drones/new_relic/new_relic.rb +13 -0
- data/lib/app_drone/drones/nifty_generatorz/nifty_config.erb +1 -0
- data/lib/app_drone/drones/nifty_generatorz/nifty_generatorz.rb +19 -0
- data/lib/app_drone/drones/remotipart/remotipart.rb +14 -0
- data/lib/app_drone/drones/responderz/install.erb +1 -0
- data/lib/app_drone/drones/responderz/responderz.rb +17 -0
- data/lib/app_drone/drones/rspec/install.erb +1 -0
- data/lib/app_drone/drones/rspec/rspec.rb +17 -0
- data/lib/app_drone/drones/simple_cov/install.erb +5 -0
- data/lib/app_drone/drones/simple_cov/rspec_integration.erb +1 -0
- data/lib/app_drone/drones/simple_cov/simple_cov.rb +20 -0
- data/lib/app_drone/drones/timecop/timecop.rb +13 -0
- data/lib/app_drone/drones/will_paginate/will_paginate.rb +15 -0
- data/lib/app_drone/template.erb +14 -0
- data/lib/app_drone/template.rb +13 -4
- data/lib/app_drone/version.rb +1 -1
- data/out.rb +28 -3
- data/scraps/App admin +7 -0
- data/scraps/TODO +32 -0
- data/scraps/blank drone +15 -0
- data/test/test_app_drone.rb +8 -1
- metadata +26 -79
- data/Gemfile~ +0 -4
- data/README.md~ +0 -342
- data/Rakefile~ +0 -11
- data/TODO~ +0 -1
- data/app_drone.gemspec~ +0 -20
- data/lib/app_drone/dependency.rb~ +0 -5
- data/lib/app_drone/dependency_chain.rb~ +0 -55
- data/lib/app_drone/drone.rb~ +0 -121
- data/lib/app_drone/drones/bootstrap/bootstrap.rb~ +0 -46
- data/lib/app_drone/drones/bootstrap/flair.html.slim.erb~ +0 -7
- data/lib/app_drone/drones/bundle/bundle.rb~ +0 -22
- data/lib/app_drone/drones/bundle/gem.rb~ +0 -23
- data/lib/app_drone/drones/bundle/gem_entries.erb~ +0 -6
- data/lib/app_drone/drones/bundle/gems.rb~ +0 -23
- data/lib/app_drone/drones/cancan/ability.erb~ +0 -1
- data/lib/app_drone/drones/cancan/cancan.rb~ +0 -19
- data/lib/app_drone/drones/chosen/chosen.rb~ +0 -16
- data/lib/app_drone/drones/chosen/showcase.html.slim~ +0 -0
- data/lib/app_drone/drones/cleanup/cleanup.rb~ +0 -9
- data/lib/app_drone/drones/easy_roles_45/easy_roles.rb~ +0 -13
- data/lib/app_drone/drones/easy_roles_45/easy_roles_45.rb +0 -13
- data/lib/app_drone/drones/easy_roles_45/easy_rolez.rb~ +0 -13
- data/lib/app_drone/drones/ember/ember.rb~ +0 -21
- data/lib/app_drone/drones/ember/ember_js.rb~ +0 -21
- data/lib/app_drone/drones/ember/install.erb~ +0 -3
- data/lib/app_drone/drones/flair/flair.rb~ +0 -39
- data/lib/app_drone/drones/flair/flair_page.erb~ +0 -8
- data/lib/app_drone/drones/flair/showcase.rb~ +0 -27
- data/lib/app_drone/drones/flair/showcase_page.erb~ +0 -11
- data/lib/app_drone/drones/gritter/flair.html.slim.erb~ +0 -8
- data/lib/app_drone/drones/gritter/gritter.rb~ +0 -21
- data/lib/app_drone/drones/gritter/install.erb~ +0 -1
- data/lib/app_drone/drones/high_voltage/create_pages_directory.erb~ +0 -1
- data/lib/app_drone/drones/high_voltage/high_voltage.rb~ +0 -15
- data/lib/app_drone/drones/javascript/application_coffee.erb~ +0 -15
- data/lib/app_drone/drones/javascript/javascript.rb~ +0 -26
- data/lib/app_drone/drones/javascript/javascripts.rb~ +0 -23
- data/lib/app_drone/drones/letter_opener/development_delivery_method.erb~ +0 -1
- data/lib/app_drone/drones/letter_opener/development_delivery_method.rb~ +0 -1
- data/lib/app_drone/drones/letter_opener/letter_opener.rb~ +0 -17
- data/lib/app_drone/drones/migrant/migrant.rb~ +0 -13
- data/lib/app_drone/drones/ranked_model/ranked_model.rb~ +0 -13
- data/lib/app_drone/drones/simple_form/install.erb~ +0 -1
- data/lib/app_drone/drones/simple_form/simple_form.rb~ +0 -21
- data/lib/app_drone/drones/slim_view/application_slim.erb~ +0 -15
- data/lib/app_drone/drones/slim_view/slim_view.rb~ +0 -16
- data/lib/app_drone/drones/slim_view/slim_views.rb~ +0 -14
- data/lib/app_drone/drones/sorcery/configure.erb~ +0 -1
- data/lib/app_drone/drones/sorcery/sorcery.rb~ +0 -18
- data/lib/app_drone/drones/squeel/initializer.erb~ +0 -1
- data/lib/app_drone/drones/squeel/squeel.rb~ +0 -19
- data/lib/app_drone/drones/stylesheet/application_sass.erb~ +0 -11
- data/lib/app_drone/drones/stylesheet/stylesheet.rb~ +0 -26
- data/lib/app_drone/drones/stylesheet/stylesheets.rb~ +0 -30
- data/lib/app_drone/drones/underscore/flair.html.slim.erb~ +0 -25
- data/lib/app_drone/drones/underscore/underscore.rb~ +0 -18
- data/lib/app_drone/drones/zzz/factory_girl/factory_girl.rb +0 -13
- data/lib/app_drone/drones/zzz/factory_girl/factory_girl.rb~ +0 -13
- data/lib/app_drone/drones/zzz/git/git.rb~ +0 -8
- data/lib/app_drone/drones/zzz/guard/guard.rb~ +0 -15
- data/lib/app_drone/drones/zzz/ranked_model/ranked_model.rb +0 -9
- data/lib/app_drone/drones/zzz/ranked_model/ranked_model.rb~ +0 -9
- data/lib/app_drone/drones/zzz/rspec/rspec.rb~ +0 -13
- data/lib/app_drone/integration.rb~ +0 -48
- data/lib/app_drone/object_extensions.rb~ +0 -17
- data/lib/app_drone/template.erb~ +0 -33
- data/lib/app_drone/template.rb~ +0 -54
- data/lib/app_drone/version.rb~ +0 -3
- data/lib/app_drone.rb~ +0 -16
- data/out.rb~ +0 -161
- data/test/app_drone_test.rb~ +0 -19
- data/test/test_app_drone.rb~ +0 -74
data/lib/app_drone/drone.rb~
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
|
3
|
-
Param = Struct.new('Param',:name,:type,:options)
|
4
|
-
|
5
|
-
class Drone
|
6
|
-
# align: set up variables, pass off to other scripts
|
7
|
-
# execute: actual install process
|
8
|
-
|
9
|
-
# New
|
10
|
-
def initialize(template,*params)
|
11
|
-
@template = template
|
12
|
-
@params = (params.first || {}).merge({options: {}})
|
13
|
-
setup
|
14
|
-
end
|
15
|
-
|
16
|
-
def param(sym)
|
17
|
-
param_value = @params[sym]
|
18
|
-
default_value = self.class.param_named(sym).options[:default]
|
19
|
-
return param_value || default_value
|
20
|
-
end
|
21
|
-
|
22
|
-
# DSL
|
23
|
-
def ^; @template end # This is never used, not even sure if it works (something about a misplaced '.' error)
|
24
|
-
def >>(klass); @template.hook(klass); end
|
25
|
-
|
26
|
-
def method_missing(meth, *args, &block)
|
27
|
-
if Drone.drones.include?(meth)
|
28
|
-
klass = meth.to_app_drone_class
|
29
|
-
return (self >> klass)
|
30
|
-
else
|
31
|
-
super
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def pair?(drone_symbol)
|
36
|
-
drone_klass = ('AppDrone::' + drone_symbol.to_s.classify).constantize
|
37
|
-
return @template.hook?(drone_klass)
|
38
|
-
end
|
39
|
-
|
40
|
-
# Expected implementations
|
41
|
-
def align; end
|
42
|
-
def execute; end
|
43
|
-
|
44
|
-
# Optional implementations
|
45
|
-
def setup; end
|
46
|
-
|
47
|
-
def render(partial, opts={})
|
48
|
-
class_name = self.class.to_s.split('::').last.underscore
|
49
|
-
template_path = "/drones/#{class_name}/#{partial}.erb"
|
50
|
-
full_path = File.dirname(__FILE__) + template_path
|
51
|
-
snippet = ERB.new File.read(full_path)
|
52
|
-
output = snippet.result(binding)
|
53
|
-
output = "# --- \n# #{self.class.to_s}\n# ---\n" + output unless opts[:skip_stamp]
|
54
|
-
return output
|
55
|
-
end
|
56
|
-
|
57
|
-
def do!(partial)
|
58
|
-
@template.do! render(partial), self
|
59
|
-
end
|
60
|
-
|
61
|
-
# DSL: Integration-specific options
|
62
|
-
attr_accessor :params
|
63
|
-
class << self
|
64
|
-
def param_with(drone_klass, name, type, *options)
|
65
|
-
param(name,type,options.first.merge({ with: drone_klass }))
|
66
|
-
end
|
67
|
-
|
68
|
-
def param(name, type, *options)
|
69
|
-
(@params ||= []) << Param.new(name, type, options.first)
|
70
|
-
end
|
71
|
-
def params; @params || [] end
|
72
|
-
def param_named(n); params.find { |p| p.name == n } end
|
73
|
-
|
74
|
-
def desc(d=nil)
|
75
|
-
return @description if d.nil?
|
76
|
-
@description = d
|
77
|
-
end
|
78
|
-
|
79
|
-
def category(c=nil)
|
80
|
-
return @category if c.nil?
|
81
|
-
@category = c
|
82
|
-
end
|
83
|
-
|
84
|
-
def depends_on(*klass_symbols); @dependencies = klass_symbols end
|
85
|
-
def dependencies
|
86
|
-
(@dependencies || []).map(&:to_app_drone_class)
|
87
|
-
end
|
88
|
-
|
89
|
-
def dependants
|
90
|
-
self.superclass.drones.select { |d| d.to_app_drone_class.dependencies.include?(self) }.map(&:to_app_drone_class)
|
91
|
-
end
|
92
|
-
|
93
|
-
def pairs_with(*klass_symbols); @pairs = klass_symbols end
|
94
|
-
def pairs
|
95
|
-
(@pairs || []).map(&:to_app_drone_class)
|
96
|
-
end
|
97
|
-
|
98
|
-
def owns_generator_method(m); @generator_method = m end
|
99
|
-
def generator_method; @generator_method end
|
100
|
-
|
101
|
-
def drones
|
102
|
-
self.descendants.map(&:to_sym)
|
103
|
-
end
|
104
|
-
|
105
|
-
def categories
|
106
|
-
self.descendants.map(&:category).uniq
|
107
|
-
end
|
108
|
-
|
109
|
-
def to_sym
|
110
|
-
self.to_s.split('::').last.underscore.to_sym
|
111
|
-
end
|
112
|
-
|
113
|
-
def human_name
|
114
|
-
self.to_sym.to_s.humanize.titleize
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class Bootstrap < Drone
|
4
|
-
desc "Installs Twitter Bootstrap stylesheets and javascripts"
|
5
|
-
category :ui
|
6
|
-
|
7
|
-
#param :vendor, :boolean, info: 'place a local copy of the files into the repo for customization'
|
8
|
-
|
9
|
-
param :responsive, :boolean, info: 'include responsive grid'
|
10
|
-
param :font_awesome, :boolean, info: 'use font-awesome for icons', default: true
|
11
|
-
param :javascript_plugins, :choose_many, info: 'pipeline javascript plugin files', default: [], choices: %w(modal dropdown scrollspy tab tooltip popover alert button collapse carousel typeahead)
|
12
|
-
|
13
|
-
depends_on :bundle, :stylesheet, :javascript
|
14
|
-
pairs_with :flair
|
15
|
-
|
16
|
-
def align
|
17
|
-
bundle.add 'compass_twitter_bootstrap', git: 'git://github.com/vwall/compass-twitter-bootstrap.git', group: :assets
|
18
|
-
false ? align_vendor : align_bundle
|
19
|
-
flair!
|
20
|
-
end
|
21
|
-
|
22
|
-
def execute
|
23
|
-
false ? execute_vendor : execute_bundle
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
def align_vendor
|
28
|
-
# TODO import paths for stylesheet (different to bundle)
|
29
|
-
param(:javascript_plugins).each { |p| javascript.pipeline "bootstrap-#{p}" }
|
30
|
-
end
|
31
|
-
|
32
|
-
def align_bundle
|
33
|
-
stylesheet.import param(:font_awesome) ? 'compass_twitter_bootstrap_awesome' : 'compass_twitter_bootstrap'
|
34
|
-
stylesheet.import 'compass_twitter_bootstrap_responsive' if param(:responsive)
|
35
|
-
param(:javascript_plugins).each { |p| javascript.pipeline "bootstrap-#{p}" }
|
36
|
-
end
|
37
|
-
|
38
|
-
def execute_vendor
|
39
|
-
# TODO pull files from git
|
40
|
-
end
|
41
|
-
|
42
|
-
def execute_bundle
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Bundle < Drone
|
3
|
-
desc "Manages gem installations"
|
4
|
-
owns_generator_method :gemfile
|
5
|
-
|
6
|
-
attr_accessor :gems
|
7
|
-
@@gem = Struct.new('Gem', :name, :opts)
|
8
|
-
|
9
|
-
def setup
|
10
|
-
self.gems = []
|
11
|
-
end
|
12
|
-
|
13
|
-
def add(g,*opts)
|
14
|
-
self.gems << @@gem.new(g,*opts)
|
15
|
-
end
|
16
|
-
|
17
|
-
def execute
|
18
|
-
do! :gem_entries
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# Complete!
|
2
|
-
module AppDrone
|
3
|
-
class Gems < Drone
|
4
|
-
desc "Manages gem installations"
|
5
|
-
owns_generator_method :gemfile
|
6
|
-
|
7
|
-
attr_accessor :gems
|
8
|
-
@@gem = Struct.new('Gem', :name, :opts)
|
9
|
-
|
10
|
-
def setup
|
11
|
-
self.gems = []
|
12
|
-
end
|
13
|
-
|
14
|
-
def add(g,*opts)
|
15
|
-
self.gems << @@gem.new(g,*opts)
|
16
|
-
end
|
17
|
-
|
18
|
-
def execute
|
19
|
-
do! :gem_entries
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# Complete!
|
2
|
-
module AppDrone
|
3
|
-
class Gems < Drone
|
4
|
-
desc "Manages gem installations"
|
5
|
-
owns_generator_method :gemfile
|
6
|
-
|
7
|
-
attr_accessor :gems
|
8
|
-
@@gem = Struct.new('Gem', :name, :opts)
|
9
|
-
|
10
|
-
def setup
|
11
|
-
self.gems = []
|
12
|
-
end
|
13
|
-
|
14
|
-
def add(g,*opts)
|
15
|
-
self.gems << @@gem.new(g,*opts)
|
16
|
-
end
|
17
|
-
|
18
|
-
def execute
|
19
|
-
do! :gem_entries
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
generate 'cancan:ability'
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Cancan < Drone
|
3
|
-
desc "Role-based authorization"
|
4
|
-
category :auth
|
5
|
-
|
6
|
-
depends_on :bundle
|
7
|
-
|
8
|
-
param :generate_abilities, :boolen, info: 'build the Ability.rb file'
|
9
|
-
|
10
|
-
def align
|
11
|
-
bundle.add 'cancan'
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute
|
15
|
-
do! :ability if param(:generate_abilities)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Chosen < Drone
|
3
|
-
desc 'Installs the Chosen plugin by HarvestHQ'
|
4
|
-
category :ui
|
5
|
-
depends_on :bundle, :stylesheet, :javascript
|
6
|
-
pairs_with :flair
|
7
|
-
|
8
|
-
def align
|
9
|
-
bundle.add 'chosen-rails'
|
10
|
-
stylesheet.pipeline 'chosen'
|
11
|
-
javascript.pipeline 'chosen-jquery'
|
12
|
-
javascript.on_ready "$('.chzn-select').chosen();"
|
13
|
-
flair!
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
File without changes
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Ember < Drone
|
3
|
-
desc 'Installs ember.js for Rails'
|
4
|
-
category :ux
|
5
|
-
depends_on :bundle, :javascript
|
6
|
-
param :app_skeleton, :boolean, info: 'build an Ember app skeleton'
|
7
|
-
|
8
|
-
def align
|
9
|
-
bundle.add 'ember-rails'
|
10
|
-
javascript.pipeline 'ember'
|
11
|
-
if param(:app_skeleton)
|
12
|
-
javascript.pipeline 'ember/#{app_name}.js'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute
|
17
|
-
do! :install
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class EmberJs < Drone
|
3
|
-
desc 'Installs ember.js for Rails'
|
4
|
-
depends_on :bundle, :javascript
|
5
|
-
|
6
|
-
param :app_skeleton, :boolean, info: 'build an Ember app skeleton'
|
7
|
-
|
8
|
-
def align
|
9
|
-
bundle.add 'ember-rails'
|
10
|
-
javascript.pipeline 'ember'
|
11
|
-
if param(:app_skeleton)
|
12
|
-
javascript.pipeline 'ember/\#{app_name}.js'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute
|
17
|
-
do! :install
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Flair < Drone
|
3
|
-
desc "Creates a page to demonstrate the drones' hard work"
|
4
|
-
depends_on :high_voltage, :slim_view
|
5
|
-
category :base
|
6
|
-
|
7
|
-
attr_accessor :flairs
|
8
|
-
|
9
|
-
def setup
|
10
|
-
self.flairs = []
|
11
|
-
end
|
12
|
-
|
13
|
-
def add(klass)
|
14
|
-
flairs << klass.class.to_sym
|
15
|
-
end
|
16
|
-
|
17
|
-
def execute
|
18
|
-
do! :flair_page
|
19
|
-
end
|
20
|
-
|
21
|
-
def flair_for(drone_name)
|
22
|
-
drone = send(drone_name)
|
23
|
-
return drone.render 'flair.html.slim', skip_stamp: true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
# extend drones so they can call `flair!` rather than the verbose method
|
29
|
-
# this pattern is useful for drones that take a single boolean parameter
|
30
|
-
# e.g.
|
31
|
-
# flair: do / don't flair, as opposed to
|
32
|
-
# bootstrap: vendor, responsive, font_awesome...
|
33
|
-
class Drone
|
34
|
-
def flair!
|
35
|
-
flair.add(self) if pair?(:flair)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Showcase < Drone
|
3
|
-
desc "Creates a page to demonstrate the drones' hard work"
|
4
|
-
depends_on :high_voltage, :slim_view
|
5
|
-
|
6
|
-
attr_accessor :flairs
|
7
|
-
|
8
|
-
def setup
|
9
|
-
self.flairs = []
|
10
|
-
end
|
11
|
-
|
12
|
-
def me!(klass)
|
13
|
-
flairs << klass.class.to_s.gsub('AppDrone::','').underscore
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute
|
17
|
-
do! :flair_page
|
18
|
-
end
|
19
|
-
|
20
|
-
def flair_for(drone_name)
|
21
|
-
flair_path = File.join File.dirname(__FILE__), '..', drone_name, 'flair.html.slim'
|
22
|
-
snippet = ERB.new File.read(flair_path)
|
23
|
-
return snippet.result(binding)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Gritter < Drone
|
3
|
-
desc "Growl-like notifications for jQuery"
|
4
|
-
category :ui
|
5
|
-
|
6
|
-
depends_on :bundle, :stylesheet, :javascript
|
7
|
-
pairs_with :flair
|
8
|
-
|
9
|
-
def align
|
10
|
-
bundle.add 'gritter'
|
11
|
-
stylesheet.import 'gritter'
|
12
|
-
javascript.pipeline 'gritter'
|
13
|
-
flair!
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute
|
17
|
-
do! :install
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
generate "gritter:locale"
|
@@ -1 +0,0 @@
|
|
1
|
-
@generator.directory 'app/views/pages'
|
@@ -1,15 +0,0 @@
|
|
1
|
-
js_asset_path = File.join %w(app assets javascripts application.js)
|
2
|
-
@generator.remove_file(js_asset_path)
|
3
|
-
@coffee_asset_path = File.join %w(app assets javascripts application.js.coffee)
|
4
|
-
@generator.create_file @coffee_asset_path, <<-COFFEE
|
5
|
-
<% pipeline_requires.each { |r| %>//= require <%= r %>
|
6
|
-
<% } %>
|
7
|
-
COFFEE
|
8
|
-
|
9
|
-
@coffee_init_path = File.join %w(app assets javascripts init.js.coffee)
|
10
|
-
@generator.create_file @coffee_init_path, <<-COFFEE
|
11
|
-
$(document).ready ->
|
12
|
-
<% on_readies.each { |r| %><%= r %>
|
13
|
-
<% } %>
|
14
|
-
|
15
|
-
COFFEE
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class Javascript < Drone
|
3
|
-
desc "Generates application.js.coffee with manifest options and jQuery load hooks"
|
4
|
-
category :base
|
5
|
-
attr_accessor :pipeline_requires, :on_readies
|
6
|
-
|
7
|
-
depends_on :bundle # not really, but makes for good ordering in DependencyChain
|
8
|
-
|
9
|
-
def setup
|
10
|
-
self.pipeline_requires = []
|
11
|
-
self.on_readies = []
|
12
|
-
|
13
|
-
self.pipeline 'jquery'
|
14
|
-
self.pipeline 'jquery_ujs'
|
15
|
-
self.pipeline 'init'
|
16
|
-
end
|
17
|
-
|
18
|
-
def pipeline(r); self.pipeline_requires << r end
|
19
|
-
def on_ready(r); self.on_readies << r end
|
20
|
-
|
21
|
-
def execute
|
22
|
-
do! :application_coffee
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# Incomplete
|
2
|
-
module AppDrone
|
3
|
-
class Javascripts < Drone
|
4
|
-
desc "Generates application.js.coffee with manifest and jQuery load hooks"
|
5
|
-
attr_accessor :requires, :onreadies
|
6
|
-
|
7
|
-
def setup
|
8
|
-
self.requires = []
|
9
|
-
self.onreadies = []
|
10
|
-
self.add_require 'jquery'
|
11
|
-
self.add_require 'jquery_ujs'
|
12
|
-
self.add_require 'jquery-ui' # TODO if ui, otherwise vendor
|
13
|
-
end
|
14
|
-
|
15
|
-
def add_require(r); self.requires << r end
|
16
|
-
def add_onready(r); self.onreadies << r end
|
17
|
-
|
18
|
-
def execute
|
19
|
-
do! :application_coffee
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
@generator.inject_into_file 'config/environments/development.rb', "\n config.action_mailer.delivery_method = :letter_opener", before: "\nend"
|
@@ -1 +0,0 @@
|
|
1
|
-
puts 'ok'
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module AppDrone
|
2
|
-
class LetterOpener < Drone
|
3
|
-
desc "Preview mail in the browser instead of sending"
|
4
|
-
category :dev
|
5
|
-
|
6
|
-
depends_on :bundle
|
7
|
-
|
8
|
-
def align
|
9
|
-
bundle.add 'letter_opener', group: :development
|
10
|
-
end
|
11
|
-
|
12
|
-
def execute
|
13
|
-
do! :development_delivery_method
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
generate "simple_form:install<%= ' --bootstrap' if pair?(:bootstrap) %>"
|