app_drone 0.8.6 → 0.9.1
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.
- 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) %>"
|