roboparts 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 221763f716eabdbc3e35d7173bfc60a31707957a
4
- data.tar.gz: 834901f862a601498d76e8c0cc3502668d606093
3
+ metadata.gz: 9ef9f61be48e2e433742758f508a486a06c15117
4
+ data.tar.gz: 5222ad8ec73607c11cc48b0d60f49a15e71bc460
5
5
  SHA512:
6
- metadata.gz: 904ec21116f849099c37a212129b89c32edb8b4a2d412dd21e83269a1720bbcefb22140a4679ad27ab5ab0b438a2bb0780060d54d1d52304d75e59d95aa8e51e
7
- data.tar.gz: 08faacdb99bc75a209365b19e29b0a0c03a289c37219e77ae8489e0e5c22f733aa7545aa02707260061de85b87a43eaa974217604c404521f3bf9235794b98a9
6
+ metadata.gz: 31d09fa72833c2749d846abd563710e4d8b02a6c272f24b2950bc731ce27f4eef2381e5fa8998dc9ef4b12b9447b288a3c01126dffc65e6e0ee78bf88fc02551
7
+ data.tar.gz: cc72d10935fabdf0b9d5805f862d2d08b560891f4db07e93d9c943d9ff5a158dcec91db5d5541ca61dd5fb5d33a45895b084cf37b6ace52720e7aa568d8dbb76
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ .DS_Store
@@ -2,6 +2,11 @@ module Roboparts
2
2
  class AppBuilder < Rails::AppBuilder
3
3
  include Roboparts::Actions
4
4
 
5
+ # Readme
6
+ def readme
7
+ template 'README.md.erb', 'README.md'
8
+ end
9
+
5
10
  # Customize gemfile
6
11
  def replace_gemfile
7
12
  remove_file 'Gemfile'
@@ -27,7 +32,7 @@ module Roboparts
27
32
  end
28
33
 
29
34
  def provide_setup_script
30
- template 'bin_setup.erb', 'bin/setup', port_number: port, force: true
35
+ template 'bin_setup.erb', 'bin/setup', port_number: port
31
36
  run 'chmod a+x bin/setup'
32
37
  end
33
38
 
@@ -53,59 +58,7 @@ module Roboparts
53
58
  inject_into_class 'config/application.rb', 'Application', config
54
59
  end
55
60
 
56
- def use_postgres_config_template
57
- template 'postgresql_database.yml.erb', 'config/database.yml',
58
- force: true
59
- end
60
-
61
- def create_database
62
- bundle_command 'exec rake db:create db:migrate'
63
- end
64
-
65
- def raise_on_delivery_errors
66
- replace_in_file 'config/environments/development.rb',
67
- 'raise_delivery_errors = false', 'raise_delivery_errors = true'
68
- end
69
-
70
- def raise_on_unpermitted_parameters
71
- config = <<-RUBY
72
- config.action_controller.action_on_unpermitted_parameters = :raise
73
- RUBY
74
-
75
- inject_into_class "config/application.rb", "Application", config
76
- end
77
-
78
- def provide_setup_script
79
- template "bin_setup.erb", "bin/setup", port_number: port, force: true
80
- run "chmod a+x bin/setup"
81
- end
82
-
83
- def provide_dev_prime_task
84
- copy_file 'development_seeds.rb', 'lib/tasks/development_seeds.rake'
85
- end
86
-
87
- def configure_generators
88
- config = <<-RUBY
89
- config.generators do |generate|
90
- generate.helper false
91
- generate.javascript_engine false
92
- generate.request_specs false
93
- generate.routing_specs false
94
- generate.stylesheets false
95
- generate.test_framework :rspec
96
- generate.view_specs false
97
- end
98
-
99
- RUBY
100
-
101
- inject_into_class 'config/application.rb', 'Application', config
102
- end
103
-
104
- def configure_i18n_for_missing_translations
105
- raise_on_missing_translations_in("development")
106
- raise_on_missing_translations_in("test")
107
- end
108
-
61
+ # Setup test environment
109
62
  def setup_factory_girl_for_rspec
110
63
  copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
111
64
  end
@@ -135,19 +88,11 @@ module Roboparts
135
88
  empty_directory_with_keep_file 'spec/support/features'
136
89
  end
137
90
 
138
- def configure_i18n_for_test_environment
139
- copy_file "i18n.rb", "spec/support/i18n.rb"
140
- end
141
-
142
- def configure_18n_tasks
143
- run "cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/"
144
- copy_file "config_i18n_tasks.yml", "config/i18n-tasks.yml"
145
- end
146
-
147
91
  def configure_action_mailer_in_specs
148
92
  copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
149
93
  end
150
94
 
95
+ # Setup production environment
151
96
  def configure_smtp
152
97
  copy_file 'smtp.rb', 'config/smtp.rb'
153
98
 
@@ -155,8 +100,8 @@ module Roboparts
155
100
  %{require Rails.root.join("config/smtp")\n}
156
101
 
157
102
  config = <<-RUBY
158
- config.action_mailer.delivery_method = :smtp
159
- config.action_mailer.smtp_settings = SMTP_SETTINGS
103
+ config.action_mailer.delivery_method = :smtp
104
+ config.action_mailer.smtp_settings = SMTP_SETTINGS
160
105
  RUBY
161
106
 
162
107
  inject_into_file 'config/environments/production.rb', config,
@@ -165,29 +110,36 @@ module Roboparts
165
110
 
166
111
  def enable_rack_deflater
167
112
  config = <<-RUBY
168
- # Enable deflate / gzip compression of controller-generated responses
169
- config.middleware.use Rack::Deflater
113
+
114
+ # Enable deflate / gzip compression of controller-generated responses
115
+ config.middleware.use Rack::Deflater
170
116
  RUBY
171
117
 
172
- inject_into_file 'config/environments/production.rb', config,
173
- :after => "config.serve_static_assets = false\n"
118
+ inject_into_file(
119
+ "config/environments/production.rb",
120
+ config,
121
+ after: serve_static_files_line
122
+ )
174
123
  end
175
124
 
176
125
  def setup_asset_host
177
126
  replace_in_file 'config/environments/production.rb',
178
- "# config.action_controller.asset_host = 'http://assets.example.com'",
127
+ '# config.action_controller.asset_host = "http://assets.example.com"',
179
128
  'config.action_controller.asset_host = ENV.fetch("ASSET_HOST")'
180
129
 
181
130
  replace_in_file 'config/initializers/assets.rb',
182
- "config.assets.version = '1.0'",
183
- 'config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")'
131
+ "Rails.application.config.assets.version = '1.0'",
132
+ 'Rails.application.config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")'
184
133
 
185
- replace_in_file 'config/environments/production.rb',
186
- "config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?",
187
- 'config.static_cache_control = "public, max-age=#{1.year.to_i}"'
134
+ inject_into_file(
135
+ "config/environments/production.rb",
136
+ ' config.static_cache_control = "public, max-age=#{1.year.to_i}"',
137
+ after: serve_static_files_line
138
+ )
188
139
  end
189
140
 
190
- def setup_stagin_environment
141
+ # Setup staging environment
142
+ def setup_staging_environment
191
143
  staging_file = 'config/environments/staging.rb'
192
144
  copy_file 'staging.rb', staging_file
193
145
 
@@ -200,10 +152,12 @@ end
200
152
  append_file staging_file, config
201
153
  end
202
154
 
155
+ # Setup secret token
203
156
  def setup_secret_token
204
157
  template 'secrets.yml', 'config/secrets.yml', force: true
205
158
  end
206
159
 
160
+ # Create roboparts views
207
161
  def create_partials_directory
208
162
  empty_directory 'app/views/application'
209
163
  end
@@ -218,20 +172,23 @@ end
218
172
 
219
173
  def create_application_layout
220
174
  template 'roboparts_layout.html.erb.erb',
221
- 'app/views/layouts/application.html.erb', force: true
175
+ 'app/views/layouts/application.html.erb',
176
+ force: true
222
177
  end
223
178
 
179
+ # Setup coffeescript
224
180
  def remove_turbolinks
225
181
  replace_in_file 'app/assets/javascripts/application.js',
226
182
  /\/\/= require turbolinks\n/,
227
183
  ''
228
184
  end
229
185
 
186
+ # Configure app
230
187
  def configure_action_mailer
231
- action_mailer_host 'development', "localhost:#{port}"
232
- action_mailer_host 'test', 'www.example.com'
233
- action_mailer_host 'staging', "staging.#{app_name}.com"
234
- action_mailer_host 'production', "#{app_name}.com"
188
+ action_mailer_host "development", %{"localhost:#{port}"}
189
+ action_mailer_host "test", %{"www.example.com"}
190
+ action_mailer_host "staging", %{ENV.fetch("HOST")}
191
+ action_mailer_host "production", %{ENV.fetch("HOST")}
235
192
  end
236
193
 
237
194
  def configure_time_zone
@@ -251,6 +208,10 @@ end
251
208
  copy_file 'rack_timeout.rb', 'config/initializers/rack_timeout.rb'
252
209
  end
253
210
 
211
+ def configure_simple_form
212
+ bundle_command "exec rails generate simple_form:install"
213
+ end
214
+
254
215
  def disable_xml_params
255
216
  copy_file 'disable_xml_params.rb', 'config/initializers/disable_xml_params.rb'
256
217
  end
@@ -265,7 +226,7 @@ end
265
226
 
266
227
  def setup_default_rake_task
267
228
  append_file 'Rakefile' do
268
- <<-RUBY
229
+ <<-EOS
269
230
  task(:default).clear
270
231
  task default: [:spec]
271
232
 
@@ -275,7 +236,7 @@ if defined? RSpec
275
236
  t.verbose = false
276
237
  end
277
238
  end
278
- RUBY
239
+ EOS
279
240
  end
280
241
  end
281
242
 
@@ -283,12 +244,46 @@ end
283
244
  copy_file 'unicorn.rb', 'config/unicorn.rb'
284
245
  end
285
246
 
247
+ def setup_foreman
248
+ copy_file 'sample.env', '.sample.env'
249
+ copy_file 'Procfile', 'Procfile'
250
+ end
251
+
252
+ # Setup stylesheets
286
253
  def setup_stylesheets
287
254
  remove_file 'app/assets/stylesheets/application.css'
288
255
  copy_file 'application.css.scss',
289
256
  'app/assets/stylesheets/application.css.scss'
290
257
  end
291
258
 
259
+ # Copy miscellaneous files
260
+ def copy_miscellaneous_files
261
+ copy_file "errors.rb", "config/initializers/errors.rb"
262
+ copy_file "json_encoding.rb", "config/initializers/json_encoding.rb"
263
+ end
264
+
265
+ # Customize error pages
266
+ def customize_error_pages
267
+ meta_tags = <<-EOS
268
+ <meta charset="utf-8">
269
+ <meta name="ROBOTS" content="NOODP">
270
+ <meta name="viewport" content="initial-scale=1">
271
+ EOS
272
+
273
+ %w(500 404 422).each do |page|
274
+ inject_into_file "public/#{page}.html", meta_tags, :after => "<head>\n"
275
+ replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
276
+ end
277
+ end
278
+
279
+ # Remove routes comment lines
280
+ def remove_routes_comment_lines
281
+ replace_in_file 'config/routes.rb',
282
+ /Rails\.application\.routes\.draw do.*end/m,
283
+ "Rails.application.routes.draw do\nend"
284
+ end
285
+
286
+ # Setup git
292
287
  def gitignore_files
293
288
  remove_file '.gitignore'
294
289
  copy_file 'roboparts_gitignore', '.gitignore'
@@ -310,70 +305,50 @@ end
310
305
  run 'git init'
311
306
  end
312
307
 
308
+ # Setup database
309
+ def use_postgres_config_template
310
+ template 'postgresql_database.yml.erb', 'config/database.yml',
311
+ force: true
312
+ end
313
+
314
+ def create_database
315
+ bundle_command 'exec rake db:create db:migrate'
316
+ end
317
+
318
+ # Create GitHub repo
313
319
  def create_github_repo(repo_name)
314
320
  path_addition = override_path_for_tests
315
321
  run "#{path_addition} hub create #{repo_name}"
316
322
  end
317
323
 
324
+ # Setup Google Analytics
318
325
  def setup_google_analytics
319
326
  copy_file '_analytics.html.erb',
320
327
  'app/views/application/_analytics.html.erb'
321
328
  end
322
329
 
330
+ # Setup bundler-audit
323
331
  def setup_bundler_audit
324
332
  copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
325
333
  append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
326
334
  end
327
335
 
328
- def copy_miscellaneous_files
329
- copy_file "errors.rb", "config/initializers/errors.rb"
330
- copy_file "json_encoding.rb", "config/initializers/json_encoding.rb"
331
- end
332
-
333
- def customize_error_pages
334
- meta_tags = <<-RUBY
335
- <meta charset="utf-8" />
336
- <meta name="ROBOTS" content="NOODP" />
337
- <meta name="viewport" content="initial-scale=1" />
338
- RUBY
336
+ private
339
337
 
340
- %w(500 404 422).each do |page|
341
- inject_into_file "public/#{page}.html", meta_tags, :after => "<head>\n"
342
- replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
338
+ def override_path_for_tests
339
+ if ENV['TESTING']
340
+ support_bin = File.expand_path(File.join('..', '..', 'spec', 'fakes', 'bin'))
341
+ "PATH=#{support_bin}:$PATH"
343
342
  end
344
343
  end
345
344
 
346
- def remove_routes_comment_lines
347
- replace_in_file 'config/routes.rb',
348
- /Rails\.application\.routes\.draw do.*end/m,
349
- "Rails.application.routes.draw do\nend"
345
+ def port
346
+ @port ||= [3000, 4000, 5000, 7000, 8000, 9000].sample
350
347
  end
351
- end
352
-
353
- private
354
-
355
- def raise_on_missing_translations_in(environment)
356
- config = 'config.action_view.raise_on_missing_translations = true'
357
348
 
358
- uncomment_lines("config/environments/#{environment}.rb", config)
359
- end
360
-
361
- def override_path_for_tests
362
- if ENV["TESTING"]
363
- support_bin = File.expand_path(File.join('..', '..', 'spec', 'fakes', 'bin'))
364
- "PATH=#{support_bin}:$PATH"
349
+ def serve_static_files_line
350
+ "config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?\n"
365
351
  end
366
- end
367
-
368
- def factories_spec_rake_task
369
- IO.read find_in_source_paths('factories_spec_rake_task.rb')
370
- end
371
-
372
- def generate_secret
373
- SecureRandom.hex(64)
374
- end
375
352
 
376
- def port
377
- @port ||= [3000, 4000, 5000, 7000, 8000, 9000].sample
378
353
  end
379
354
  end
@@ -17,6 +17,23 @@ module Roboparts
17
17
  def roboparts_customization
18
18
  invoke :customize_gemfile
19
19
  invoke :setup_development_environment
20
+ invoke :setup_test_environment
21
+ invoke :setup_production_environment
22
+ invoke :setup_staging_environment
23
+ invoke :setup_secret_token
24
+ invoke :create_roboparts_views
25
+ invoke :setup_coffeescript
26
+ invoke :configure_app
27
+ invoke :setup_stylesheets
28
+ invoke :copy_miscellaneous_files
29
+ invoke :customize_error_pages
30
+ invoke :remove_routes_comment_lines
31
+ invoke :setup_git
32
+ invoke :setup_database
33
+ invoke :create_github_repo
34
+ invoke :setup_google_analytics
35
+ invoke :setup_bundler_audit
36
+ invoke :outro
20
37
  end
21
38
 
22
39
  def customize_gemfile
@@ -35,26 +52,6 @@ module Roboparts
35
52
  build :configure_generators
36
53
  end
37
54
 
38
- def setup_database
39
- say 'Setting up database'
40
-
41
- if 'postgresql' == options[:database]
42
- build :use_postgres_config_template
43
- end
44
-
45
- build :create_database
46
- end
47
-
48
- def setup_development_environment
49
- say 'Setting up the development environment'
50
- build :raise_on_delivery_errors
51
- build :raise_on_unpermitted_parameters
52
- build :provide_setup_script
53
- build :provide_dev_prime_task
54
- build :configure_generators
55
- build :configure_i18n_for_missing_translations
56
- end
57
-
58
55
  def setup_test_environment
59
56
  say 'Setting up test environment'
60
57
  build :setup_factory_girl_for_rspec
@@ -63,20 +60,18 @@ module Roboparts
63
60
  build :configure_background_jobs_for_rspec
64
61
  build :enable_database_cleaner
65
62
  build :configure_spec_support_features
66
- build :configure_i18n_for_test_environment
67
- build :configure_i18n_tasks
68
63
  build :configure_action_mailer_in_specs
69
64
  end
70
65
 
71
66
  def setup_production_environment
72
- say 'Setting up the production environment'
67
+ say 'Setting up production environment'
73
68
  build :configure_smtp
74
69
  build :enable_rack_deflater
75
70
  build :setup_asset_host
76
71
  end
77
72
 
78
73
  def setup_staging_environment
79
- say 'Setting up the staging environment'
74
+ say 'Setting up staging environment'
80
75
  build :setup_staging_environment
81
76
  end
82
77
 
@@ -104,10 +99,12 @@ module Roboparts
104
99
  build :configure_time_zone
105
100
  build :configure_time_formats
106
101
  build :configure_rack_timeout
102
+ build :configure_simple_form
107
103
  build :disable_xml_params
108
104
  build :fix_i18n_deprecation_warning
109
105
  build :setup_default_rake_task
110
106
  build :configure_unicorn
107
+ build :setup_foreman
111
108
  end
112
109
 
113
110
  def setup_stylesheets
@@ -115,6 +112,20 @@ module Roboparts
115
112
  build :setup_stylesheets
116
113
  end
117
114
 
115
+ def copy_miscellaneous_files
116
+ say 'Copying miscellaneous support files'
117
+ build :copy_miscellaneous_files
118
+ end
119
+
120
+ def customize_error_pages
121
+ say 'Customizing the 500/404/422 pages'
122
+ build :customize_error_pages
123
+ end
124
+
125
+ def remove_routes_comment_lines
126
+ build :remove_routes_comment_lines
127
+ end
128
+
118
129
  def setup_git
119
130
  if !options[:skip_git]
120
131
  say 'Initializing git'
@@ -131,6 +142,16 @@ module Roboparts
131
142
  build :init_git
132
143
  end
133
144
 
145
+ def setup_database
146
+ say 'Setting up database'
147
+
148
+ if 'postgresql' == options[:database]
149
+ build :use_postgres_config_template
150
+ end
151
+
152
+ build :create_database
153
+ end
154
+
134
155
  def create_github_repo
135
156
  if !options[:skip_git] && options[:github]
136
157
  say 'Creating GitHub repo'
@@ -144,26 +165,12 @@ module Roboparts
144
165
  end
145
166
 
146
167
  def setup_bundler_audit
147
- say "Setting up bundler-audit"
168
+ say 'Setting up bundler-audit'
148
169
  build :setup_bundler_audit
149
170
  end
150
171
 
151
- def copy_miscellaneous_files
152
- say 'Copying miscellaneous support files'
153
- build :copy_miscellaneous_files
154
- end
155
-
156
- def customize_error_pages
157
- say 'Customizing the 500/404/422 pages'
158
- build :customize_error_pages
159
- end
160
-
161
- def remove_routes_comment_lines
162
- build :remove_routes_comment_lines
163
- end
164
-
165
172
  def outro
166
- say "Nothing more to do... You're all set up!"
173
+ say 'All set up!'
167
174
  end
168
175
 
169
176
  protected
@@ -1,5 +1,5 @@
1
1
  module Roboparts
2
2
  RAILS_VERSION = "4.1.8"
3
3
  RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
4
- VERSION = "0.5.4"
4
+ VERSION = "0.6.0"
5
5
  end
@@ -3,22 +3,25 @@ require 'roboparts/version'
3
3
  require 'date'
4
4
 
5
5
  Gem::Specification.new do |s|
6
+ s.required_ruby_version = ">= #{Roboparts::RUBY_VERSION}"
6
7
  s.name = 'roboparts'
8
+ s.authors = ["Daniel Strunk"]
9
+ s.email = 'daniel@silentpost.co'
7
10
  s.date = Date.today.strftime('%Y-%m-%d')
11
+
8
12
  s.description = <<-RUBY
9
13
  Roboparts is a base Rails project that you can upgrade. It is used by SILENTPOST
10
14
  to get a jump start on a working app using preferred settings. It is heavily inspired
11
15
  by Thoughtbot's Suspenders, but is more tailored to small team development and
12
16
  has different preferences.
13
17
  RUBY
14
- s.summary = "A custom Rails project tailored to SILENTPOST's development standards"
15
- s.authors = ["Daniel Strunk"]
16
- s.email = 'daniel@silentpost.co'
17
- s.executables = ['roboparts']
18
+
19
+ s.summary = "A custom Rails app using SILENTPOST's development standards"
20
+ s.homepage = 'http://github.com/silentpost/roboparts'
21
+ s.license = 'MIT'
18
22
  s.require_paths = ['lib']
23
+ s.executables = ['roboparts']
19
24
  s.files = `git ls-files`.split("\n")
20
- s.homepage = 'http://silentpost.co/roboparts'
21
- s.license = 'MIT'
22
25
  s.version = Roboparts::VERSION
23
26
 
24
27
  s.add_dependency 'bundler', '~> 1.3'
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.expand_path(File.join('..', '..', 'support', 'fake_github'), File.dirname(__FILE__))
4
+
5
+ FakeGithub.new(ARGV).run!
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'GitHub' do
4
+ scenario 'build a project with --github option' do
5
+ repo_name = 'test'
6
+ run_roboparts("--github=#{repo_name}")
7
+
8
+ expect(FakeGithub).to have_created_repo(repo_name)
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ require 'capybara/rspec'
2
+ require 'bundler/setup'
3
+
4
+ Bundler.require(:default, :test)
5
+
6
+ require (Pathname.new(__FILE__).dirname + '../lib/roboparts').expand_path
7
+
8
+ Dir['./spec/support/**/*.rb'].each { |file| require file }
9
+
10
+ RSpec.configure do |config|
11
+ config.include RobopartsTestHelpers
12
+
13
+ config.before(:all) do
14
+ create_tmp_directory
15
+ end
16
+
17
+ config.before(:each) do
18
+ drop_dummy_database
19
+ remove_project_directory
20
+
21
+ FakeGithub.clear!
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ class FakeGithub
2
+ RECORDER = File.expand_path(File.join('..', '..', 'tmp', 'hub_commands'), File.dirname(__FILE__))
3
+
4
+ def initialize(args)
5
+ @args = args
6
+ end
7
+
8
+ def run!
9
+ File.open(RECORDER, 'a') do |file|
10
+ file.write @args.join(' ')
11
+ end
12
+ end
13
+
14
+ def self.clear!
15
+ FileUtils.rm_rf RECORDER
16
+ end
17
+
18
+ def self.has_created_repo?(repo_name)
19
+ File.read(RECORDER) == "create #{repo_name}"
20
+ end
21
+ end
@@ -0,0 +1,49 @@
1
+ module RobopartsTestHelpers
2
+ APP_NAME = 'dummy'
3
+
4
+ def remove_project_directory
5
+ FileUtils.rm_rf(project_path)
6
+ end
7
+
8
+ def create_tmp_directory
9
+ FileUtils.mkdir_p(tmp_path)
10
+ end
11
+
12
+ def run_roboparts(arguments = nil)
13
+ Dir.chdir(tmp_path) do
14
+ Bundler.with_clean_env do
15
+ ENV['TESTING'] = '1'
16
+
17
+ %x(#{roboparts_bin} #{APP_NAME} #{arguments})
18
+ end
19
+ end
20
+ end
21
+
22
+ def drop_dummy_database
23
+ if File.exist?(project_path)
24
+ Dir.chdir(project_path) do
25
+ Bundler.with_clean_env do
26
+ `rake db:drop`
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def project_path
33
+ @project_path ||= Pathname.new("#{tmp_path}/#{APP_NAME}")
34
+ end
35
+
36
+ private
37
+
38
+ def tmp_path
39
+ @tmp_path ||= Pathname.new("#{root_path}/tmp")
40
+ end
41
+
42
+ def roboparts_bin
43
+ File.join(root_path, 'bin', 'roboparts')
44
+ end
45
+
46
+ def root_path
47
+ File.expand_path('../../../', __FILE__)
48
+ end
49
+ end
@@ -13,7 +13,9 @@ gem "pg"
13
13
  gem "normalize-rails"
14
14
  gem "bourbon"
15
15
  gem "neat"
16
+ gem "title"
16
17
 
18
+ gem "rack-timeout"
17
19
  gem "delayed_job_active_record"
18
20
  gem "simple_form"
19
21
  gem "unicorn"
@@ -27,12 +29,13 @@ end
27
29
 
28
30
  group :development, :test do
29
31
  gem "bundler-audit", require: false
30
- gem "dotenv-rails"
31
32
  gem "factory_girl_rails"
32
33
  gem "rspec-rails"
33
34
  end
34
35
 
35
36
  group :test do
37
+ gem "capybara-webkit"
38
+ gem "database_cleaner"
36
39
  gem "shoulda-matchers"
37
40
  gem "timecop"
38
41
  end
@@ -0,0 +1,2 @@
1
+ web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
2
+ worker: bundle exec rake jobs:work
@@ -0,0 +1,17 @@
1
+ # <%= app_name.humanize %>
2
+
3
+ ## Getting started
4
+
5
+ After you've cloned this repo, run this setup script to set up your machine with the necessary dependencies to run and test this app:
6
+
7
+ % ./bin/setup
8
+
9
+ It assumes you have a machine equipped with Ruby, Postgres, etc.
10
+
11
+ After setting up, you can run the application using [foreman]:
12
+
13
+ % foreman start
14
+
15
+ If you don't have `foreman`, see [Foreman's install instructions][foreman].
16
+
17
+ [foreman]: https://github.com/ddollar/foreman
@@ -1,12 +1,11 @@
1
1
  <% if ENV["GOOGLE_ANALYTICS_KEY"] %>
2
- <script>
3
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
- })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
2
+ <script type="text/javascript">
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
7
7
 
8
- ga('create', '<%= ENV["GOOGLE_ANALYTICS_KEY"] %>', 'auto');
9
- ga('send', 'pageview');
10
-
11
- </script>
8
+ ga('create', '<%= ENV["GOOGLE_ANALYTICS_KEY"] %>', 'auto');
9
+ ga('send', 'pageview');
10
+ </script>
12
11
  <% end %>
@@ -1,4 +1,4 @@
1
- Rspec.configure do |config|
1
+ RSpec.configure do |config|
2
2
  config.before(:each) do
3
3
  ActionMailer::Base.deliveries.clear
4
4
  end
@@ -1,7 +1,7 @@
1
- @charset 'utf-8';
1
+ @charset "utf-8";
2
2
 
3
- @import 'normalize-rails';
4
- @import 'bourbon';
5
- @import 'base/grid-settings';
6
- @import 'neat';
7
- @import 'base/base';
3
+ @import "normalize-rails";
4
+ @import "bourbon";
5
+ @import "base/grid-settings";
6
+ @import "neat";
7
+ @import "base/base";
@@ -8,7 +8,7 @@ module BackgroundJobs
8
8
  end
9
9
  end
10
10
 
11
- Rspec.configure do |config|
11
+ RSpec.configure do |config|
12
12
  config.around(:each, type: :feature) do |example|
13
13
  run_background_jobs_immediately do
14
14
  example.run
@@ -5,6 +5,7 @@ en:
5
5
  "%m/%d/%Y"
6
6
  with_weekday:
7
7
  "%a %m/%d/%y"
8
+
8
9
  time:
9
10
  formats:
10
11
  default:
@@ -13,5 +14,6 @@ en:
13
14
  "%b %-d, %Y"
14
15
  short:
15
16
  "%B %d"
17
+
16
18
  titles:
17
19
  application: <%= app_name.humanize %>
@@ -1,4 +1,4 @@
1
- Rspec.configure do |config|
1
+ RSpec.configure do |config|
2
2
  config.before(:suite) do
3
3
  DatabaseCleaner.clean_with(:deletion)
4
4
  end
@@ -6,7 +6,7 @@ if Rails.env.development?
6
6
  task prime: "db:setup" do
7
7
  include FactoryGirl::Syntax::Methods
8
8
 
9
- # create(:user, email: "user@example.com", password: "hunter12")
9
+ # create(:user, email: "user@example.com", password: "password")
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
- Rspec.configure do |config|
1
+ RSpec.configure do |config|
2
2
  config.include FactoryGirl::Syntax::Methods
3
3
  end
@@ -12,11 +12,11 @@ module Features
12
12
  include Formulaic::Dsl
13
13
  end
14
14
 
15
- Rspec.configure do |config|
15
+ RSpec.configure do |config|
16
16
  config.include Features, type: :feature
17
17
  config.infer_base_class_for_anonymous_controllers = false
18
18
  config.infer_spec_type_from_file_location!
19
- config.use_transactional_fixtures = falsed
19
+ config.use_transactional_fixtures = false
20
20
  end
21
21
 
22
22
  ActiveRecord::Migration.maintain_test_schema!
@@ -9,5 +9,6 @@
9
9
  /db/*.sqlite3
10
10
  /log/*
11
11
  /public/system
12
+ /public/assets
12
13
  /tags
13
14
  /tmp/*
@@ -1,15 +1,15 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <meta charset="utf-8" />
5
- <meta name="ROBOTS" content="NOODP" />
6
- <meta name="viewport" content="initial-scale=1" />
4
+ <meta charset="utf-8">
5
+ <meta name="ROBOTS" content="NOODP">
6
+ <meta name="viewport" content="initial-scale=1">
7
7
  <title><%%= title %></title>
8
8
  <%%= stylesheet_link_tag :application, media: "all" %>
9
- <%%= csrf_meta_tags %>
9
+ <%%= crsf_meta_tags %>
10
10
  </head>
11
- <body class="<%%= body_class %>">
12
- <%%= render "flashes" -%>
11
+ <body class=<%%= body_class %>">
12
+ <%%= render "flashes" %>
13
13
  <%%= yield %>
14
14
  <%%= render "javascript" %>
15
15
  </body>
@@ -0,0 +1,3 @@
1
+ # http://ddollar.github.com/foreman/
2
+ RACK_ENV=development
3
+ SECRET_KEY_BASE=development_secret
@@ -1,5 +1,5 @@
1
1
  default: &default
2
- secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
2
+ secret_key_base: <%%= ENV["SECRET_KEY_BASE"] %>
3
3
 
4
4
  development:
5
5
  <<: *default
@@ -1,6 +1,7 @@
1
1
  require "webmock/rspec"
2
2
 
3
- Rspec.configure do |config|
3
+ # http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
4
+ RSpec.configure do |config|
4
5
  config.expect_with :rspec do |expectations|
5
6
  expectations.syntax = :expect
6
7
  end
@@ -1,10 +1,12 @@
1
+ # https://devcenter.heroku.com/articles/rails-unicorn
2
+
1
3
  worker_processes (ENV["UNICORN_WORKERS"] || 3).to_i
2
4
  timeout (ENV["UNICORN_TIMEOUT"] || 15).to_i
3
5
  preload_app true
4
6
 
5
- before_fork do |server, worker|
7
+ before_fork do |_server, _worker|
6
8
  Signal.trap "TERM" do
7
- puts "Unicorn master intercepting TERM and sending myself QUIT instead"
9
+ puts "Unicorn master intercepting TERM, sending myself QUIT instead"
8
10
  Process.kill "QUIT", Process.pid
9
11
  end
10
12
 
@@ -13,9 +15,9 @@ before_fork do |server, worker|
13
15
  end
14
16
  end
15
17
 
16
- after_fork do |server, worker|
18
+ after_fork do |_server, _worker|
17
19
  Signal.trap "TERM" do
18
- puts "Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT"
20
+ puts "Unicorn worker intercepting TERM, waiting for master to send QUIT"
19
21
  end
20
22
 
21
23
  if defined? ActiveRecord::Base
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roboparts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Strunk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-28 00:00:00.000000000 Z
11
+ date: 2015-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,7 +82,7 @@ executables:
82
82
  extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
- - ".DS_Store"
85
+ - ".gitignore"
86
86
  - ".ruby-version"
87
87
  - Gemfile
88
88
  - Gemfile.lock
@@ -91,14 +91,20 @@ files:
91
91
  - bin/rake
92
92
  - bin/roboparts
93
93
  - bin/rspec
94
- - bin/setup
95
94
  - lib/roboparts.rb
96
95
  - lib/roboparts/actions.rb
97
96
  - lib/roboparts/app_builder.rb
98
97
  - lib/roboparts/generators/app_generator.rb
99
98
  - lib/roboparts/version.rb
100
99
  - roboparts.gemspec
100
+ - spec/fakes/bin/hub
101
+ - spec/features/github_spec.rb
102
+ - spec/spec_helper.rb
103
+ - spec/support/fake_github.rb
104
+ - spec/support/roboparts.rb
101
105
  - templates/Gemfile.erb
106
+ - templates/Procfile
107
+ - templates/README.md.erb
102
108
  - templates/_analytics.html.erb
103
109
  - templates/_flashes.html.erb
104
110
  - templates/_javascript.html.erb
@@ -107,26 +113,25 @@ files:
107
113
  - templates/background_jobs_rspec.rb
108
114
  - templates/bin_setup.erb
109
115
  - templates/bundler_audit.rake
110
- - templates/config_i18n_tasks.yml
111
116
  - templates/config_locales_en.yml.erb
112
117
  - templates/database_cleaner_rspec.rb
113
118
  - templates/development_seeds.rb
114
119
  - templates/disable_xml_params.rb
115
120
  - templates/errors.rb
116
121
  - templates/factory_girl_rspec.rb
117
- - templates/i18n.rb
118
122
  - templates/json_encoding.rb
119
123
  - templates/postgresql_database.yml.erb
120
124
  - templates/rack_timeout.rb
121
125
  - templates/rails_helper.rb
122
126
  - templates/roboparts_gitignore
123
127
  - templates/roboparts_layout.html.erb.erb
128
+ - templates/sample.env
124
129
  - templates/secrets.yml
125
130
  - templates/smtp.rb
126
131
  - templates/spec_helper.rb
127
132
  - templates/staging.rb
128
133
  - templates/unicorn.rb
129
- homepage: http://silentpost.co/roboparts
134
+ homepage: http://github.com/silentpost/roboparts
130
135
  licenses:
131
136
  - MIT
132
137
  metadata: {}
@@ -138,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
143
  requirements:
139
144
  - - ">="
140
145
  - !ruby/object:Gem::Version
141
- version: '0'
146
+ version: 2.1.3
142
147
  required_rubygems_version: !ruby/object:Gem::Requirement
143
148
  requirements:
144
149
  - - ">="
@@ -149,5 +154,5 @@ rubyforge_project:
149
154
  rubygems_version: 2.2.2
150
155
  signing_key:
151
156
  specification_version: 4
152
- summary: A custom Rails project tailored to SILENTPOST's development standards
157
+ summary: A custom Rails app using SILENTPOST's development standards
153
158
  test_files: []
data/.DS_Store DELETED
Binary file
data/bin/setup DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- # Run this script immediately after cloning the codebase.
4
-
5
- # Exit if any subcommand fails
6
- set -e
7
-
8
- # Set up Ruby dependencies via Bundler
9
- bundle install
10
-
11
- # Add binstubs to PATH in ~/.zshenv like this:
12
- # export PATH=".git/safe/../../bin:$PATH"
13
- mkdir -p .git/safe
@@ -1,13 +0,0 @@
1
- search:
2
- paths:
3
- - "app/controllers"
4
- - "app/helpers"
5
- - "app/presenters"
6
- - "app/views"
7
-
8
- ignore_unused:
9
- - activerecord.*
10
- - date.*
11
- - simple_form.*
12
- - time.*
13
- - titles.*
@@ -1,3 +0,0 @@
1
- Rspec.configure do |config|
2
- config.include AbstractController::Translation
3
- end