rapid-app 0.1.3 → 0.2.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 (82) hide show
  1. data/Rakefile +14 -2
  2. data/lib/rapid-app.rb +6 -1
  3. data/lib/rapid/app/settings.rb +163 -84
  4. data/lib/rapid/app/skeleton.rb +67 -79
  5. data/lib/rapid/app/version.rb +1 -1
  6. data/lib/rapid/app/web.rb +48 -0
  7. data/public/rapid/app/application.css +10 -0
  8. data/public/rapid/app/application.js +63 -0
  9. data/rapid-app.gemspec +1 -11
  10. data/spec/hello_world/3.2.1/.gitignore +15 -0
  11. data/spec/hello_world/3.2.1/Gemfile +39 -0
  12. data/spec/hello_world/3.2.1/README.rdoc +261 -0
  13. data/spec/hello_world/3.2.1/Rakefile +7 -0
  14. data/spec/hello_world/3.2.1/app/assets/images/rails.png +0 -0
  15. data/spec/hello_world/3.2.1/app/assets/javascripts/application.js +15 -0
  16. data/spec/hello_world/3.2.1/app/assets/stylesheets/application.css +13 -0
  17. data/spec/hello_world/3.2.1/app/controllers/application_controller.rb +3 -0
  18. data/spec/hello_world/3.2.1/app/helpers/application_helper.rb +2 -0
  19. data/spec/hello_world/3.2.1/app/mailers/.gitkeep +0 -0
  20. data/spec/hello_world/3.2.1/app/models/.gitkeep +0 -0
  21. data/spec/hello_world/3.2.1/app/views/layouts/application.html.erb +14 -0
  22. data/spec/hello_world/3.2.1/config.ru +4 -0
  23. data/spec/hello_world/3.2.1/config/application.rb +59 -0
  24. data/spec/hello_world/3.2.1/config/boot.rb +6 -0
  25. data/spec/hello_world/3.2.1/config/database.yml +25 -0
  26. data/spec/hello_world/3.2.1/config/environment.rb +5 -0
  27. data/spec/hello_world/3.2.1/config/environments/development.rb +37 -0
  28. data/spec/hello_world/3.2.1/config/environments/production.rb +67 -0
  29. data/spec/hello_world/3.2.1/config/environments/test.rb +37 -0
  30. data/spec/hello_world/3.2.1/config/initializers/backtrace_silencers.rb +7 -0
  31. data/spec/hello_world/3.2.1/config/initializers/inflections.rb +15 -0
  32. data/spec/hello_world/3.2.1/config/initializers/mime_types.rb +5 -0
  33. data/spec/hello_world/3.2.1/config/initializers/secret_token.rb +7 -0
  34. data/spec/hello_world/3.2.1/config/initializers/session_store.rb +8 -0
  35. data/spec/hello_world/3.2.1/config/initializers/wrap_parameters.rb +14 -0
  36. data/spec/hello_world/3.2.1/config/locales/en.yml +5 -0
  37. data/spec/hello_world/3.2.1/config/routes.rb +58 -0
  38. data/spec/hello_world/3.2.1/db/seeds.rb +7 -0
  39. data/spec/hello_world/3.2.1/doc/README_FOR_APP +2 -0
  40. data/spec/hello_world/3.2.1/lib/assets/.gitkeep +0 -0
  41. data/spec/hello_world/3.2.1/lib/tasks/.gitkeep +0 -0
  42. data/spec/hello_world/3.2.1/log/.gitkeep +0 -0
  43. data/spec/hello_world/3.2.1/public/404.html +26 -0
  44. data/spec/hello_world/3.2.1/public/422.html +26 -0
  45. data/spec/hello_world/3.2.1/public/500.html +25 -0
  46. data/spec/hello_world/3.2.1/public/favicon.ico +0 -0
  47. data/spec/hello_world/3.2.1/public/index.html +241 -0
  48. data/spec/hello_world/3.2.1/public/robots.txt +5 -0
  49. data/spec/hello_world/3.2.1/script/rails +6 -0
  50. data/spec/hello_world/3.2.1/test/fixtures/.gitkeep +0 -0
  51. data/spec/hello_world/3.2.1/test/functional/.gitkeep +0 -0
  52. data/spec/hello_world/3.2.1/test/integration/.gitkeep +0 -0
  53. data/spec/hello_world/3.2.1/test/performance/browsing_test.rb +12 -0
  54. data/spec/hello_world/3.2.1/test/test_helper.rb +13 -0
  55. data/spec/hello_world/3.2.1/test/unit/.gitkeep +0 -0
  56. data/spec/hello_world/3.2.1/vendor/assets/javascripts/.gitkeep +0 -0
  57. data/spec/hello_world/3.2.1/vendor/assets/stylesheets/.gitkeep +0 -0
  58. data/spec/hello_world/3.2.1/vendor/plugins/.gitkeep +0 -0
  59. data/spec/rapid/app/skeleton_spec.rb +48 -40
  60. data/spec/support/project.rb +77 -0
  61. data/spec/templates/app/helpers/analytics/google_helper_spec.rb +22 -0
  62. data/spec/templates/config/application_spec.rb +23 -23
  63. data/spec/templates/config/deploy/production_spec.rb +45 -45
  64. data/spec/templates/config/deploy_spec.rb +32 -32
  65. data/spec/templates/config/environments/development_spec.rb +14 -0
  66. data/spec/templates/config/environments/production_spec.rb +15 -1
  67. data/spec/templates/config/environments/test_spec.rb +14 -0
  68. data/spec/templates/features/support/env_spec.rb +4 -4
  69. data/spec/templates/lib/tasks/test.rake_spec.rb +22 -21
  70. data/spec/templates/spec/spec_helper_spec.rb +4 -4
  71. data/templates/app/helpers/analytics/google_helper.rb +21 -0
  72. data/templates/config/application.rb +4 -2
  73. data/templates/config/deploy.rb +4 -4
  74. data/templates/config/deploy/production.rb +15 -15
  75. data/templates/config/environments/development.rb +12 -3
  76. data/templates/config/environments/production.rb +9 -2
  77. data/templates/config/environments/test.rb +5 -10
  78. data/templates/lib/tasks/test.rake +3 -0
  79. data/views/edit.haml +160 -0
  80. data/views/error.haml +3 -0
  81. data/views/layout.haml +7 -0
  82. metadata +115 -80
data/Rakefile CHANGED
@@ -1,4 +1,16 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rapid/web/tasks'
2
3
 
3
- require 'rspec/core/rake_task'
4
- RSpec::Core::RakeTask.new('spec')
4
+ if defined? Rspec
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new('spec')
7
+ end
8
+
9
+ desc "Run the Sinatra server to edit your application with this gem"
10
+ task :server do
11
+ path = ENV["APP"]
12
+ raise "USAGE: rake server APP=/path/to/rails/application" if path.nil?
13
+
14
+ require 'rapid-app'
15
+ Rapid::App::Web.run!
16
+ end
data/lib/rapid-app.rb CHANGED
@@ -1,5 +1,10 @@
1
- require 'rapid'
1
+ require 'haml'
2
+
3
+ require 'rapid/core'
2
4
  require "rapid/app"
3
5
  require "rapid/app/version"
4
6
  require "rapid/app/settings"
5
7
  require "rapid/app/skeleton"
8
+ require "rapid/app/web"
9
+
10
+ Rapid.use_middleware Rapid::App::Web
@@ -11,34 +11,40 @@ module Rapid
11
11
 
12
12
  setting.code 'controllers.application.body'
13
13
  setting.code 'helpers.application.body'
14
- setting.code 'config.body'
14
+ setting.code 'app.config.start'
15
+ setting.code 'app.config.rest'
15
16
  setting.code 'routes.body'
16
17
 
17
- setting.namespace 'database', :default => true
18
- setting.namespace 'database.sqlite', :default => true
19
- setting.namespace 'database.mysql', :default => false
20
- setting.namespace 'database.mongoid', :default => false
18
+ setting.namespace 'database'
19
+ setting.namespace 'database.sqlite3'
20
+ setting.namespace 'database.mysql'
21
+ setting.namespace 'database.mongoid'
21
22
 
22
- setting.namespace 'development', :default => true
23
- setting.string 'development.domain', :default => "localhost"
23
+ setting.namespace 'development'
24
+ setting.string 'development.protocol', :default => 'http'
25
+ setting.string 'development.domain'
24
26
  setting.integer 'development.port'
27
+ setting.string 'development.delivery_method'
25
28
 
26
- setting.namespace 'test', :default => true
27
- setting.string 'test.domain', :default => "www.example.com"
29
+ setting.namespace 'test'
30
+ setting.string 'test.protocol', :default => 'http'
31
+ setting.string 'test.domain'
28
32
  setting.integer 'test.port'
29
33
 
30
34
  setting.integer 'test.coverage.threshold', :default => 90
31
- setting.namespace 'test.unit', :default => true
35
+ setting.namespace 'test.unit'
32
36
 
33
- setting.namespace 'test.rspec', :default => false
37
+ setting.namespace 'test.rake.all'
38
+
39
+ setting.namespace 'test.rspec'
34
40
  setting.code 'test.rspec.factories.body'
35
41
 
36
- setting.namespace 'test.cucumber', :default => true
42
+ setting.namespace 'test.cucumber'
37
43
  setting.integer 'test.cucumber.wip.max', :default => 20
38
44
  setting.code 'test.cucumber.selectors.body'
39
45
  setting.code 'test.cucumber.paths.body'
40
46
 
41
- setting.namespace 'test.roodi', :default => true
47
+ setting.namespace 'test.roodi'
42
48
  setting.integer 'test.roodi.method.complexity', :default => 8
43
49
  setting.integer 'test.roodi.method.lines.max', :default => 40
44
50
  setting.integer 'test.roodi.block.complexity', :default => 4
@@ -46,47 +52,49 @@ module Rapid
46
52
  setting.integer 'test.roodi.module.lines.max', :default => 300
47
53
  setting.integer 'test.roodi.parameters.max', :default => 5
48
54
 
49
- setting.namespace 'production', :default => true
55
+ setting.namespace 'production'
56
+ setting.string 'production.protocol', :default => 'http'
50
57
  setting.string 'production.domain'
51
58
  setting.integer 'production.port'
52
59
 
53
- setting.namespace 'assets', :default => true
54
- setting.namespace 'paginate', :default => true
55
- setting.namespace 'net', :default => true
56
- setting.namespace 'net.http', :default => true
60
+ setting.namespace 'assets'
61
+ setting.namespace 'paginate'
62
+ setting.namespace 'net'
63
+ setting.namespace 'net.http'
57
64
 
58
- setting.namespace 'i18n', :default => false
59
- setting.namespace 'breadcrumbs', :default => false
60
- setting.namespace 'upload', :default => false
61
- setting.boolean 'upload.private', :default => false
65
+ setting.namespace 'i18n'
66
+ setting.namespace 'breadcrumbs'
67
+ setting.namespace 'haml'
68
+ setting.namespace 'upload'
69
+ setting.boolean 'upload.private'
62
70
 
63
- setting.namespace 'import', :default => false
64
- setting.namespace 'import.logs', :default => false
71
+ setting.namespace 'import'
72
+ setting.namespace 'import.logs'
65
73
 
66
- setting.namespace 'exceptions', :default => false
67
- setting.namespace 'exceptions.airbrake', :default => false
74
+ setting.namespace 'exceptions'
75
+ setting.namespace 'exceptions.airbrake'
68
76
  setting.string 'exceptions.airbrake.api_key'
69
77
  setting.string 'exceptions.airbrake.host'
70
78
  setting.boolean 'exceptions.airbrake.secure'
71
79
 
72
- setting.namespace 'deploy', :default => false
73
- setting.string 'deploy.repository.url'
80
+ setting.namespace 'deploy'
74
81
 
75
- setting.namespace 'deploy.production', :default => false
76
- setting.string 'deploy.production.domain'
77
- setting.string 'deploy.production.path'
78
- setting.string 'deploy.production.branch'
79
- setting.string 'deploy.production.user'
80
- setting.integer 'deploy.production.keep', :default => 5
81
- setting.string 'deploy.production.server', :default => 'passenger'
82
- setting.string 'deploy.production.bin'
83
- setting.string 'deploy.production.rvm.type'
84
- setting.string 'deploy.production.rvm.ruby'
85
- setting.string 'deploy.production.rvm.gemset'
82
+ setting.string 'deploy.capistrano.repository.url'
83
+ setting.namespace 'deploy.capistrano.production'
84
+ setting.namespace 'deploy.capistrano.production'
85
+ setting.string 'deploy.capistrano.production.domain'
86
+ setting.string 'deploy.capistrano.production.path'
87
+ setting.string 'deploy.capistrano.production.branch'
88
+ setting.string 'deploy.capistrano.production.user'
89
+ setting.integer 'deploy.capistrano.production.keep', :default => 5
90
+ setting.string 'deploy.capistrano.production.server', :default => 'passenger'
91
+ setting.string 'deploy.capistrano.production.bin'
92
+ setting.string 'deploy.capistrano.production.rvm.type'
93
+ setting.string 'deploy.capistrano.production.rvm.ruby'
94
+ setting.string 'deploy.capistrano.production.rvm.gemset'
86
95
 
87
96
 
88
- setting.namespace 'email', :default => false
89
- setting.string 'email.smtp.provider'
97
+ setting.namespace 'email'
90
98
  setting.string 'email.smtp.address'
91
99
  setting.string 'email.smtp.domain'
92
100
  setting.string 'email.smtp.username'
@@ -98,21 +106,35 @@ module Rapid
98
106
  setting.string 'email.test.subject', :default => "Test Email"
99
107
  setting.string 'email.test.message', :default => "Emails are configured correctly!"
100
108
 
101
- setting.namespace 'scheduler', :default => false
109
+ setting.namespace 'scheduler'
102
110
  setting.code 'scheduler.body'
103
111
 
104
- setting.namespace 'async', :default => false
105
- setting.namespace 'async.delayed_job', :default => false
112
+ setting.namespace 'async'
113
+ setting.namespace 'async.delayed_job'
114
+
115
+ setting.namespace 'analytics'
116
+ setting.string 'analytics.google.uid'
117
+
118
+ class << self
119
+
120
+ def databases
121
+ %w(sqlite3 mysql mongoid)
122
+ end
123
+
124
+ def timezones
125
+ ActiveSupport::TimeZone.all.collect {|z| z.name}
126
+ end
127
+
128
+ end
106
129
 
107
130
  validates_presence_of 'name'
108
131
  validates_presence_of 'upload', :if => :import?
109
132
  validates_presence_of 'async', :if => :import?
110
133
  validates_presence_of 'net.http', :if => 'root.exceptions.airbrake?'
111
134
 
112
- validates_inclusion_of 'timezone', :in => ActiveSupport::TimeZone.all.collect {|z| z.name}, :allow_nil => true
113
- validates_inclusion_of 'deploy.production.server', :in => %w(passenger heroku), :allow_nil => true
114
- validates_inclusion_of 'email.smtp.provider', :in => %w(google sendgrid), :allow_nil => true
115
- validates_inclusion_of 'deploy.production.rvm.type', :in => %w(system user), :allow_nil => true
135
+ validates_inclusion_of 'timezone', :in => timezones, :allow_nil => true
136
+ validates_inclusion_of 'deploy.capistrano.production.server', :in => %w(passenger heroku), :allow_nil => true
137
+ validates_inclusion_of 'deploy.capistrano.production.rvm.type', :in => %w(system user), :allow_nil => true
116
138
 
117
139
  def module_name
118
140
  name.camelize if name
@@ -120,6 +142,7 @@ module Rapid
120
142
 
121
143
  def module_name= name
122
144
  self.name = name ? name.underscore : nil
145
+ name
123
146
  end
124
147
 
125
148
  def rails_all?
@@ -128,9 +151,9 @@ module Rapid
128
151
 
129
152
  def rails_all= bool
130
153
  if bool
131
- database.active_record = true
132
- assets = true
133
- test.unit = true
154
+ self.database.active_record = true
155
+ self.assets = true
156
+ self.test.unit = true
134
157
  end
135
158
 
136
159
  bool
@@ -138,12 +161,60 @@ module Rapid
138
161
 
139
162
  setting.class_eval 'database' do
140
163
 
164
+ def type
165
+ if sqlite3?
166
+ 'sqlite3'
167
+ elsif mysql?
168
+ 'mysql'
169
+ elsif mongoid?
170
+ 'mongoid'
171
+ end
172
+ end
173
+
174
+ def type= type
175
+ case type
176
+ when 'sqlite3'
177
+ self.sqlite3 = true
178
+ self.mysql = false
179
+ self.mongoid = false
180
+ when 'mysql'
181
+ self.sqlite3 = false
182
+ self.mysql = true
183
+ self.mongoid = false
184
+ when 'mongoid'
185
+ self.sqlite3 = false
186
+ self.mysql = false
187
+ self.mongoid = true
188
+ else
189
+ if type == '' || type == nil
190
+ self.sqlite3 = false
191
+ self.mysql = false
192
+ self.mongoid = false
193
+ end
194
+ end
195
+
196
+ type
197
+ end
198
+
141
199
  def active_record?
142
200
  sqlite? || mysql?
143
201
  end
144
202
 
145
- def sqlite3?
146
- sqlite?
203
+ def active_record= value
204
+ unless value
205
+ self.sqlite = false
206
+ self.mysql = false
207
+ end
208
+
209
+ value
210
+ end
211
+
212
+ def sqlite?
213
+ sqlite3?
214
+ end
215
+
216
+ def sqlite= sql
217
+ # TODO
147
218
  end
148
219
 
149
220
  end
@@ -162,7 +233,7 @@ module Rapid
162
233
  %(%w(#{tasks.join(' ')}))
163
234
  end
164
235
 
165
- def tasks=
236
+ def tasks= value
166
237
  # TODO infer the roodi, spec, cucumber settings
167
238
  end
168
239
 
@@ -188,7 +259,43 @@ module Rapid
188
259
 
189
260
  end
190
261
 
191
- setting.class_eval 'deploy' do
262
+ setting.class_eval 'email.smtp' do
263
+
264
+ def provider
265
+ case address
266
+ when 'smtp.gmail.com'
267
+ 'google'
268
+ when 'smtp.sendgrid.net'
269
+ 'sendgrid'
270
+ else
271
+ 'other'
272
+ end
273
+ end
274
+
275
+ def provider= provider
276
+ case provider
277
+ when 'google'
278
+ self.address = 'smtp.gmail.com'
279
+ self.port = 587
280
+ self.authentication = "plain"
281
+ self.tls = true
282
+
283
+ when 'sendgrid'
284
+ self.address = 'smtp.sendgrid.com'
285
+ self.port = 587
286
+ self.authentication = "plain"
287
+ self.tls = true
288
+
289
+ else
290
+ # other, no setup
291
+ end
292
+
293
+ @provider = provider
294
+ end
295
+
296
+ end
297
+
298
+ setting.class_eval 'deploy.capistrano' do
192
299
 
193
300
  def rvm?
194
301
  production.rvm?
@@ -217,7 +324,7 @@ module Rapid
217
324
 
218
325
  end
219
326
 
220
- setting.class_eval 'deploy.production' do
327
+ setting.class_eval 'deploy.capistrano.production' do
221
328
 
222
329
  def scheduler?
223
330
  bin? && root.scheduler?
@@ -229,34 +336,6 @@ module Rapid
229
336
 
230
337
  end
231
338
 
232
- setting.class_eval 'email.smtp' do
233
-
234
- def address
235
- case provider
236
- when 'google'
237
- "smtp.gmail.com"
238
- when 'sendgrid'
239
- "smtp.sendgrid.net"
240
- else
241
- self[:address]
242
- end
243
- end
244
-
245
- def address= address
246
- self.provider = case address
247
- when 'smtp.gmail.com'
248
- 'google'
249
- when 'smtp.sendgrid.net'
250
- 'sendgrid'
251
- else
252
- nil
253
- end
254
-
255
- self[:address] = address
256
- end
257
-
258
- end
259
-
260
339
  end
261
340
 
262
341
  end
@@ -55,30 +55,27 @@ module Rapid
55
55
  def assets
56
56
  gem 'sass-rails', :group => :assets, :if => 'assets'
57
57
 
58
- if settings.assets?
59
- gem 'coffee-rails', :group => :assets
60
- gem 'uglifier', :group => :assets
61
- end
58
+ gem 'coffee-rails', :group => :assets, :if => 'assets'
59
+ gem 'uglifier', :group => :assets, :if => 'assets'
62
60
  end
63
61
 
64
62
  def email
65
- template 'config/initializers/email.rb', :if => 'email'
63
+ template 'config/initializers/email.rb', :if => 'email.smtp'
66
64
 
67
65
  template 'app/mailers/test_mailer.rb', :if => 'email.test'
68
- if settings.email.test?
69
- template 'lib/tasks/test_mailer.rake'
70
- view 'test_mailer/test_email.text.erb'
71
- end
66
+ template 'lib/tasks/test_mailer.rake', :if => 'email.test'
67
+ view 'test_mailer/test_email.text.erb', :if => 'email.test'
72
68
  end
73
69
 
74
70
  def database
75
71
  directory 'db/migrate', :if => 'database.active_record'
76
72
 
73
+ gem 'sqlite3', :if => 'database.sqlite3'
74
+ gem 'mysql', :if => 'database.mysql'
75
+
77
76
  gem 'mongoid', :if => 'database.mongoid'
78
- if settings.database.mongoid?
79
- gem 'bson_ext'
80
- gem 'SystemTimer'
81
- end
77
+ gem 'bson_ext', :if => 'database.mongoid'
78
+ gem 'SystemTimer', :if => 'database.mongoid'
82
79
  end
83
80
 
84
81
  def development
@@ -87,68 +84,60 @@ module Rapid
87
84
 
88
85
  def test
89
86
  template 'config/environments/test.rb', :if => 'test'
90
- if settings.test?
91
- gem 'rapid-core', :groups => [:development, :test]
92
- gem 'rapid-app', :groups => [:development, :test]
93
-
94
- section :test_unit
95
- section :rspec
96
- section :cucumber
97
- section :roodi
98
-
99
- template 'lib/tasks/test.rake'
100
- gem 'fakeweb', :group => :test, :if => 'settings.net.http'
101
- end
87
+
88
+ section :test_unit
89
+ section :rspec
90
+ section :cucumber
91
+ section :roodi
92
+ section :coverage
93
+
94
+ template 'lib/tasks/test.rake', :if => 'test.rake.all'
102
95
  end
103
96
 
104
97
  def test_unit
98
+ directory 'test', :if => 'test.unit'
105
99
  template 'test/test_helper.rb', :if => 'test.unit'
106
100
  end
107
101
 
108
102
  def rspec
109
103
  gem "rspec-rails", :group => :test, :if => 'test.rspec'
110
104
 
111
- if settings.test.rspec?
112
- gem 'database_cleaner', :group => :test if settings.database?
113
- gem 'factory_girl_rails', :group => :test if settings.database?
114
-
115
- template 'rspec', :to => ".rspec"
116
- template 'spec/factories.rb' if settings.database?
117
- template 'spec/spec_helper.rb'
118
- directory 'spec/support'
119
- end
105
+ gem 'database_cleaner', :group => :test, :if => ['test.rspec', 'database']
106
+ gem 'factory_girl_rails', :group => :test, :if => ['test.rspec', 'database']
107
+
108
+ template 'rspec', :to => '.rspec', :if => 'test.rspec'
109
+ template 'spec/factories.rb', :if => ['test.rspec', 'database']
110
+ template 'spec/spec_helper.rb', :if => 'test.rspec'
111
+ directory 'spec/support', :if => 'test.rspec'
112
+ directory 'spec', :if => 'test.rspec'
120
113
  end
121
114
 
122
115
  def cucumber
123
116
  gem 'cucumber-rails', :group => :test, :if => 'test.cucumber'
117
+ gem 'capybara', :group => :test, :if => 'test.cucumber'
118
+ gem 'launchy', :group => :test, :if => 'test.cucumber'
119
+
120
+ template 'config/cucumber.yml', :if => 'test.cucumber'
121
+
122
+ directory 'features', :if => 'test.cucumber'
123
+ template 'features/step_definitions/email_steps.rb', :if => ['test.cucumber', 'email']
124
+ template 'features/step_definitions/web_steps/browsing_steps.rb', :if => 'test.cucumber'
125
+ template 'features/step_definitions/web_steps/debug_steps.rb', :if => 'test.cucumber'
126
+ template 'features/step_definitions/web_steps/form_steps.rb', :if => 'test.cucumber'
127
+ template 'features/step_definitions/web_steps/step_scoper.rb', :if => 'test.cucumber'
124
128
 
125
- if settings.test.cucumber?
126
- gem 'capybara', :group => :test
127
- gem 'launchy', :group => :test
128
-
129
- template 'config/cucumber.yml'
130
- template 'features/step_definitions/email_steps.rb' if settings.email?
131
- template 'features/step_definitions/web_steps/browsing_steps.rb'
132
- template 'features/step_definitions/web_steps/debug_steps.rb'
133
- template 'features/step_definitions/web_steps/form_steps.rb'
134
- template 'features/step_definitions/web_steps/step_scoper.rb'
135
-
136
- template 'features/support/email.rb' if settings.email?
137
- template 'features/support/env.rb'
138
- template 'features/support/paths.rb'
139
- template 'features/support/selectors.rb'
140
- template 'features/support/with_scope.rb'
141
-
142
- template 'lib/tasks/cucumber.rake'
143
- end
129
+ template 'features/support/email.rb', :if => ['test.cucumber', 'email']
130
+ template 'features/support/env.rb', :if => 'test.cucumber'
131
+ template 'features/support/paths.rb', :if => 'test.cucumber'
132
+ template 'features/support/selectors.rb', :if => 'test.cucumber'
133
+ template 'features/support/with_scope.rb', :if => 'test.cucumber'
134
+
135
+ template 'lib/tasks/cucumber.rake', :if => 'test.cucumber'
144
136
  end
145
137
 
146
138
  def roodi
147
- template 'config/roodi.yml', :if => 'test.roodi'
148
-
149
- if settings.test.roodi?
150
- gem 'roodi', :group => :test
151
- end
139
+ template 'config/roodi.yml', :if => 'test.roodi'
140
+ gem 'roodi', :group => :test, :if => 'test.roodi'
152
141
  end
153
142
 
154
143
  def coverage
@@ -162,40 +151,31 @@ module Rapid
162
151
  def exceptions
163
152
  gem 'airbrake', :if => 'exceptions.airbrake'
164
153
 
165
- if settings.exceptions.airbrake?
166
- template 'config/initializers/airbrake.rb'
167
- end
154
+ template 'config/initializers/airbrake.rb', :if => 'exceptions.airbrake'
168
155
  end
169
156
 
170
157
  def deploy
171
- gem 'capistrano', :group => :development, :if => 'deploy'
158
+ gem 'capistrano', :group => :development, :if => 'deploy.capistrano'
159
+ gem 'capistrano-ext', :group => :development, :if => 'deploy.capistrano'
160
+
161
+ template 'config/deploy.rb', :if => 'deploy.capistrano'
162
+ template 'config/deploy/production.rb', :if => ['deploy', 'deploy.capistrano.production']
172
163
 
173
- if settings.deploy?
174
- gem 'capistrano-ext', :group => :development
175
-
176
- template 'config/deploy.rb'
177
- template 'config/deploy/production.rb' if settings.deploy.production?
178
- end
164
+ directory 'config/deploy', :if => 'deploy.capistrano'
179
165
  end
180
166
 
181
167
  def scheduler
182
168
  gem 'whenever', :if => 'scheduler'
183
- if settings.scheduler?
184
- template 'config/schedule.rb'
185
- end
169
+ template 'config/schedule.rb', :if => 'scheduler'
186
170
  end
187
171
 
188
172
  def async
189
173
  gem 'delayed_job', :if => 'async.delayed_job'
190
174
 
191
- if settings.async.delayed_job?
192
- script 'script/delayed_job'
193
-
194
- if settings.database.active_record?
195
- migration 'create_jobs'
196
- gem 'delayed_job_active_record'
197
- end
198
- end
175
+ script 'script/delayed_job', :if => 'async.delayed_job'
176
+ # migration 'create_jobs', :if => 'async.delayed_job'
177
+
178
+ gem 'delayed_job_active_record', :if => ['async.delayed_job', 'database.active_record']
199
179
 
200
180
  # TODO resque
201
181
  end
@@ -203,8 +183,16 @@ module Rapid
203
183
  def other
204
184
  gem 'kaminari', :if => 'paginate'
205
185
  gem 'net_http_exception_fix', :if => 'net.http'
186
+ gem 'fakeweb', :group => :test, :if => ['net.http', 'test']
206
187
  gem 'crummy', :if => 'breadcrumbs'
207
188
  gem 'carrierwave', :if => 'upload'
189
+ gem 'haml', :if => 'haml'
190
+ analytics
191
+ end
192
+
193
+ def analytics
194
+ directory 'app/helpers/analytics', :if => 'analytics'
195
+ template 'app/helpers/analytics/google_helper.rb', :if => 'analytics.google'
208
196
  end
209
197
 
210
198
  end