pah 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +47 -0
  4. data/CONTRIBUTING.md +6 -31
  5. data/README.md +17 -2
  6. data/bin/pah +2 -1
  7. data/lib/pah/files/.env +1 -0
  8. data/lib/pah/files/Gemfile +35 -28
  9. data/lib/pah/files/Procfile +1 -1
  10. data/lib/pah/files/README.md +15 -9
  11. data/lib/pah/files/app/assets/javascripts/application.js +6 -6
  12. data/lib/pah/files/app/assets/stylesheets/application.scss +4 -6
  13. data/lib/pah/files/app/assets/stylesheets/general.scss +38 -5
  14. data/lib/pah/files/app/views/layouts/application.html.haml +16 -14
  15. data/lib/pah/files/config/initializers/bullet.rb +14 -0
  16. data/lib/pah/files/config/initializers/database_connection.rb +12 -0
  17. data/lib/pah/files/config/initializers/rack_timeout.rb +1 -0
  18. data/lib/pah/files/config/locales/app.pt-BR.yml +13 -0
  19. data/lib/pah/files/config/locales/pt-BR.yml +21 -6
  20. data/lib/pah/files/config/locales/simple_form.pt-BR.yml +25 -0
  21. data/lib/pah/files/lib/tasks/jumpup.rake +3 -6
  22. data/lib/pah/files/public/404.html +69 -0
  23. data/lib/pah/files/public/500.html +59 -0
  24. data/lib/pah/files/spec/acceptance/dummy_spec.rb +1 -1
  25. data/lib/pah/files/spec/support/acceptance_helpers.rb +2 -2
  26. data/lib/pah/files/spec/support/acceptance_macros.rb +4 -4
  27. data/lib/pah/files/spec/support/capybara.rb +1 -1
  28. data/lib/pah/files/spec/support/database_cleaner.rb +18 -0
  29. data/lib/pah/files/spec/support/factory_girl.rb +10 -0
  30. data/lib/pah/files/spec/support/vcr.rb +6 -7
  31. data/lib/pah/partials/_assets.rb +4 -5
  32. data/lib/pah/partials/_bullet.rb +6 -0
  33. data/lib/pah/partials/_canonical_host.rb +2 -5
  34. data/lib/pah/partials/_capybara.rb +2 -5
  35. data/lib/pah/partials/_cleanup.rb +3 -11
  36. data/lib/pah/partials/_database.rb +5 -7
  37. data/lib/pah/partials/_gems.rb +4 -6
  38. data/lib/pah/partials/_generators.rb +2 -5
  39. data/lib/pah/partials/_git.rb +2 -6
  40. data/lib/pah/partials/_heroku.rb +11 -8
  41. data/lib/pah/partials/_jumpup.rb +3 -7
  42. data/lib/pah/partials/_layout.rb +4 -5
  43. data/lib/pah/partials/_letter_opener.rb +2 -5
  44. data/lib/pah/partials/_locale.rb +6 -7
  45. data/lib/pah/partials/_public.rb +9 -4
  46. data/lib/pah/partials/_puma.rb +4 -0
  47. data/lib/pah/partials/_rack_timeout.rb +4 -0
  48. data/lib/pah/partials/_readme.rb +2 -6
  49. data/lib/pah/partials/_rollbar.rb +5 -0
  50. data/lib/pah/partials/_rspec.rb +12 -8
  51. data/lib/pah/partials/_ruby_env.rb +6 -10
  52. data/lib/pah/partials/_secret_token.rb +3 -7
  53. data/lib/pah/partials/_secure_headers.rb +3 -5
  54. data/lib/pah/partials/_simple_form.rb +11 -0
  55. data/lib/pah/template.rb +35 -26
  56. data/lib/pah/version.rb +2 -1
  57. data/pah.gemspec +2 -2
  58. metadata +20 -10
  59. data/lib/pah/files/config/unicorn.rb +0 -43
  60. data/lib/pah/files/spec/support/omniauth.rb +0 -27
  61. data/lib/pah/files/spec/support/paperclip.rb +0 -4
  62. data/lib/pah/partials/_unicorn.rb +0 -33
@@ -1,12 +1,4 @@
1
- puts "Removing unnecessary files ... ".magenta
1
+ git rm: "README.rdoc"
2
+ git rm: "app/views/layouts/application.html.erb"
2
3
 
3
- remove_file "README.rdoc"
4
- remove_file "app/views/layouts/application.html.erb"
5
-
6
- inside "public" do
7
- remove_file "robots.txt"
8
- end
9
-
10
- git :add => '--all'
11
- git :commit => "-aqm 'Removed unnecessary files left over from initial app generation.'"
12
- puts "\n"
4
+ git_commit 'Remove unnecessary files left over from initial app generation.'
@@ -1,13 +1,11 @@
1
1
  copy_static_file 'config/database.yml'
2
2
  gsub_file 'config/database.yml', /PROJECT/, @app_name
3
- git :add => 'config/database.yml'
4
- git :commit => "-qm 'Adding config/database.yml.'"
3
+ git add: 'config/database.yml'
4
+ git_commit 'Add config/database.yml.'
5
5
 
6
6
  in_root do
7
- run "rake db:create db:migrate db:test:clone"
7
+ run "bundle exec rake db:create db:migrate db:test:clone"
8
8
  end
9
9
 
10
- git :add => 'db/schema.rb'
11
- git :commit => "-qm 'Create database, adding db/schema.rb.'"
12
-
13
- puts "\n"
10
+ git add: 'db/schema.rb'
11
+ git_commit 'Create database, adding db/schema.rb.'
@@ -1,8 +1,8 @@
1
- puts "Setting up bundler and installing bundled gems (may take a while) ... ".magenta
2
-
3
1
  copy_static_file 'Gemfile'
4
2
 
5
3
  in_root do
4
+ gsub_file 'Gemfile', /RAILS_VERSION/, ::Pah::RAILS_VERSION
5
+
6
6
  # Since the gemset is likely empty, manually install bundler so it can install the rest
7
7
  run "gem install bundler --no-ri --no-rdoc"
8
8
 
@@ -10,7 +10,5 @@ in_root do
10
10
  run "bundle install"
11
11
  end
12
12
 
13
- git :add => 'Gemfile'
14
- git :add => 'Gemfile.lock'
15
- git :commit => "-qm 'Add Gemfile and Gemfile.lock.'"
16
- puts "\n"
13
+ git add: 'Gemfile*'
14
+ git_commit 'Add Gemfile and Gemfile.lock.'
@@ -1,5 +1,3 @@
1
- puts "Adding generators... ".magenta
2
-
3
1
  generators = <<GENERATORS
4
2
 
5
3
  # Do not generate specs for views and requests. Also, do not generate assets.
@@ -21,6 +19,5 @@ in_root do
21
19
  inject_into_file 'config/application.rb', generators, {after: "Rails::Application", verbose: false}
22
20
  end
23
21
 
24
- git :add => 'config/application.rb'
25
- git :commit => "-qm 'Adding generators.'"
26
-
22
+ git add: 'config/application.rb'
23
+ git_commit 'Add generators.'
@@ -1,9 +1,5 @@
1
- puts "Initializing new Git repo ...".magenta
2
-
3
1
  copy_static_file '.gitignore'
4
2
 
5
3
  git :init
6
- git :add => "--all"
7
- git :commit => "-aqm 'Initial commit.'"
8
-
9
- puts "\n"
4
+ git add: '--all'
5
+ git_commit 'Initial commit.'
@@ -1,5 +1,5 @@
1
1
  class HerokuApp < Rails::Generators::AppGenerator
2
- DEFAULT_ADDONS = %w(pgbackups:auto-month loggly:mole sendgrid:starter)
2
+ DEFAULT_ADDONS = %w(heroku-postgresql:dev pgbackups:auto-month loggly:mole sendgrid:starter rollbar)
3
3
 
4
4
  attr_reader :name, :description, :config
5
5
 
@@ -12,6 +12,7 @@ class HerokuApp < Rails::Generators::AppGenerator
12
12
  add_timezone_config
13
13
  add_addons
14
14
  add_heroku_git_remote
15
+ add_rollbar_initialize_file
15
16
  check_canonical_domain
16
17
  check_collaborators
17
18
  end
@@ -50,12 +51,17 @@ class HerokuApp < Rails::Generators::AppGenerator
50
51
 
51
52
  def open
52
53
  say "Pushing application to heroku...".magenta
53
-
54
+
54
55
  system "git push heroku master"
55
56
 
56
57
  system "heroku open --app #{name}"
57
58
  end
58
59
 
60
+ def add_rollbar_initialize_file
61
+ say "Adding rollbar to initializers".magenta
62
+ system "bundle exec rails generate rollbar"
63
+ end
64
+
59
65
  private
60
66
  def check_canonical_domain
61
67
  domain = @config[:heroku][:domain]
@@ -71,15 +77,12 @@ class HerokuApp < Rails::Generators::AppGenerator
71
77
  end
72
78
  end
73
79
 
74
- say "Configuring Heroku application...".magenta
75
-
76
80
  copy_static_file 'Procfile'
77
- git :add => 'Procfile'
78
- git :commit => "-qm 'Add Procfile'"
81
+ git add: 'Procfile'
82
+ git_commit 'Add Procfile'
79
83
 
80
84
  if @config[:heroku][:create?]
81
-
82
85
  production_app = HerokuApp.new @config
83
-
84
86
  production_app.open if @config[:heroku][:deploy?]
87
+ apply_n :rollbar, 'Setting up rollbar...'
85
88
  end
@@ -1,12 +1,8 @@
1
- puts "Setting up Jumpup... ".magenta
2
-
3
1
  copy_static_file 'lib/tasks/jumpup.rake'
4
2
  copy_static_file 'config/initializers/jumpup_heroku.rb'
5
3
 
6
4
  gsub_file 'config/initializers/jumpup_heroku.rb', /PROJECT/, (@config[:heroku][:name] || @app_name)
7
5
 
8
- git :add => 'lib/tasks/jumpup.rake'
9
- git :add => 'config/initializers/jumpup_heroku.rb'
10
- git :commit => "-qm 'Adding jumpup tasks and configuration.'"
11
-
12
- puts "\n"
6
+ git add: 'lib/tasks/jumpup.rake'
7
+ git add: 'config/initializers/jumpup_heroku.rb'
8
+ git_commit 'Add jumpup tasks and configuration.'
@@ -1,9 +1,8 @@
1
- puts "Adding layout files ...".magenta
2
-
3
1
  copy_static_file 'app/views/layouts/application.html.haml'
4
2
  copy_static_file 'app/views/application/_error_messages.html.haml'
5
3
  copy_static_file 'app/views/application/_flash_messages.html.haml'
6
4
 
7
- git :add => '.'
8
- git :commit => "-aqm 'Add layout files.'"
9
- puts "\n"
5
+ gsub_file 'app/views/layouts/application.html.haml', /= page_title(app_name: 'example')/, "= page_title(app_name: '#{@app_name}')"
6
+
7
+ git add: 'app/views/'
8
+ git_commit 'Add layout files.'
@@ -1,5 +1,3 @@
1
- puts "Adding letter_opener... ".magenta
2
-
3
1
  letter_opener_config = <<LETTER_OPENER
4
2
 
5
3
  # Letter openner config
@@ -11,6 +9,5 @@ in_root do
11
9
  inject_into_file 'config/environments/development.rb', letter_opener_config, { before: /^end/, verbose: false }
12
10
  end
13
11
 
14
- git :add => 'config/environments/development.rb'
15
- git :commit => "-qm 'Adding letter_opener config.'"
16
-
12
+ git add: 'config/environments/development.rb'
13
+ git_commit 'Add letter_opener config.'
@@ -1,8 +1,8 @@
1
- puts "Adding locale... ".magenta
2
-
3
1
  copy_static_file 'config/locales/pt-BR.yml'
4
- git :add => 'config/locales/pt-BR.yml'
5
- git :commit => "-qm 'Add pt-BR locale.'"
2
+ copy_static_file 'config/locales/app.pt-BR.yml'
3
+
4
+ git add: 'config/locales/*.yml'
5
+ git_commit 'Add pt-BR locale files.'
6
6
 
7
7
  time_zone_config = <<TIME_ZONE
8
8
 
@@ -24,6 +24,5 @@ in_root do
24
24
  inject_into_file 'config/application.rb', locale_config, { after: "# config.i18n.default_locale = :de", verbose: false }
25
25
  end
26
26
 
27
- git :add => 'config/application.rb'
28
- git :commit => "-qm 'Adding locale config.'"
29
-
27
+ git add: 'config/application.rb'
28
+ git_commit 'Add locale config.'
@@ -1,11 +1,16 @@
1
- puts "Adding public files ...".magenta
2
-
3
1
  inside "public" do
4
2
  remove_file "robots.txt"
3
+ remove_file "404.html"
4
+ remove_file "500.html"
5
5
  end
6
6
 
7
7
  copy_static_file 'public/robots.txt'
8
+ copy_static_file 'public/404.html'
9
+ copy_static_file 'public/500.html'
10
+
11
+ git add: 'public/robots.txt'
12
+ git add: 'public/404.html'
13
+ git add: 'public/500.html'
8
14
 
9
- git :add => '--all'
10
- git :commit => "-aqm 'Add public files.'"
15
+ git_commit 'Add public files.'
11
16
  puts "\n"
@@ -0,0 +1,4 @@
1
+ copy_static_file 'config/initializers/database_connection.rb'
2
+
3
+ git add: 'config/initializers/database_connection.rb'
4
+ git_commit 'Configure Puma.'
@@ -0,0 +1,4 @@
1
+ copy_static_file 'config/initializers/rack_timeout.rb'
2
+
3
+ git add: 'config/initializers/rack_timeout.rb'
4
+ git_commit 'Add Rack::Timeout configuration.'
@@ -1,9 +1,5 @@
1
- puts "Adding default README... ".magenta
2
-
3
1
  copy_static_file 'README.md'
4
2
  gsub_file 'README.md', /PROJECT/, @app_name
5
3
 
6
- git :add => 'README.md'
7
- git :commit => "-qm 'Adding README file.'"
8
-
9
- puts "\n"
4
+ git add: 'README.md'
5
+ git_commit 'Add README file.'
@@ -0,0 +1,5 @@
1
+ gsub_file 'config/initializers/rollbar.rb', /Rails\.env\.test\?/, "Rails.env.production?"
2
+ gsub_file 'config/initializers/rollbar.rb', /config\.enabled = false/, "config.enabled = true"
3
+
4
+ git add: 'config/initializers/rollbar.rb'
5
+ git_commit 'Add rollbar initialize file.'
@@ -1,13 +1,17 @@
1
- puts "Setting up RSpec ... ".magenta
2
-
3
- remove_dir 'test'
4
-
5
1
  copy_static_file 'spec/spec_helper.rb'
6
2
 
7
- %w{vcr.rb deferred_garbage_collection.rb http_basic_auth.rb matchers.rb uploaded_file.rb suppress_log.rb}.each do |component|
3
+ %w{
4
+ database_cleaner.rb
5
+ deferred_garbage_collection.rb
6
+ factory_girl.rb
7
+ http_basic_auth.rb
8
+ matchers.rb
9
+ suppress_log.rb
10
+ uploaded_file.rb
11
+ vcr.rb
12
+ }.each do |component|
8
13
  copy_static_file "spec/support/#{component}"
9
14
  end
10
15
 
11
- git :add => '--all'
12
- git :commit => "-aqm 'Configured RSpec.'"
13
- puts "\n"
16
+ git add: 'spec'
17
+ git_commit 'Add RSpec support files'
@@ -1,6 +1,4 @@
1
- puts "Setting up ruby env ... ".magenta
2
-
3
- current_ruby = 'ruby-2.1.0'
1
+ current_ruby = '2.1.1'
4
2
  current_gemset = @app_name
5
3
 
6
4
  copy_static_file '.ruby-version'
@@ -9,12 +7,10 @@ gsub_file '.ruby-version', /RUBY_VERSION/, current_ruby
9
7
  copy_static_file '.ruby-gemset'
10
8
  gsub_file '.ruby-gemset', /GEMSET/, current_gemset
11
9
 
12
- git :add => '.ruby-version'
13
- git :add => '.ruby-gemset'
14
- git :commit => "-qm 'Add .ruby-version and .ruby-gemset'"
10
+ git add: '.ruby-version'
11
+ git add: '.ruby-gemset'
12
+ git_commit 'Add .ruby-version and .ruby-gemset'
15
13
 
16
14
  copy_static_file '.env'
17
- git :add => '.env'
18
- git :commit => "-qm 'Add .env file'"
19
-
20
- puts "\n"
15
+ git add: '.env'
16
+ git_commit 'Add .env file'
@@ -1,5 +1,3 @@
1
- puts "Replacing secret token with environment variable...".magenta
2
-
3
1
  in_root do
4
2
  append_to_file '.env', "SECRET_TOKEN: #{SecureRandom::hex(60)}\n"
5
3
 
@@ -7,8 +5,6 @@ in_root do
7
5
  gsub_file 'config/initializers/secret_token.rb', /config.secret_key_base = '(.*?)'/, "config.secret_key_base = ENV['SECRET_TOKEN']"
8
6
  end
9
7
 
10
- git :add => 'config/initializers/secret_token.rb'
11
- git :add => '.env'
12
- git :commit => "-qm 'Replace secret token with environment variable.'"
13
-
14
- puts "\n"
8
+ git add: 'config/initializers/secret_token.rb'
9
+ git add: '.env'
10
+ git_commit 'Replace secret token with environment variable.'
@@ -1,4 +1,3 @@
1
- puts "Adding secure headers... ".magenta
2
1
  content = <<EOF
3
2
 
4
3
  ensure_security_headers # See more: https://github.com/twitter/secureheaders
@@ -17,7 +16,6 @@ create_file "config/initializers/secure_headers.rb" do
17
16
  end
18
17
  EOF
19
18
  end
20
- git :add => 'app/controllers/application_controller.rb'
21
- git :commit => "-qm 'Adding secure headers.'"
22
-
23
- puts "\n"
19
+ git add: 'app/controllers/application_controller.rb'
20
+ git add: 'config/initializers/secure_headers.rb'
21
+ git_commit 'Add secure headers.'
@@ -0,0 +1,11 @@
1
+ in_root do
2
+ run "bundle exec rails generate simple_form:install"
3
+ end
4
+
5
+ git add: 'config'
6
+ git add: 'lib/templates'
7
+ git_commit 'Run `rails generate simple_form:install`'
8
+
9
+ copy_static_file 'config/locales/simple_form.pt-BR.yml'
10
+ git add: 'config'
11
+ git_commit 'Add simple_form pt-BR locale.'
data/lib/pah/template.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require File.expand_path(File.join('..', 'pah', 'version.rb'), File.dirname(__FILE__))
2
+
1
3
  %w{colored}.each do |component|
2
4
  if Gem::Specification.find_all_by_name(component).empty?
3
5
  run "gem install #{component}"
@@ -17,14 +19,16 @@ require "bundler"
17
19
 
18
20
  # Copy a static file from the template into the new application
19
21
  def copy_static_file(path)
20
- # puts "Installing #{path}...".magenta
21
22
  remove_file path
22
23
  file path, File.read(File.join(@static_files, path))
23
- # puts "\n"
24
24
  end
25
25
 
26
- def apply_n(partial)
26
+ def apply_n(partial, message='')
27
+ puts message.magenta
28
+
27
29
  apply "#{@partials}/_#{partial}.rb"
30
+
31
+ puts "\n"
28
32
  end
29
33
 
30
34
  def will_you_like_to?(question)
@@ -43,36 +47,41 @@ def ask_unless_test(*params)
43
47
  ask(*params)
44
48
  end
45
49
 
50
+ def git_commit(message)
51
+ message = "#{message}\n\nGenerated by pah version #{Pah::VERSION}"
52
+ git commit: "-qm '#{message}'"
53
+ end
54
+
46
55
  puts "\n========================================================="
47
56
  puts " Pah".yellow.bold
48
57
  puts "=========================================================\n"
49
58
 
50
- # TODO: timezone, Add rspec extensions
51
59
 
52
60
  apply_n :config
53
- apply_n :git
54
- apply_n :ruby_env
55
- apply_n :cleanup
56
- apply_n :gems
57
- apply_n :database
58
- apply_n :rspec
59
- apply_n :layout
60
- apply_n :assets
61
- apply_n :public
62
- apply_n :secure_headers
63
- apply_n :secret_token
64
- apply_n :capybara
65
- apply_n :generators
66
- apply_n :letter_opener
67
- apply_n :locale
68
- apply_n :canonical_host
69
- apply_n :unicorn
70
- apply_n :jumpup
71
- apply_n :readme
72
- apply_n :heroku
61
+ apply_n :git, 'Initializing new Git repo...'
62
+ apply_n :ruby_env, 'Setting up ruby env...'
63
+ apply_n :cleanup, 'Removing unnecessary files...'
64
+ apply_n :gems, 'Setting up bundler and installing bundled gems (may take a while)...'
65
+ apply_n :database, 'Initializing databases...'
66
+ apply_n :rspec, 'Setting up RSpec...'
67
+ apply_n :layout, 'Adding layout files...'
68
+ apply_n :assets, 'Adding asset files...'
69
+ apply_n :public, 'Adding public files...'
70
+ apply_n :secure_headers, 'Adding secure headers...'
71
+ apply_n :secret_token, 'Replacing secret token with environment variable...'
72
+ apply_n :capybara, 'Adding capybara helpers...'
73
+ apply_n :generators, 'Adding generators...'
74
+ apply_n :simple_form, 'Configuring simple_form...'
75
+ apply_n :letter_opener, 'Adding letter_opener...'
76
+ apply_n :bullet, 'Setting up bullet...'
77
+ apply_n :locale, 'Adding locale...'
78
+ apply_n :canonical_host, 'Configuring canonical hosts...'
79
+ apply_n :puma, 'Configuring Puma...'
80
+ apply_n :rack_timeout, 'Setting up Rack::Timeout...'
81
+ apply_n :jumpup, 'Setting up Jumpup...'
82
+ apply_n :readme, 'Adding default README...'
83
+ apply_n :heroku, 'Configuring Heroku application...'
73
84
 
74
- # apply_n :omniauth # TODO: add spec support files
75
- # TODO: take care of facebook when user is not logged in on facebook (when app)
76
85
 
77
86
  puts "\n========================================================="
78
87
  puts " CONGRATS! INSTALLATION COMPLETE!".yellow.bold