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.
Files changed (104) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +54 -39
  3. data/lib/app_drone/dependency_chain.rb +8 -1
  4. data/lib/app_drone/drone.rb +9 -0
  5. data/lib/app_drone/drones/carrierwave/carrierwave.rb +20 -0
  6. data/lib/app_drone/drones/chronic/chronic.rb +13 -0
  7. data/lib/app_drone/drones/{easy_roles_45/easy_roles_45.rb~ → easy_rolez/easy_rolez.rb} +1 -1
  8. data/lib/app_drone/drones/factory_girl/factory_girl.rb +13 -0
  9. data/lib/app_drone/drones/has_scope/has_scope.rb +13 -0
  10. data/lib/app_drone/drones/nested_form/nested_form.rb +14 -0
  11. data/lib/app_drone/drones/new_relic/new_relic.rb +13 -0
  12. data/lib/app_drone/drones/nifty_generatorz/nifty_config.erb +1 -0
  13. data/lib/app_drone/drones/nifty_generatorz/nifty_generatorz.rb +19 -0
  14. data/lib/app_drone/drones/remotipart/remotipart.rb +14 -0
  15. data/lib/app_drone/drones/responderz/install.erb +1 -0
  16. data/lib/app_drone/drones/responderz/responderz.rb +17 -0
  17. data/lib/app_drone/drones/rspec/install.erb +1 -0
  18. data/lib/app_drone/drones/rspec/rspec.rb +17 -0
  19. data/lib/app_drone/drones/simple_cov/install.erb +5 -0
  20. data/lib/app_drone/drones/simple_cov/rspec_integration.erb +1 -0
  21. data/lib/app_drone/drones/simple_cov/simple_cov.rb +20 -0
  22. data/lib/app_drone/drones/timecop/timecop.rb +13 -0
  23. data/lib/app_drone/drones/will_paginate/will_paginate.rb +15 -0
  24. data/lib/app_drone/template.erb +14 -0
  25. data/lib/app_drone/template.rb +13 -4
  26. data/lib/app_drone/version.rb +1 -1
  27. data/out.rb +28 -3
  28. data/scraps/App admin +7 -0
  29. data/scraps/TODO +32 -0
  30. data/scraps/blank drone +15 -0
  31. data/test/test_app_drone.rb +8 -1
  32. metadata +26 -79
  33. data/Gemfile~ +0 -4
  34. data/README.md~ +0 -342
  35. data/Rakefile~ +0 -11
  36. data/TODO~ +0 -1
  37. data/app_drone.gemspec~ +0 -20
  38. data/lib/app_drone/dependency.rb~ +0 -5
  39. data/lib/app_drone/dependency_chain.rb~ +0 -55
  40. data/lib/app_drone/drone.rb~ +0 -121
  41. data/lib/app_drone/drones/bootstrap/bootstrap.rb~ +0 -46
  42. data/lib/app_drone/drones/bootstrap/flair.html.slim.erb~ +0 -7
  43. data/lib/app_drone/drones/bundle/bundle.rb~ +0 -22
  44. data/lib/app_drone/drones/bundle/gem.rb~ +0 -23
  45. data/lib/app_drone/drones/bundle/gem_entries.erb~ +0 -6
  46. data/lib/app_drone/drones/bundle/gems.rb~ +0 -23
  47. data/lib/app_drone/drones/cancan/ability.erb~ +0 -1
  48. data/lib/app_drone/drones/cancan/cancan.rb~ +0 -19
  49. data/lib/app_drone/drones/chosen/chosen.rb~ +0 -16
  50. data/lib/app_drone/drones/chosen/showcase.html.slim~ +0 -0
  51. data/lib/app_drone/drones/cleanup/cleanup.rb~ +0 -9
  52. data/lib/app_drone/drones/easy_roles_45/easy_roles.rb~ +0 -13
  53. data/lib/app_drone/drones/easy_roles_45/easy_roles_45.rb +0 -13
  54. data/lib/app_drone/drones/easy_roles_45/easy_rolez.rb~ +0 -13
  55. data/lib/app_drone/drones/ember/ember.rb~ +0 -21
  56. data/lib/app_drone/drones/ember/ember_js.rb~ +0 -21
  57. data/lib/app_drone/drones/ember/install.erb~ +0 -3
  58. data/lib/app_drone/drones/flair/flair.rb~ +0 -39
  59. data/lib/app_drone/drones/flair/flair_page.erb~ +0 -8
  60. data/lib/app_drone/drones/flair/showcase.rb~ +0 -27
  61. data/lib/app_drone/drones/flair/showcase_page.erb~ +0 -11
  62. data/lib/app_drone/drones/gritter/flair.html.slim.erb~ +0 -8
  63. data/lib/app_drone/drones/gritter/gritter.rb~ +0 -21
  64. data/lib/app_drone/drones/gritter/install.erb~ +0 -1
  65. data/lib/app_drone/drones/high_voltage/create_pages_directory.erb~ +0 -1
  66. data/lib/app_drone/drones/high_voltage/high_voltage.rb~ +0 -15
  67. data/lib/app_drone/drones/javascript/application_coffee.erb~ +0 -15
  68. data/lib/app_drone/drones/javascript/javascript.rb~ +0 -26
  69. data/lib/app_drone/drones/javascript/javascripts.rb~ +0 -23
  70. data/lib/app_drone/drones/letter_opener/development_delivery_method.erb~ +0 -1
  71. data/lib/app_drone/drones/letter_opener/development_delivery_method.rb~ +0 -1
  72. data/lib/app_drone/drones/letter_opener/letter_opener.rb~ +0 -17
  73. data/lib/app_drone/drones/migrant/migrant.rb~ +0 -13
  74. data/lib/app_drone/drones/ranked_model/ranked_model.rb~ +0 -13
  75. data/lib/app_drone/drones/simple_form/install.erb~ +0 -1
  76. data/lib/app_drone/drones/simple_form/simple_form.rb~ +0 -21
  77. data/lib/app_drone/drones/slim_view/application_slim.erb~ +0 -15
  78. data/lib/app_drone/drones/slim_view/slim_view.rb~ +0 -16
  79. data/lib/app_drone/drones/slim_view/slim_views.rb~ +0 -14
  80. data/lib/app_drone/drones/sorcery/configure.erb~ +0 -1
  81. data/lib/app_drone/drones/sorcery/sorcery.rb~ +0 -18
  82. data/lib/app_drone/drones/squeel/initializer.erb~ +0 -1
  83. data/lib/app_drone/drones/squeel/squeel.rb~ +0 -19
  84. data/lib/app_drone/drones/stylesheet/application_sass.erb~ +0 -11
  85. data/lib/app_drone/drones/stylesheet/stylesheet.rb~ +0 -26
  86. data/lib/app_drone/drones/stylesheet/stylesheets.rb~ +0 -30
  87. data/lib/app_drone/drones/underscore/flair.html.slim.erb~ +0 -25
  88. data/lib/app_drone/drones/underscore/underscore.rb~ +0 -18
  89. data/lib/app_drone/drones/zzz/factory_girl/factory_girl.rb +0 -13
  90. data/lib/app_drone/drones/zzz/factory_girl/factory_girl.rb~ +0 -13
  91. data/lib/app_drone/drones/zzz/git/git.rb~ +0 -8
  92. data/lib/app_drone/drones/zzz/guard/guard.rb~ +0 -15
  93. data/lib/app_drone/drones/zzz/ranked_model/ranked_model.rb +0 -9
  94. data/lib/app_drone/drones/zzz/ranked_model/ranked_model.rb~ +0 -9
  95. data/lib/app_drone/drones/zzz/rspec/rspec.rb~ +0 -13
  96. data/lib/app_drone/integration.rb~ +0 -48
  97. data/lib/app_drone/object_extensions.rb~ +0 -17
  98. data/lib/app_drone/template.erb~ +0 -33
  99. data/lib/app_drone/template.rb~ +0 -54
  100. data/lib/app_drone/version.rb~ +0 -3
  101. data/lib/app_drone.rb~ +0 -16
  102. data/out.rb~ +0 -161
  103. data/test/app_drone_test.rb~ +0 -19
  104. 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.8.6
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-02 00:00:00.000000000 Z
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: &22589680 !ruby/object:Gem::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: *22589680
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/cancan/cancan.rb~
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/chosen/showcase.html.slim~
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/cleanup/cleanup.rb~
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/ember/install.erb~
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/gritter/install.erb~
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/migrant/migrant.rb~
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/ranked_model/ranked_model.rb~
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/stylesheet/stylesheet.rb~
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/underscore/underscore.rb~
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
- - out.rb~
160
- - test/app_drone_test.rb~
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
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in app_drone.gemspec
4
- gemspec
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
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env rake
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
-
6
- Rake::TestTask.new do |t|
7
- t.libs << 'test'
8
- end
9
-
10
- desc 'Run tests'
11
- task :default => :test
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,5 +0,0 @@
1
- module AppDrone
2
- class Dependency
3
- def initialize()
4
- end
5
- 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