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
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: app_drone
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-05-
|
|
12
|
+
date: 2012-05-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &20522280 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,7 +21,7 @@ dependencies:
|
|
|
21
21
|
version: 3.2.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *20522280
|
|
25
25
|
description: Give your Rails apps a kickstart
|
|
26
26
|
email:
|
|
27
27
|
- whoisdanieldavey@gmail.com
|
|
@@ -31,135 +31,84 @@ extra_rdoc_files: []
|
|
|
31
31
|
files:
|
|
32
32
|
- .gitignore
|
|
33
33
|
- Gemfile
|
|
34
|
-
- Gemfile~
|
|
35
34
|
- LICENSE
|
|
36
35
|
- README.md
|
|
37
|
-
- README.md~
|
|
38
36
|
- Rakefile
|
|
39
|
-
- Rakefile~
|
|
40
37
|
- TODO
|
|
41
|
-
- TODO~
|
|
42
38
|
- app_drone.gemspec
|
|
43
|
-
- app_drone.gemspec~
|
|
44
39
|
- lib/app_drone.rb
|
|
45
|
-
- lib/app_drone.rb~
|
|
46
|
-
- lib/app_drone/dependency.rb~
|
|
47
40
|
- lib/app_drone/dependency_chain.rb
|
|
48
|
-
- lib/app_drone/dependency_chain.rb~
|
|
49
41
|
- lib/app_drone/drone.rb
|
|
50
|
-
- lib/app_drone/drone.rb~
|
|
51
42
|
- lib/app_drone/drones/bootstrap/bootstrap.rb
|
|
52
|
-
- lib/app_drone/drones/bootstrap/bootstrap.rb~
|
|
53
43
|
- lib/app_drone/drones/bootstrap/flair.html.slim.erb
|
|
54
|
-
- lib/app_drone/drones/bootstrap/flair.html.slim.erb~
|
|
55
44
|
- lib/app_drone/drones/bundle/bundle.rb
|
|
56
|
-
- lib/app_drone/drones/bundle/bundle.rb~
|
|
57
|
-
- lib/app_drone/drones/bundle/gem.rb~
|
|
58
45
|
- lib/app_drone/drones/bundle/gem_entries.erb
|
|
59
|
-
- lib/app_drone/drones/bundle/gem_entries.erb~
|
|
60
|
-
- lib/app_drone/drones/bundle/gems.rb~
|
|
61
46
|
- lib/app_drone/drones/cancan/ability.erb
|
|
62
|
-
- lib/app_drone/drones/cancan/ability.erb~
|
|
63
47
|
- lib/app_drone/drones/cancan/cancan.rb
|
|
64
|
-
- lib/app_drone/drones/
|
|
48
|
+
- lib/app_drone/drones/carrierwave/carrierwave.rb
|
|
65
49
|
- lib/app_drone/drones/chosen/chosen.rb
|
|
66
|
-
- lib/app_drone/drones/chosen/chosen.rb~
|
|
67
50
|
- lib/app_drone/drones/chosen/flair.html.slim.erb
|
|
68
|
-
- lib/app_drone/drones/
|
|
51
|
+
- lib/app_drone/drones/chronic/chronic.rb
|
|
69
52
|
- lib/app_drone/drones/cleanup/cleanup.erb
|
|
70
53
|
- lib/app_drone/drones/cleanup/cleanup.rb
|
|
71
|
-
- lib/app_drone/drones/
|
|
72
|
-
- lib/app_drone/drones/easy_roles_45/easy_roles.rb~
|
|
73
|
-
- lib/app_drone/drones/easy_roles_45/easy_roles_45.rb
|
|
74
|
-
- lib/app_drone/drones/easy_roles_45/easy_roles_45.rb~
|
|
75
|
-
- lib/app_drone/drones/easy_roles_45/easy_rolez.rb~
|
|
54
|
+
- lib/app_drone/drones/easy_rolez/easy_rolez.rb
|
|
76
55
|
- lib/app_drone/drones/ember/ember.rb
|
|
77
|
-
- lib/app_drone/drones/ember/ember.rb~
|
|
78
|
-
- lib/app_drone/drones/ember/ember_js.rb~
|
|
79
56
|
- lib/app_drone/drones/ember/install.erb
|
|
80
|
-
- lib/app_drone/drones/
|
|
57
|
+
- lib/app_drone/drones/factory_girl/factory_girl.rb
|
|
81
58
|
- lib/app_drone/drones/flair/flair.rb
|
|
82
|
-
- lib/app_drone/drones/flair/flair.rb~
|
|
83
59
|
- lib/app_drone/drones/flair/flair_page.erb
|
|
84
|
-
- lib/app_drone/drones/flair/flair_page.erb~
|
|
85
|
-
- lib/app_drone/drones/flair/showcase.rb~
|
|
86
|
-
- lib/app_drone/drones/flair/showcase_page.erb~
|
|
87
60
|
- lib/app_drone/drones/gritter/flair.html.slim.erb
|
|
88
|
-
- lib/app_drone/drones/gritter/flair.html.slim.erb~
|
|
89
61
|
- lib/app_drone/drones/gritter/gritter.rb
|
|
90
|
-
- lib/app_drone/drones/gritter/gritter.rb~
|
|
91
62
|
- lib/app_drone/drones/gritter/install.erb
|
|
92
|
-
- lib/app_drone/drones/
|
|
63
|
+
- lib/app_drone/drones/has_scope/has_scope.rb
|
|
93
64
|
- lib/app_drone/drones/high_voltage/create_pages_directory.erb
|
|
94
|
-
- lib/app_drone/drones/high_voltage/create_pages_directory.erb~
|
|
95
65
|
- lib/app_drone/drones/high_voltage/high_voltage.rb
|
|
96
|
-
- lib/app_drone/drones/high_voltage/high_voltage.rb~
|
|
97
66
|
- lib/app_drone/drones/javascript/application_coffee.erb
|
|
98
|
-
- lib/app_drone/drones/javascript/application_coffee.erb~
|
|
99
67
|
- lib/app_drone/drones/javascript/javascript.rb
|
|
100
|
-
- lib/app_drone/drones/javascript/javascript.rb~
|
|
101
|
-
- lib/app_drone/drones/javascript/javascripts.rb~
|
|
102
68
|
- lib/app_drone/drones/letter_opener/development_delivery_method.erb
|
|
103
|
-
- lib/app_drone/drones/letter_opener/development_delivery_method.erb~
|
|
104
|
-
- lib/app_drone/drones/letter_opener/development_delivery_method.rb~
|
|
105
69
|
- lib/app_drone/drones/letter_opener/letter_opener.rb
|
|
106
|
-
- lib/app_drone/drones/letter_opener/letter_opener.rb~
|
|
107
70
|
- lib/app_drone/drones/migrant/migrant.rb
|
|
108
|
-
- lib/app_drone/drones/
|
|
71
|
+
- lib/app_drone/drones/nested_form/nested_form.rb
|
|
72
|
+
- lib/app_drone/drones/new_relic/new_relic.rb
|
|
73
|
+
- lib/app_drone/drones/nifty_generatorz/nifty_config.erb
|
|
74
|
+
- lib/app_drone/drones/nifty_generatorz/nifty_generatorz.rb
|
|
109
75
|
- lib/app_drone/drones/ranked_model/ranked_model.rb
|
|
110
|
-
- lib/app_drone/drones/
|
|
76
|
+
- lib/app_drone/drones/remotipart/remotipart.rb
|
|
77
|
+
- lib/app_drone/drones/responderz/install.erb
|
|
78
|
+
- lib/app_drone/drones/responderz/responderz.rb
|
|
79
|
+
- lib/app_drone/drones/rspec/install.erb
|
|
80
|
+
- lib/app_drone/drones/rspec/rspec.rb
|
|
81
|
+
- lib/app_drone/drones/simple_cov/install.erb
|
|
82
|
+
- lib/app_drone/drones/simple_cov/rspec_integration.erb
|
|
83
|
+
- lib/app_drone/drones/simple_cov/simple_cov.rb
|
|
111
84
|
- lib/app_drone/drones/simple_form/install.erb
|
|
112
|
-
- lib/app_drone/drones/simple_form/install.erb~
|
|
113
85
|
- lib/app_drone/drones/simple_form/simple_form.rb
|
|
114
|
-
- lib/app_drone/drones/simple_form/simple_form.rb~
|
|
115
86
|
- lib/app_drone/drones/slim_view/application_slim.erb
|
|
116
|
-
- lib/app_drone/drones/slim_view/application_slim.erb~
|
|
117
87
|
- lib/app_drone/drones/slim_view/slim_view.rb
|
|
118
|
-
- lib/app_drone/drones/slim_view/slim_view.rb~
|
|
119
|
-
- lib/app_drone/drones/slim_view/slim_views.rb~
|
|
120
88
|
- lib/app_drone/drones/sorcery/configure.erb
|
|
121
|
-
- lib/app_drone/drones/sorcery/configure.erb~
|
|
122
89
|
- lib/app_drone/drones/sorcery/sorcery.rb
|
|
123
|
-
- lib/app_drone/drones/sorcery/sorcery.rb~
|
|
124
90
|
- lib/app_drone/drones/squeel/initializer.erb
|
|
125
|
-
- lib/app_drone/drones/squeel/initializer.erb~
|
|
126
91
|
- lib/app_drone/drones/squeel/squeel.rb
|
|
127
|
-
- lib/app_drone/drones/squeel/squeel.rb~
|
|
128
92
|
- lib/app_drone/drones/stylesheet/application_sass.erb
|
|
129
|
-
- lib/app_drone/drones/stylesheet/application_sass.erb~
|
|
130
93
|
- lib/app_drone/drones/stylesheet/stylesheet.rb
|
|
131
|
-
- lib/app_drone/drones/
|
|
132
|
-
- lib/app_drone/drones/stylesheet/stylesheets.rb~
|
|
94
|
+
- lib/app_drone/drones/timecop/timecop.rb
|
|
133
95
|
- lib/app_drone/drones/underscore/flair.html.slim.erb
|
|
134
|
-
- lib/app_drone/drones/underscore/flair.html.slim.erb~
|
|
135
96
|
- lib/app_drone/drones/underscore/underscore.rb
|
|
136
|
-
- lib/app_drone/drones/
|
|
137
|
-
- lib/app_drone/drones/zzz/factory_girl/factory_girl.rb
|
|
138
|
-
- lib/app_drone/drones/zzz/factory_girl/factory_girl.rb~
|
|
97
|
+
- lib/app_drone/drones/will_paginate/will_paginate.rb
|
|
139
98
|
- lib/app_drone/drones/zzz/git/git.rb
|
|
140
|
-
- lib/app_drone/drones/zzz/git/git.rb~
|
|
141
99
|
- lib/app_drone/drones/zzz/git/install.erb
|
|
142
100
|
- lib/app_drone/drones/zzz/guard/guard.rb
|
|
143
|
-
- lib/app_drone/drones/zzz/guard/guard.rb~
|
|
144
|
-
- lib/app_drone/drones/zzz/ranked_model/ranked_model.rb
|
|
145
|
-
- lib/app_drone/drones/zzz/ranked_model/ranked_model.rb~
|
|
146
101
|
- lib/app_drone/drones/zzz/rspec/install.erb
|
|
147
102
|
- lib/app_drone/drones/zzz/rspec/rspec.rb
|
|
148
|
-
- lib/app_drone/drones/zzz/rspec/rspec.rb~
|
|
149
|
-
- lib/app_drone/integration.rb~
|
|
150
103
|
- lib/app_drone/object_extensions.rb
|
|
151
|
-
- lib/app_drone/object_extensions.rb~
|
|
152
104
|
- lib/app_drone/template.erb
|
|
153
|
-
- lib/app_drone/template.erb~
|
|
154
105
|
- lib/app_drone/template.rb
|
|
155
|
-
- lib/app_drone/template.rb~
|
|
156
106
|
- lib/app_drone/version.rb
|
|
157
|
-
- lib/app_drone/version.rb~
|
|
158
107
|
- out.rb
|
|
159
|
-
-
|
|
160
|
-
-
|
|
108
|
+
- scraps/App admin
|
|
109
|
+
- scraps/TODO
|
|
110
|
+
- scraps/blank drone
|
|
161
111
|
- test/test_app_drone.rb
|
|
162
|
-
- test/test_app_drone.rb~
|
|
163
112
|
homepage: https://github.com/jeriko/app_drone
|
|
164
113
|
licenses: []
|
|
165
114
|
post_install_message:
|
|
@@ -185,6 +134,4 @@ signing_key:
|
|
|
185
134
|
specification_version: 3
|
|
186
135
|
summary: Generates Rails templates to help start your app on good footing
|
|
187
136
|
test_files:
|
|
188
|
-
- test/app_drone_test.rb~
|
|
189
137
|
- test/test_app_drone.rb
|
|
190
|
-
- test/test_app_drone.rb~
|
data/Gemfile~
DELETED
data/README.md~
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
# AppDrone
|
|
2
|
-
|
|
3
|
-
**Avoid the mundane.**
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
AppDrone aims to take the bore out of setting up a Rails app just the way you like it. It's a code library that builds generator code that builds your Rails app code - R A I L S C E P T I O N!
|
|
8
|
-
|
|
9
|
-
Don't want to fiddle around with the command line? No problem! Head on over to http://drone.bz and make use of the shiny Ember.js-powered UI.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## Installation
|
|
13
|
-
|
|
14
|
-
Add this line to your application's `Gemfile`:
|
|
15
|
-
|
|
16
|
-
gem 'app_drone'
|
|
17
|
-
|
|
18
|
-
And then execute:
|
|
19
|
-
|
|
20
|
-
$ bundle
|
|
21
|
-
|
|
22
|
-
Or install it yourself:
|
|
23
|
-
|
|
24
|
-
$ gem install app_drone
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## Usage
|
|
28
|
-
|
|
29
|
-
### Create a new template
|
|
30
|
-
|
|
31
|
-
require 'app_drone'
|
|
32
|
-
t = AppDrone::Template.new
|
|
33
|
-
|
|
34
|
-
### Add drones
|
|
35
|
-
|
|
36
|
-
t.add AppDrone::Bundle
|
|
37
|
-
t.add AppDrone::StyleSheet
|
|
38
|
-
|
|
39
|
-
Parameters can be used to modify drone behavior:
|
|
40
|
-
|
|
41
|
-
t.add AppDrone::Bootstrap, vendor: true
|
|
42
|
-
|
|
43
|
-
To list parameters for a specific drone:
|
|
44
|
-
|
|
45
|
-
AppDrone::Bootstrap.params
|
|
46
|
-
# => #<struct Struct::Param name=:vendor, type=:boolean, options={:info=>"download a local copy into the repo"}>
|
|
47
|
-
# => #<struct Struct::Param name=:responsive, type=:boolean, options={:info=>"include responsive grid"}>
|
|
48
|
-
|
|
49
|
-
For readability, you can use the symbol shorthand instead of full class name:
|
|
50
|
-
|
|
51
|
-
t.add :factory_girl # adds AppDrone::FactoryGirl
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
### Render template
|
|
55
|
-
|
|
56
|
-
Once you've loaded and configured your drones, the template can be rendered to screen or file:
|
|
57
|
-
|
|
58
|
-
t.render_to_file
|
|
59
|
-
# => out.rb
|
|
60
|
-
|
|
61
|
-
Dependencies are automatically checked, and a template will not render unless the drone requirements are all satisfied.
|
|
62
|
-
|
|
63
|
-
AppDrone::Bootstrap.dependencies
|
|
64
|
-
# => [AppDrone::Bundle, AppDrone::Stylesheet, AppDrone::Javascript]
|
|
65
|
-
|
|
66
|
-
*Note that most drones depend on `Bundle`, `Stylesheet` and `Javascript`.*
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
### Active drones
|
|
70
|
-
|
|
71
|
-
To list all available drones:
|
|
72
|
-
|
|
73
|
-
Drone.drones
|
|
74
|
-
# => [:stylesheet, :javascript, :slim_view, :cleanup, :bundle]
|
|
75
|
-
|
|
76
|
-
*Note: these are the underscored versions, not the class names.*
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Underneath the hood
|
|
80
|
-
|
|
81
|
-
Drones are simple classes that implement `align` and `execute` methods. When a template is rendered, `align` is called on each included drone in turn (to set up inter-dependencies), and then `execute` outputs drone code for the generator file.
|
|
82
|
-
|
|
83
|
-
Each drone lives in it's own folder in `lib/app_drone/drones`, and can include `.erb` templates that are rendered into the main generator template by calling `do! :template_name`. Usually, this would happen in the `execute` function.
|
|
84
|
-
|
|
85
|
-
Optionally, a `setup` method can be defined to set up variables etc. when a drone instance is created.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### Describing a drone
|
|
89
|
-
|
|
90
|
-
Use `desc` in the class declaration to explain what the drone does, and `category` to group similar drones together. This is mostly for shiny UI purposes (app_drone_app).
|
|
91
|
-
|
|
92
|
-
class AppDrone::MyDrone < AppDrone::Drone
|
|
93
|
-
desc 'Kills all humans.'
|
|
94
|
-
category :deathbots
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
### Drone dependencies
|
|
99
|
-
|
|
100
|
-
class AppDrone::MyDrone < AppDrone::Drone
|
|
101
|
-
depends_on DeathRay, YourMom
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
AppDrone::MyDrone.dependencies
|
|
105
|
-
# => [AppDrone::DeathRay, AppDrone::YourMom]
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
### Drone pairings
|
|
109
|
-
|
|
110
|
-
Pairing is weaker than a dependency. A template will not render without its dependencies, but pairs are optional inclusions to add extra params and behavior in the presence of another drone.
|
|
111
|
-
|
|
112
|
-
class AppDrone::BarbraStreisand < AppDrone::Drone
|
|
113
|
-
depends_on :bobby_davis_jr
|
|
114
|
-
pairs_with :celine_dion
|
|
115
|
-
|
|
116
|
-
param :wear_human_suit_over_mechaskin, :boolean, info: 'Wear the human disguise'
|
|
117
|
-
param_with :celine_dion, :celine_in_rehab, :boolean, info: 'Is she currently in rehab?'
|
|
118
|
-
|
|
119
|
-
def align
|
|
120
|
-
bobby_davis_jr.say 'Hi'
|
|
121
|
-
bobby_davis_jr.introduce 'This is Celine Dion' if pair?(:celine_dion)
|
|
122
|
-
self.visit_changing_room if param(:wear_human_suit_over_mechaskin)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def execute
|
|
126
|
-
do! :duet_with_bobby
|
|
127
|
-
if pair?(:celine_dion)
|
|
128
|
-
do! :coke_with_celine unless param(:celine_in_rehab)
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
### Drone behavior parameters
|
|
135
|
-
|
|
136
|
-
class AppDrone::MyDrone < AppDrone::Drone
|
|
137
|
-
param :lazer_color, :string, rainbow: ['all','teh','colors!']
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
AppDrone::MyDrone.params
|
|
141
|
-
# => [#<struct Struct::Param name=:lazer_color, type=:string, options={:rainbow=>["all","teh","colors!"]}>]
|
|
142
|
-
|
|
143
|
-
t = AppDrone::Template.new
|
|
144
|
-
t.add :my_drone, lazer_color: 'teh'
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
A drone may also declare a parameter that is only to be used in presence of a dependency.
|
|
148
|
-
|
|
149
|
-
You can also use `param_with` to specify a parameter that is expected in presence of a pair:
|
|
150
|
-
|
|
151
|
-
class AppDrone::EddieIzzard
|
|
152
|
-
desc 'Professional transvestite'
|
|
153
|
-
|
|
154
|
-
pairs_with :heels
|
|
155
|
-
param_with :heels, :wearing_heels, :boolean, default: true
|
|
156
|
-
|
|
157
|
-
def align
|
|
158
|
-
# defaults to true in the presence of :heels dependency
|
|
159
|
-
if pair?(:heels) && param(:wearing_heels)
|
|
160
|
-
puts "I am a professional transvestite, so I can run about in heels and not fall over."
|
|
161
|
-
puts "Cause if a woman falls over wearing heels, that’s embarrassing."
|
|
162
|
-
puts "But if a bloke falls over wearing heels, you have to kill yourself."
|
|
163
|
-
puts "It’s the end of your life.
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
### Drone communication
|
|
171
|
-
|
|
172
|
-
Drones can talk to eachother via a proxy on the template they are included in, using the class name as a reference:
|
|
173
|
-
|
|
174
|
-
class AppDrone::MyDrone < AppDrone::Drone
|
|
175
|
-
def align
|
|
176
|
-
(self >> Bundle).add 'my_gem'
|
|
177
|
-
(self >> Stylesheet).add_import 'shiny_sheet'
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
*Note that the class instance of the parent template is messaged, not the static class.*
|
|
182
|
-
|
|
183
|
-
For convenience, `method_missing` is used to allow you to use the underscore'd name of a class to talk to it's template instance directly:
|
|
184
|
-
|
|
185
|
-
class AppDrone::MyDrone < AppDrone::Drone
|
|
186
|
-
def align
|
|
187
|
-
bundle.add 'my_gem'
|
|
188
|
-
stylesheet.add_import 'shiny_sheet'
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
## DependencyChain
|
|
194
|
-
|
|
195
|
-
The `DependencyChain` class is used to test if a collection of drones is self-sufficient.
|
|
196
|
-
|
|
197
|
-
DependencyChain.satisfied? [AppDrone::Bundle, AppDrone::Stylesheet]
|
|
198
|
-
# => true
|
|
199
|
-
|
|
200
|
-
DependencyChain.satisfied? [AppDrone::Bundle, AppDrone::Flair]
|
|
201
|
-
# => false
|
|
202
|
-
|
|
203
|
-
DependencyChain.satisfaction_requirements [AppDrone::Bundle, AppDrone::Flair]
|
|
204
|
-
# => [AppDrone::HighVoltage, AppDrone::SlimView]
|
|
205
|
-
|
|
206
|
-
Note that only immediate requirements are output. Consider, if `A` depends on `B`, and `B` depends on `C`:
|
|
207
|
-
|
|
208
|
-
DependencyChain.satisfaction_requirements ['A']
|
|
209
|
-
# => ['B']
|
|
210
|
-
|
|
211
|
-
DependencyChain.satisfied? ['A','B']
|
|
212
|
-
# => false
|
|
213
|
-
|
|
214
|
-
DependencyChain.satisfaction_requirements ['A','B']
|
|
215
|
-
# => ['C']
|
|
216
|
-
|
|
217
|
-
DependencyChain.satisfied? ['A','B','C']
|
|
218
|
-
# => true
|
|
219
|
-
|
|
220
|
-
You can also sort a collection of drones so that each drone appears after its respective dependencies:
|
|
221
|
-
|
|
222
|
-
DependencyChain.sort [AppDrone::Flair, AppDrone::HighVoltage, AppDrone::Bundle, AppDrone::SlimView]
|
|
223
|
-
# => [AppDrone::Bundle, AppDrone::HighVoltage, AppDrone::SlimView, AppDrone::Flair]
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
### More info
|
|
227
|
-
|
|
228
|
-
**Take a look at existing drones to gain a deeper understanding of how they work**
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
### Drone naming caveat
|
|
232
|
-
|
|
233
|
-
Because `ActiveSupport::Inflector` is used, be careful when naming drones with apparent plurals - `AppDrone::EmberJs` would be incorrectly symbolized to `ember_j`.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
### An important reminder
|
|
238
|
-
|
|
239
|
-
AppDrone is not for everyone. It's highly opinionated about how a Rails app should be laid out, but is the fruit of tons of research into best practices and maintainability. AppDrone leans especially heavily on Sass, Compass, Coffeescript and Slim. Buyer beware.
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
## Drones
|
|
244
|
-
|
|
245
|
-
### Active drones (put 'em to work!)
|
|
246
|
-
|
|
247
|
-
- [base] Bundle
|
|
248
|
-
- [base] Stylesheet (Sass & Compass)
|
|
249
|
-
- [base] Javascript (Coffescript & jQuery)
|
|
250
|
-
- [base] SlimView
|
|
251
|
-
- [base] Cleanup
|
|
252
|
-
- [views] HighVoltage, by ThoughtBot
|
|
253
|
-
- [views] Flair (drones use this to demonstrate their working functionality)
|
|
254
|
-
- [views] SimpleForm (with optional Country Select and automatic Twitter Bootstrap integration)
|
|
255
|
-
- [auth] Sorcery, for no-frills user authentication
|
|
256
|
-
- [auth] CanCan, for role-based authorization
|
|
257
|
-
- [auth] EasyRoles, to add roles to your User models
|
|
258
|
-
- [model] Migrant, for easier schema management
|
|
259
|
-
- [model] Squeel, improving on ActiveRelation
|
|
260
|
-
- [model] RankedModel, for sorting and ranking objects
|
|
261
|
-
- [ui] Chosen select, by harvestHQ
|
|
262
|
-
- [ui] Bootstrap, by Twitter
|
|
263
|
-
- [ui] Gritter, for jQuery growl-like notifications
|
|
264
|
-
- [ui] Underscore.js utility belt
|
|
265
|
-
- [ux] Ember (the Ember.js library)
|
|
266
|
-
- [dev] LetterOpener, to preview email in the browser instead of sending it
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
### Frozen drones (currently in development)
|
|
270
|
-
|
|
271
|
-
- [base] Database (currenly rake db:migrate in template will break non-sqlite dbs)
|
|
272
|
-
- [auth] CanCan
|
|
273
|
-
- [auth] Sorcery
|
|
274
|
-
- [auth] Devise
|
|
275
|
-
- [auth] EasyRoles
|
|
276
|
-
- [test] RSpec
|
|
277
|
-
- [test] FactoryGirl
|
|
278
|
-
- [test] DatabaseCleaner
|
|
279
|
-
- [test] TimeCop
|
|
280
|
-
- [test] Capybara
|
|
281
|
-
- [test] Shoulda
|
|
282
|
-
- [test?] Chronic
|
|
283
|
-
- [dev] Migrant (+ Pickle support?)
|
|
284
|
-
- [dev] Guard
|
|
285
|
-
- [source-control] Git
|
|
286
|
-
- [model] RankedModel
|
|
287
|
-
- [model] Squeel
|
|
288
|
-
- [requests] Responders
|
|
289
|
-
- [requests] InheritedResources (deprecated)
|
|
290
|
-
- [requests] UserAgent blocking script
|
|
291
|
-
- [dev] Letter opener
|
|
292
|
-
- [ui] Underscore Rails
|
|
293
|
-
- [mailing] SendGrid
|
|
294
|
-
|
|
295
|
-
### Future drones (TODO - I'll get there some day!)
|
|
296
|
-
|
|
297
|
-
- [ui] Stylesheet utils
|
|
298
|
-
- [ui] SlimViews: Add browser-specific classes to <html> via useragent + helpers..
|
|
299
|
-
- [ui] Bootstrap: vendor files rather than gem require (is this necessary? seems all variables can be customized in an external sheet as long as it's required before compass_twitter_bootstrap)
|
|
300
|
-
- [ui] jQuery shims
|
|
301
|
-
- [ui] jQuery UI (vendor + theme etc.)
|
|
302
|
-
- [ui] pie.htc for IE
|
|
303
|
-
- [ui] HTML5 shim for IE
|
|
304
|
-
- [uploads] CarrierWave (and optional cloud resizing thingy)
|
|
305
|
-
- [uploads] Fog
|
|
306
|
-
- [uploads] Remotipart
|
|
307
|
-
- [uploads?] RMagick / minimagick
|
|
308
|
-
- [requests] HasScope
|
|
309
|
-
- [requests] will-paginate (+bootstrap-will-paginate)
|
|
310
|
-
- [dev] rails-best-practices (and the other output gem for debugging)
|
|
311
|
-
- [dev] Pivotal tracker
|
|
312
|
-
- [dev] RailsErd
|
|
313
|
-
- [production] Airbrake + API Key
|
|
314
|
-
- [production] NewRelic
|
|
315
|
-
- [production] EngineYard for deployment
|
|
316
|
-
- [ux] Backbone integration + Skim
|
|
317
|
-
- [views] Nested Form
|
|
318
|
-
- [?] SeedFu
|
|
319
|
-
- [?] Launchy
|
|
320
|
-
- [?] Growl & rb-notify etc.
|
|
321
|
-
- [views] ShowFor
|
|
322
|
-
- [views?] RedCarpet
|
|
323
|
-
- [?] Nokogiri
|
|
324
|
-
- [?] Mechanize
|
|
325
|
-
- [?] Money
|
|
326
|
-
- [misc] NiftyGenerators
|
|
327
|
-
- [ui] jQuery.transit
|
|
328
|
-
- [ui] Ember Touch (gesture support for Ember: pinch, pan etc.)
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
## Contributing
|
|
333
|
-
|
|
334
|
-
I'd love it if you could get involved! Feel free to suggest improvements, drones you'd like developed, or help me get test coverage up to scratch :)
|
|
335
|
-
|
|
336
|
-
1. Fork it
|
|
337
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
338
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
|
339
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
|
340
|
-
5. Create new Pull Request
|
|
341
|
-
|
|
342
|
-
=======
|
data/Rakefile~
DELETED
data/TODO~
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
** ?? rename pairs/pairs_with to connections/connects_with
|
data/app_drone.gemspec~
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
require File.expand_path('../lib/app_drone/version', __FILE__)
|
|
3
|
-
|
|
4
|
-
Gem::Specification.new do |gem|
|
|
5
|
-
gem.authors = ['Daniel Davey']
|
|
6
|
-
gem.email = ['whoisdanieldavey@gmail.com']
|
|
7
|
-
gem.description = %q{Give your Rails apps a kickstart}
|
|
8
|
-
gem.summary = %q{Generates Rails templates to help start your app on good footing}
|
|
9
|
-
gem.homepage = 'https://github.com/jeriko/app_drone'
|
|
10
|
-
|
|
11
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
12
|
-
gem.files = `git ls-files`.split("\n")
|
|
13
|
-
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
14
|
-
gem.name = 'app_drone'
|
|
15
|
-
gem.require_paths = ['lib']
|
|
16
|
-
gem.version = AppDrone::VERSION
|
|
17
|
-
|
|
18
|
-
gem.add_dependency('activesupport', '>= 3.2.0')
|
|
19
|
-
|
|
20
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
module AppDrone
|
|
2
|
-
class DependencyChain
|
|
3
|
-
# re-orders a list of drones so that every drone appears
|
|
4
|
-
# after all of its dependencies
|
|
5
|
-
|
|
6
|
-
class << self
|
|
7
|
-
def satisfied?(drones)
|
|
8
|
-
satisfaction_requirements(drones).empty?
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def satisfaction_requirements(drones)
|
|
12
|
-
all_dependencies = drones.map(&:dependencies).flatten.uniq
|
|
13
|
-
return all_dependencies - drones
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def check_dependencies!(drones)
|
|
17
|
-
raise "Unsatisfied dependencies: #{satisfaction_requirements(drones)}" unless satisfied?(drones)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def sort(drones)
|
|
21
|
-
raise ArgumentError unless drones.is_a?(Array)
|
|
22
|
-
check_dependencies!(drones)
|
|
23
|
-
|
|
24
|
-
misplaced_drone = drones.reverse.find do |drone|
|
|
25
|
-
# working from the bottom of the list upwards,
|
|
26
|
-
# try to find a drone who is below one of their dependencies
|
|
27
|
-
dependency_indices(drones,drone).any? { |dependency_index| drones.index(drone) < dependency_index }
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
if misplaced_drone
|
|
31
|
-
# move it to where it belongs
|
|
32
|
-
drones_sans_misplaced = drones - [misplaced_drone]
|
|
33
|
-
drone_new_index = last_dependency_index(drones_sans_misplaced,misplaced_drone) + 1
|
|
34
|
-
shuffled_drones = drones_sans_misplaced.insert(drone_new_index,misplaced_drone)
|
|
35
|
-
|
|
36
|
-
# resolve recursively
|
|
37
|
-
return sort(shuffled_drones)
|
|
38
|
-
else
|
|
39
|
-
return drones
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
private
|
|
44
|
-
def dependency_indices(drones,drone)
|
|
45
|
-
drone.dependencies.map { |d| drones.index(d) }
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def last_dependency_index(drones,drone)
|
|
49
|
-
dependency_indices(drones,drone).sort.last
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|