gb-firestarter 0.0.1 → 0.1.0

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +19 -0
  5. data/CONTRIBUTING.md +38 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +133 -0
  8. data/README.md +7 -36
  9. data/Rakefile +8 -0
  10. data/bin/rspec +16 -0
  11. data/firestarter.gemspec +34 -0
  12. data/lib/firestarter/actions.rb +35 -0
  13. data/lib/firestarter/app_builder.rb +297 -0
  14. data/lib/firestarter/generators/app_generator.rb +186 -0
  15. data/lib/firestarter/version.rb +4 -0
  16. data/lib/firestarter.rb +4 -0
  17. data/spec/features/new_project_spec.rb +38 -0
  18. data/spec/spec_helper.rb +21 -0
  19. data/spec/support/firestarter.rb +49 -0
  20. data/templates/Gemfile.erb +55 -0
  21. data/templates/Procfile +1 -0
  22. data/templates/README.md.erb +25 -0
  23. data/templates/Rakefile.erb +10 -0
  24. data/templates/_flashes.slim +3 -0
  25. data/templates/_javascript.slim +9 -0
  26. data/templates/application.sass +3 -0
  27. data/templates/bin_setup +17 -0
  28. data/templates/config_locales_en.yml +11 -0
  29. data/templates/database_cleaner_rspec.rb +21 -0
  30. data/templates/development_seeds.rb +13 -0
  31. data/templates/disable_xml_params.rb +3 -0
  32. data/templates/errors.rb +28 -0
  33. data/templates/factories_spec.rb +13 -0
  34. data/templates/factories_spec_rake_task.rb +15 -0
  35. data/templates/factory_girl_syntax_rspec.rb +3 -0
  36. data/templates/firestarter_gitignore +18 -0
  37. data/templates/firestarter_layout.slim.erb +12 -0
  38. data/templates/i18n.rb +3 -0
  39. data/templates/postgresql_database.yml.erb +12 -0
  40. data/templates/puma.rb +18 -0
  41. data/templates/rack_timeout.rb +1 -0
  42. data/templates/ruby-version.erb +1 -0
  43. data/templates/sample.env +3 -0
  44. data/templates/secret_token.rb +10 -0
  45. data/templates/smtp.rb +10 -0
  46. data/templates/spec_helper.rb +42 -0
  47. data/templates/staging.rb +3 -0
  48. metadata +78 -38
@@ -0,0 +1,297 @@
1
+ module Firestarter
2
+ class AppBuilder < Rails::AppBuilder
3
+ include Firestarter::Actions
4
+
5
+ def readme
6
+ template 'README.md.erb', 'README.md'
7
+ end
8
+
9
+ def rakefile
10
+ template 'Rakefile.erb', 'Rakefile'
11
+ end
12
+
13
+ def raise_on_delivery_errors
14
+ replace_in_file 'config/environments/development.rb',
15
+ 'raise_delivery_errors = false', 'raise_delivery_errors = true'
16
+ end
17
+
18
+ def raise_on_unpermitted_parameters
19
+ action_on_unpermitted_parameters = <<-RUBY
20
+
21
+ # Raise an ActionController::UnpermittedParameters exception when
22
+ # a parameter is not explcitly permitted but is passed anyway.
23
+ config.action_controller.action_on_unpermitted_parameters = :raise
24
+ RUBY
25
+ inject_into_file(
26
+ "config/environments/development.rb",
27
+ action_on_unpermitted_parameters,
28
+ before: "\nend"
29
+ )
30
+ end
31
+
32
+ def provide_setup_script
33
+ remove_file 'bin/setup'
34
+ copy_file 'bin_setup', 'bin/setup'
35
+ run 'chmod a+x bin/setup'
36
+ end
37
+
38
+ def provide_dev_prime_task
39
+ copy_file 'development_seeds.rb', 'lib/tasks/development_seeds.rake'
40
+ end
41
+
42
+ def configure_generators
43
+ config = <<-RUBY
44
+ config.generators do |generate|
45
+ generate.helper false
46
+ generate.javascript_engine false
47
+ generate.request_specs false
48
+ generate.routing_specs false
49
+ generate.stylesheets false
50
+ generate.test_framework :rspec
51
+ generate.view_specs false
52
+ end
53
+
54
+ RUBY
55
+
56
+ inject_into_class 'config/application.rb', 'Application', config
57
+ end
58
+
59
+ def enable_factory_girl_syntax
60
+ copy_file 'factory_girl_syntax_rspec.rb', 'spec/support/factory_girl.rb'
61
+ end
62
+
63
+ def test_factories_first
64
+ copy_file 'factories_spec.rb', 'spec/models/factories_spec.rb'
65
+ append_file 'Rakefile', factories_spec_rake_task
66
+ end
67
+
68
+ def configure_smtp
69
+ copy_file 'smtp.rb', 'config/initializers/smtp.rb'
70
+
71
+ prepend_file 'config/environments/production.rb',
72
+ "require Rails.root.join('config/initializers/smtp')\n"
73
+
74
+ config = <<-RUBY
75
+
76
+ config.action_mailer.delivery_method = :smtp
77
+ config.action_mailer.smtp_settings = SMTP_SETTINGS
78
+ RUBY
79
+
80
+ inject_into_file 'config/environments/production.rb', config,
81
+ :after => 'config.action_mailer.raise_delivery_errors = false'
82
+ end
83
+
84
+ def enable_rack_deflater
85
+ config = <<-RUBY
86
+
87
+ # Enable deflate / gzip compression of controller-generated responses
88
+ config.middleware.use Rack::Deflater
89
+ RUBY
90
+
91
+ inject_into_file 'config/environments/production.rb', config,
92
+ :after => "config.serve_static_assets = false\n"
93
+ end
94
+
95
+ def setup_staging_environment
96
+ staging_file = 'config/environments/staging.rb'
97
+ copy_file 'staging.rb', staging_file
98
+
99
+ config = <<-RUBY
100
+
101
+ #{app_name.classify}::Application.configure do
102
+ # ...
103
+ end
104
+ RUBY
105
+
106
+ append_file staging_file, config
107
+ end
108
+
109
+ def setup_secret_token
110
+ template 'secret_token.rb',
111
+ 'config/initializers/secret_token.rb',
112
+ :force => true
113
+ end
114
+
115
+ def create_partials_directory
116
+ empty_directory 'app/views/application'
117
+ end
118
+
119
+ def create_shared_flashes
120
+ copy_file '_flashes.slim', 'app/views/application/_flashes.slim'
121
+ end
122
+
123
+ def create_shared_javascripts
124
+ copy_file '_javascript.slim', 'app/views/application/_javascript.slim'
125
+ end
126
+
127
+ def create_application_layout
128
+ remove_file 'app/views/layouts/application.html.erb'
129
+ template 'firestarter_layout.slim.erb',
130
+ 'app/views/layouts/application.slim',
131
+ force: true
132
+ end
133
+
134
+ def remove_turbolinks
135
+ replace_in_file 'app/assets/javascripts/application.js',
136
+ /\/\/= require turbolinks\n/,
137
+ ''
138
+ end
139
+
140
+ def use_postgres_config_template
141
+ template 'postgresql_database.yml.erb', 'config/database.yml',
142
+ force: true
143
+ end
144
+
145
+ def create_database
146
+ bundle_command 'exec rake db:create db:migrate'
147
+ end
148
+
149
+ def replace_gemfile
150
+ remove_file 'Gemfile'
151
+ template 'Gemfile.erb', 'Gemfile'
152
+ end
153
+
154
+ def set_ruby_to_version_being_used
155
+ template 'ruby-version.erb', '.ruby-version'
156
+ end
157
+
158
+ def enable_database_cleaner
159
+ copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
160
+ end
161
+
162
+ def configure_spec_support_features
163
+ empty_directory_with_keep_file 'spec/features'
164
+ empty_directory_with_keep_file 'spec/support/features'
165
+ end
166
+
167
+ def configure_rspec
168
+ remove_file 'spec/spec_helper.rb'
169
+ copy_file 'spec_helper.rb', 'spec/spec_helper.rb'
170
+ end
171
+
172
+ def configure_i18n_in_specs
173
+ copy_file 'i18n.rb', 'spec/support/i18n.rb'
174
+ end
175
+
176
+ def configure_time_zone
177
+ config = <<-RUBY
178
+ config.active_record.default_timezone = :utc
179
+
180
+ RUBY
181
+ inject_into_class 'config/application.rb', 'Application', config
182
+ end
183
+
184
+ def configure_time_formats
185
+ remove_file 'config/locales/en.yml'
186
+ copy_file 'config_locales_en.yml', 'config/locales/en.yml'
187
+ end
188
+
189
+ def configure_rack_timeout
190
+ copy_file 'rack_timeout.rb', 'config/initializers/rack_timeout.rb'
191
+ end
192
+
193
+ def configure_action_mailer
194
+ action_mailer_host 'development', "#{app_name}.local"
195
+ action_mailer_host 'test', 'www.example.com'
196
+ action_mailer_host 'staging', "staging.#{app_name}.com"
197
+ action_mailer_host 'production', "#{app_name}.com"
198
+ end
199
+
200
+ def fix_i18n_deprecation_warning
201
+ config = <<-RUBY
202
+ config.i18n.enforce_available_locales = true
203
+
204
+ RUBY
205
+ inject_into_class 'config/application.rb', 'Application', config
206
+ end
207
+
208
+ def generate_rspec
209
+ generate 'rspec:install'
210
+ end
211
+
212
+ def configure_puma
213
+ copy_file 'puma.rb', 'config/puma.rb'
214
+ end
215
+
216
+ def setup_foreman
217
+ copy_file 'sample.env', '.sample.env'
218
+ copy_file 'Procfile', 'Procfile'
219
+ end
220
+
221
+ def setup_stylesheets
222
+ remove_file 'app/assets/stylesheets/application.css'
223
+ copy_file 'application.sass',
224
+ 'app/assets/stylesheets/application.sass'
225
+ end
226
+
227
+ def gitignore_files
228
+ remove_file '.gitignore'
229
+ copy_file 'firestarter_gitignore', '.gitignore'
230
+ [
231
+ 'app/views/pages',
232
+ 'spec/lib',
233
+ 'spec/controllers',
234
+ 'spec/helpers',
235
+ 'spec/support/matchers',
236
+ 'spec/support/mixins',
237
+ 'spec/support/shared_examples'
238
+ ].each do |dir|
239
+ run "mkdir #{dir}"
240
+ run "touch #{dir}/.keep"
241
+ end
242
+ end
243
+
244
+ def init_git
245
+ run 'git init'
246
+ end
247
+
248
+ def copy_miscellaneous_files
249
+ copy_file 'errors.rb', 'config/initializers/errors.rb'
250
+ end
251
+
252
+ def customize_error_pages
253
+ meta_tags =<<-EOS
254
+ <meta charset='utf-8' />
255
+ <meta name='ROBOTS' content='NOODP' />
256
+ EOS
257
+
258
+ %w(500 404 422).each do |page|
259
+ inject_into_file "public/#{page}.html", meta_tags, :after => "<head>\n"
260
+ replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
261
+ end
262
+ end
263
+
264
+ def remove_routes_comment_lines
265
+ replace_in_file 'config/routes.rb',
266
+ /Rails.application\.routes\.draw do.*end/m,
267
+ "Rails.application.routes.draw do\nend"
268
+ end
269
+
270
+ def disable_xml_params
271
+ copy_file 'disable_xml_params.rb', 'config/initializers/disable_xml_params.rb'
272
+ end
273
+
274
+ def setup_default_rake_task
275
+ append_file 'Rakefile' do
276
+ "task(:default).clear\ntask :default => [:spec]\n"
277
+ end
278
+ end
279
+
280
+ private
281
+
282
+ def override_path_for_tests
283
+ if ENV['TESTING']
284
+ support_bin = File.expand_path(File.join('..', '..', 'spec', 'fakes', 'bin'))
285
+ "PATH=#{support_bin}:$PATH"
286
+ end
287
+ end
288
+
289
+ def factories_spec_rake_task
290
+ IO.read find_in_source_paths('factories_spec_rake_task.rb')
291
+ end
292
+
293
+ def generate_secret
294
+ SecureRandom.hex(64)
295
+ end
296
+ end
297
+ end
@@ -0,0 +1,186 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/rails/app/app_generator'
3
+
4
+ module Firestarter
5
+ class AppGenerator < Rails::Generators::AppGenerator
6
+ class_option :database, :type => :string, :aliases => '-d', :default => 'postgresql',
7
+ :desc => "Preconfigure for selected database (options: #{DATABASES.join('/')})"
8
+
9
+ class_option :github, :type => :string, :aliases => '-G', :default => nil,
10
+ :desc => 'Create Github repository and add remote origin pointed to repo'
11
+
12
+ class_option :skip_test_unit, :type => :boolean, :aliases => '-T', :default => true,
13
+ :desc => 'Skip Test::Unit files'
14
+
15
+ def finish_template
16
+ invoke :firestarter_customization
17
+ super
18
+ end
19
+
20
+ def firestarter_customization
21
+ invoke :customize_gemfile
22
+ invoke :setup_development_environment
23
+ invoke :setup_test_environment
24
+ invoke :setup_production_environment
25
+ invoke :setup_staging_environment
26
+ invoke :setup_secret_token
27
+ invoke :create_firestarter_views
28
+ invoke :setup_coffeescript
29
+ invoke :configure_app
30
+ invoke :setup_stylesheets
31
+ invoke :copy_miscellaneous_files
32
+ invoke :customize_error_pages
33
+ invoke :remove_routes_comment_lines
34
+ invoke :setup_git
35
+ invoke :setup_database
36
+ invoke :outro
37
+ end
38
+
39
+ def customize_gemfile
40
+ build :replace_gemfile
41
+ build :set_ruby_to_version_being_used
42
+ bundle_command 'install'
43
+ end
44
+
45
+ def setup_database
46
+ say 'Setting up database'
47
+
48
+ if 'postgresql' == options[:database]
49
+ build :use_postgres_config_template
50
+ end
51
+
52
+ build :create_database
53
+ end
54
+
55
+ def setup_development_environment
56
+ say 'Setting up the development environment'
57
+ build :raise_on_delivery_errors
58
+ build :raise_on_unpermitted_parameters
59
+ build :provide_setup_script
60
+ build :provide_dev_prime_task
61
+ build :configure_generators
62
+ end
63
+
64
+ def setup_test_environment
65
+ say 'Setting up the test environment'
66
+ build :enable_factory_girl_syntax
67
+ build :test_factories_first
68
+ build :generate_rspec
69
+ build :configure_rspec
70
+ build :enable_database_cleaner
71
+ build :configure_spec_support_features
72
+ build :configure_i18n_in_specs
73
+ end
74
+
75
+ def setup_production_environment
76
+ say 'Setting up the production environment'
77
+ build :configure_smtp
78
+ build :enable_rack_deflater
79
+ end
80
+
81
+ def setup_staging_environment
82
+ say 'Setting up the staging environment'
83
+ build :setup_staging_environment
84
+ end
85
+
86
+ def setup_secret_token
87
+ say 'Moving secret token out of version control'
88
+ build :setup_secret_token
89
+ end
90
+
91
+ def create_firestarter_views
92
+ say 'Creating firestarter views'
93
+ build :create_partials_directory
94
+ build :create_shared_flashes
95
+ build :create_shared_javascripts
96
+ build :create_application_layout
97
+ end
98
+
99
+ def setup_coffeescript
100
+ say 'Setting up CoffeeScript defaults'
101
+ build :remove_turbolinks
102
+ end
103
+
104
+ def configure_app
105
+ say 'Configuring app'
106
+ build :configure_action_mailer
107
+ build :configure_time_zone
108
+ build :configure_time_formats
109
+ build :configure_rack_timeout
110
+ build :disable_xml_params
111
+ build :fix_i18n_deprecation_warning
112
+ build :setup_default_rake_task
113
+ build :configure_puma
114
+ build :setup_foreman
115
+ end
116
+
117
+ def setup_stylesheets
118
+ say 'Set up stylesheets'
119
+ build :setup_stylesheets
120
+ end
121
+
122
+ def setup_git
123
+ if !options[:skip_git]
124
+ say 'Initializing git'
125
+ invoke :setup_gitignore
126
+ invoke :init_git
127
+ end
128
+ end
129
+
130
+ def setup_gitignore
131
+ build :gitignore_files
132
+ end
133
+
134
+ def init_git
135
+ build :init_git
136
+ end
137
+
138
+ def copy_miscellaneous_files
139
+ say 'Copying miscellaneous support files'
140
+ build :copy_miscellaneous_files
141
+ end
142
+
143
+ def customize_error_pages
144
+ say 'Customizing the 500/404/422 pages'
145
+ build :customize_error_pages
146
+ end
147
+
148
+ def remove_routes_comment_lines
149
+ build :remove_routes_comment_lines
150
+ end
151
+
152
+ def outro
153
+ say 'Congratulations! You just started a fire.'
154
+ end
155
+
156
+ def run_bundle
157
+ # Let's not: We'll bundle manually at the right spot
158
+ end
159
+
160
+ def ruby_version_with_patch_level
161
+ "#{RUBY_VERSION}#{patch_level}"
162
+ end
163
+
164
+ protected
165
+
166
+ def get_builder_class
167
+ Firestarter::AppBuilder
168
+ end
169
+
170
+ def using_active_record?
171
+ !options[:skip_active_record]
172
+ end
173
+
174
+ def patch_level
175
+ if RUBY_PATCHLEVEL == 0 && RUBY_VERSION >= '2.1.0'
176
+ ''
177
+ else
178
+ "-p#{RUBY_PATCHLEVEL}"
179
+ end
180
+ end
181
+
182
+ def spring_install?
183
+ false
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,4 @@
1
+ module Firestarter
2
+ RAILS_VERSION = ENV['RAILS_VERSION'] || '4.1.8'
3
+ VERSION = '0.1.0'
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'firestarter/generators/app_generator'
2
+ require 'firestarter/actions'
3
+ require 'firestarter/app_builder'
4
+ require 'firestarter/version'
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Suspend a new project with default configuration' do
4
+ scenario 'specs pass' do
5
+ run_firestarter
6
+
7
+ Dir.chdir(project_path) do
8
+ Bundler.with_clean_env do
9
+ expect(`rake`).to include('0 failures')
10
+ end
11
+ end
12
+ end
13
+
14
+ scenario 'staging config is inherited from production' do
15
+ run_firestarter
16
+
17
+ staging_file = IO.read("#{project_path}/config/environments/staging.rb")
18
+ config_stub = "Dummy::Application.configure do"
19
+ expect(staging_file).to match(/^require_relative 'production'/)
20
+ expect(staging_file).to match(/#{config_stub}/), staging_file
21
+ end
22
+
23
+ if RUBY_PATCHLEVEL == 0 && RUBY_VERSION >= '2.1.0'
24
+ scenario '.ruby-version does not include patchlevel for Ruby 2.1.0+' do
25
+ run_firestarter
26
+
27
+ ruby_version_file = IO.read("#{project_path}/.ruby-version")
28
+ expect(ruby_version_file).to eq "#{RUBY_VERSION}\n"
29
+ end
30
+ else
31
+ scenario '.ruby-version includes patchlevel for all pre-Ruby 2.1.0 versions' do
32
+ run_firestarter
33
+
34
+ ruby_version_file = IO.read("#{project_path}/.ruby-version")
35
+ expect(ruby_version_file).to eq "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}\n"
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,21 @@
1
+ require 'capybara/rspec'
2
+ require 'bundler/setup'
3
+
4
+ Bundler.require(:default, :test)
5
+
6
+ require (Pathname.new(__FILE__).dirname + '../lib/firestarter').expand_path
7
+
8
+ Dir['./spec/support/**/*.rb'].each { |file| require file }
9
+
10
+ RSpec.configure do |config|
11
+ config.include FirestarterTestHelpers
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
+ end
21
+ end
@@ -0,0 +1,49 @@
1
+ module FirestarterTestHelpers
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_firestarter(arguments = nil)
13
+ Dir.chdir(tmp_path) do
14
+ Bundler.with_clean_env do
15
+ ENV['TESTING'] = '1'
16
+
17
+ %x(#{firestarter_bin} #{APP_NAME} #{arguments})
18
+ end
19
+ end
20
+ end
21
+
22
+ def drop_dummy_database
23
+ if File.exists?(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 firestarter_bin
43
+ File.join(root_path, 'bin', 'firestarter')
44
+ end
45
+
46
+ def root_path
47
+ File.expand_path('../../../', __FILE__)
48
+ end
49
+ end
@@ -0,0 +1,55 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ruby '<%= RUBY_VERSION %>'
4
+
5
+ gem 'bourbon'
6
+ gem 'coffee-rails'
7
+ gem 'dotenv-rails'
8
+ gem 'email_validator'
9
+ gem 'foreman'
10
+ gem 'jquery-rails'
11
+ gem 'pg'
12
+ gem 'pry-rails'
13
+ gem 'puma'
14
+ gem 'rack-timeout'
15
+ gem 'rails', '~> <%= Firestarter::RAILS_VERSION %>'
16
+ gem 'recipient_interceptor'
17
+ gem 'sass-rails'
18
+ gem 'slim-rails'
19
+ gem 'title'
20
+ gem 'uglifier'
21
+
22
+ group :development do
23
+ gem 'better_errors'
24
+ gem 'binding_of_caller'
25
+ gem 'letter_opener'
26
+ end
27
+
28
+ group :development, :test do
29
+ gem 'awesome_print'
30
+ gem 'factory_girl_rails'
31
+ gem 'rspec-rails', '~> 3.0'
32
+ end
33
+
34
+ group :test do
35
+ gem 'capybara-webkit', '>= 1.0.0'
36
+ gem 'database_cleaner'
37
+ gem 'launchy'
38
+ gem 'simplecov', require: false
39
+ gem 'timecop'
40
+ gem 'webmock'
41
+ gem 'rubocop', require: false
42
+ end
43
+
44
+ group :production, :staging do
45
+ gem 'rails_12factor'
46
+ end
47
+
48
+ group :deploy do
49
+ gem 'capistrano', '~> 3.2.1', require: false
50
+ gem 'capistrano-rails', require: false
51
+ gem 'capistrano-rvm', require: false
52
+ gem 'capistrano-bundler', require: false
53
+ gem 'capistrano3-env', require: false
54
+ gem 'capistrano-foreman', github: 'groupbuddies/capistrano-foreman', branch: :master
55
+ end
@@ -0,0 +1 @@
1
+ web: bundle exec puma -C config/puma.rb
@@ -0,0 +1,25 @@
1
+ <%= app_name.humanize %>
2
+ <%= '=' * app_name.humanize.length %>
3
+
4
+ Getting Started
5
+ ---------------
6
+
7
+ This repository comes equipped with a self-setup script:
8
+
9
+ % ./bin/setup
10
+
11
+ After setting up, you can run the application using [foreman]:
12
+
13
+ % foreman start
14
+
15
+ [foreman]: http://ddollar.github.io/foreman/
16
+
17
+ Guidelines
18
+ ----------
19
+
20
+ Use the following guides for getting things done, programming well, and
21
+ programming in style.
22
+
23
+ * [Protocol](http://github.com/groupbuddies/guides/blob/master/protocol)
24
+ * [Best Practices](http://github.com/groupbuddies/guides/blob/master/best-practices)
25
+ * [Style](http://github.com/groupbuddies/guides/blob/master/style)
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../config/application', __FILE__)
2
+ Rails.application.load_tasks
3
+
4
+ if %w(development test).include? Rails.env
5
+ require 'rubocop/rake_task'
6
+ RuboCop::RakeTask.new
7
+
8
+ task(:default).clear
9
+ task default: [:rubocop, :spec]
10
+ end
@@ -0,0 +1,3 @@
1
+ #flash
2
+ - flash.each do |key, value|
3
+ #flash_#{key} = value