happy_seed 0.0.16 → 0.0.17

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +45 -0
  3. data/happy_seed.rb +36 -117
  4. data/happy_seed.txt +55 -0
  5. data/lib/generators/happy_seed/admin/admin_generator.rb +13 -9
  6. data/lib/generators/happy_seed/angular_install/angular_install_generator.rb +9 -1
  7. data/lib/generators/happy_seed/angular_install/templates/app/assets/javascripts/angular_app.js.coffee.erb +9 -9
  8. data/lib/generators/happy_seed/angular_view/templates/app/assets/javascripts/controllers/controller.js.coffee +1 -1
  9. data/lib/generators/happy_seed/api/api_generator.rb +9 -9
  10. data/lib/generators/happy_seed/base/base_generator.rb +65 -14
  11. data/lib/generators/happy_seed/base/templates/.bowerrc +3 -0
  12. data/lib/generators/happy_seed/base/templates/Procfile +1 -1
  13. data/lib/generators/happy_seed/base/templates/app/views/setup/index.html.haml +0 -2
  14. data/lib/generators/happy_seed/base/templates/config/puma.rb +15 -0
  15. data/lib/generators/happy_seed/base/templates/docs/README.00.base.rdoc +1 -1
  16. data/lib/generators/happy_seed/base/templates/spec/requests/setup_spec.rb +11 -0
  17. data/lib/generators/happy_seed/bootstrap/bootstrap_generator.rb +13 -1
  18. data/lib/generators/happy_seed/devise/devise_generator.rb +35 -12
  19. data/lib/generators/happy_seed/devise_invitable/devise_invitable_generator.rb +10 -10
  20. data/lib/generators/happy_seed/facebook/facebook_generator.rb +8 -1
  21. data/lib/generators/happy_seed/github/github_generator.rb +8 -2
  22. data/lib/generators/happy_seed/googleoauth/googleoauth_generator.rb +8 -2
  23. data/lib/generators/happy_seed/happy_seed_generator.rb +28 -16
  24. data/lib/generators/happy_seed/instagram/instagram_generator.rb +8 -2
  25. data/lib/generators/happy_seed/jazz_hands/jazz_hands_generator.rb +8 -1
  26. data/lib/generators/happy_seed/omniauth/omniauth_generator.rb +11 -24
  27. data/lib/generators/happy_seed/splash/splash_generator.rb +8 -19
  28. data/lib/generators/happy_seed/static/templates/source/stylesheets/application.css.scss +10 -13
  29. data/lib/generators/happy_seed/static_blog/templates/Gemfile.lock +45 -49
  30. data/lib/generators/happy_seed/static_blog/templates/source/stylesheets/application.css.scss +13 -8
  31. data/lib/generators/happy_seed/twitter/templates/add_secret_token_to_identity.rb +5 -0
  32. data/lib/generators/happy_seed/twitter/twitter_generator.rb +26 -2
  33. data/lib/happy_seed/cli.rb +2 -2
  34. data/lib/happy_seed/version.rb +1 -1
  35. data/test/dummy/db/test.sqlite3 +0 -0
  36. data/test/dummy/log/test.log +15 -0
  37. metadata +12 -5
  38. data/lib/generators/happy_seed/base/templates/config/unicorn.rb +0 -33
  39. data/lib/generators/happy_seed/static/templates/Gemfile.lock +0 -158
@@ -0,0 +1,3 @@
1
+ {
2
+ "directory": "vendor/assets/bower_components"
3
+ }
@@ -1 +1 @@
1
- web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
1
+ web: bundle exec puma -C config/puma.rb
@@ -14,8 +14,6 @@
14
14
  }
15
15
 
16
16
  %body
17
- = render partial: "application/header"
18
- = render partial: "application/flashes"
19
17
  .container
20
18
  .row
21
19
  .col-sm-3
@@ -0,0 +1,15 @@
1
+ workers Integer(ENV['WEB_CONCURRENCY'] || 2)
2
+ threads_count = Integer(ENV['MAX_THREADS'] || 5)
3
+ threads threads_count, threads_count
4
+
5
+ preload_app!
6
+
7
+ rackup DefaultRackup
8
+ port ENV['PORT'] || 3000
9
+ environment ENV['RACK_ENV'] || 'development'
10
+
11
+ on_worker_boot do
12
+ # Worker specific setup for Rails 4.1+
13
+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
14
+ ActiveRecord::Base.establish_connection
15
+ end
@@ -5,7 +5,7 @@ HappySeed Base Install
5
5
 
6
6
  The `happy_seed` application template sets up `haml`, `meta-tags`, disables `turbolinks`, and installs the `happy_seed` generators into your application.
7
7
 
8
- The `happy_seed:base` generator installs `dotenv-rails`, `unicorn`, http site authentication, and the `setup_controller`.
8
+ The `happy_seed:base` generator installs `dotenv-rails`, `puma`, http site authentication, and the `setup_controller`.
9
9
 
10
10
  /setup is used to see the `happy_seed` documentation for each of the installed generators, and copies things into the rails doc directory. The `setup_controller` is only visible locally.
11
11
 
@@ -0,0 +1,11 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe "Setup", type: :request do
4
+ describe "GET /setups" do
5
+ it "Renders the setup page locally" do
6
+ get setup_path
7
+ expect(response).to have_http_status(200)
8
+ expect(response.body).to include("Mailer Previews")
9
+ end
10
+ end
11
+ end
@@ -5,7 +5,13 @@ module HappySeed
5
5
  class BootstrapGenerator < HappySeedGenerator
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
 
8
- def update_application_haml
8
+ def self.fingerprint
9
+ gem_available? 'bootstrap-sass'
10
+ end
11
+
12
+ def install_bootstrap
13
+ return if already_installed
14
+
9
15
  gem 'bootstrap-sass'
10
16
  gem 'modernizr-rails'
11
17
  gem 'meta-tags', :require => 'meta_tags'
@@ -24,6 +30,12 @@ module HappySeed
24
30
  directory 'lib'
25
31
  directory 'docs'
26
32
 
33
+ inject_into_file 'app/views/setup/index.html.haml', after: "%body\n" do <<-'HAML'
34
+ = render partial: "application/header"
35
+ = render partial: "application/flashes"
36
+ HAML
37
+ end
38
+
27
39
  inject_into_file 'config/application.rb', before: "end\nend\n" do <<-'RUBY'
28
40
  config.action_view.field_error_proc = Proc.new { |html_tag, instance| html_tag }
29
41
  config.generators do |g|
@@ -1,14 +1,19 @@
1
+ require 'generators/happy_seed/happy_seed_generator'
2
+ require 'generators/happy_seed/bootstrap/bootstrap_generator'
3
+
1
4
  module HappySeed
2
5
  module Generators
3
- class DeviseGenerator < Rails::Generators::Base
6
+ class DeviseGenerator < HappySeedGenerator
4
7
  source_root File.expand_path('../templates', __FILE__)
5
8
 
6
- def install_landing_page
7
- if !gem_available?( "bootstrap-sass" )
8
- if yes?( "Bootstrap-sass gem doesn't seem to be installed, install now?" )
9
- generate "happy_seed:bootstrap"
10
- end
11
- end
9
+ def self.fingerprint
10
+ gem_available? 'devise'
11
+ end
12
+
13
+ def install_devise
14
+ return if already_installed
15
+
16
+ require_generator BootstrapGenerator
12
17
 
13
18
  gem 'devise', '~> 3.4'
14
19
 
@@ -16,10 +21,16 @@ module HappySeed
16
21
  run "bundle install --without production"
17
22
  end
18
23
 
19
- run 'rails generate devise:install'
20
- run 'rails generate devise User'
21
- run 'rails generate devise:views'
22
-
24
+ run 'bin/spring stop'
25
+
26
+ puts "Devise: #{self.class.fingerprint}"
27
+
28
+ Bundler.with_clean_env do
29
+ run 'rails generate devise:install'
30
+ run 'rails generate devise User'
31
+ run 'rails generate devise:views'
32
+ end
33
+
23
34
  if gem_available?( "haml-rails" )
24
35
  remove_file 'app/views/devise/registrations/new.html.erb'
25
36
  remove_file 'app/views/devise/registrations/edit.html.erb'
@@ -32,12 +43,24 @@ module HappySeed
32
43
 
33
44
  begin
34
45
  prepend_to_file 'spec/spec_helper.rb', "require 'devise'\n"
46
+ prepend_to_file 'spec/spec_helper.rb', "require_relative 'support/controller_helpers'\n"
35
47
  inject_into_file 'spec/spec_helper.rb', "\n config.include Devise::TestHelpers, type: :controller\n", :before => "\nend\n"
36
-
48
+ inject_into_file 'spec/spec_helper.rb', "\n config.include Warden::Test::Helpers, type: :feature\n config.include ControllerHelpers, type: :controller\n Warden.test_mode!\n", :before => "\nend\n"
37
49
  rescue
38
50
  say_status :spec, "Unable to add devise helpers to spec_helper.rb", :red
39
51
  end
40
52
 
53
+ begin
54
+ inject_into_file 'spec/rails_helper.rb', "\n config.include Devise::TestHelpers, type: :controller\n config.include Warden::Test::Helpers, type: :feature\n", :after => "FactoryGirl::Syntax::Methods\n"
55
+ rescue
56
+ say_status :spec, "Unable to add devise helpers to rails_helper.rb", :red
57
+ end
58
+
59
+ append_to_file "features/support/env.rb", "
60
+ Warden.test_mode!
61
+ World(Warden::Test::Helpers)
62
+ After{ Warden.test_reset! }"
63
+
41
64
  directory 'app'
42
65
  directory 'docs'
43
66
  directory 'test'
@@ -1,18 +1,18 @@
1
+ require 'generators/happy_seed/devise/devise_generator'
2
+
1
3
  module HappySeed
2
4
  module Generators
3
- class DeviseInvitableGenerator < Rails::Generators::Base
5
+ class DeviseInvitableGenerator < HappySeedGenerator
4
6
  source_root File.expand_path('../templates', __FILE__)
5
7
 
8
+ def self.fingerprint
9
+ gem_available? 'devise_invitable'
10
+ end
11
+
6
12
  def install_device_invitable
7
- unless gem_available?( "devise" )
8
- puts "The devise invitable generator requires devise"
9
-
10
- if yes?( "Run happy_seed:devise now?" )
11
- generate "happy_seed:devise"
12
- else
13
- exit
14
- end
15
- end
13
+ return if already_installed
14
+
15
+ require_generator DeviseGenerator
16
16
 
17
17
  gem 'devise_invitable'
18
18
 
@@ -1,3 +1,4 @@
1
+ require 'generators/happy_seed/omniauth/omniauth_generator'
1
2
  require 'generators/happy_seed/happy_seed_generator'
2
3
 
3
4
  module HappySeed
@@ -5,8 +6,14 @@ module HappySeed
5
6
  class FacebookGenerator < HappySeedGenerator
6
7
  source_root File.expand_path('../templates', __FILE__)
7
8
 
9
+ def self.fingerprint
10
+ gem_available? 'omniauth-facebook'
11
+ end
12
+
8
13
  def install_facebook
9
- require_omniauth
14
+ return if already_installed
15
+
16
+ require_generator OmniauthGenerator
10
17
 
11
18
  gem 'omniauth-facebook'
12
19
 
@@ -1,12 +1,18 @@
1
- require 'generators/happy_seed/happy_seed_generator'
1
+ require 'generators/happy_seed/omniauth/omniauth_generator'
2
2
 
3
3
  module HappySeed
4
4
  module Generators
5
5
  class GithubGenerator < HappySeedGenerator
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
 
8
+ def self.fingerprint
9
+ gem_available? 'omniauth-github'
10
+ end
11
+
8
12
  def install_github
9
- require_omniauth
13
+ return if already_installed
14
+
15
+ require_generator OmniauthGenerator
10
16
 
11
17
  gem 'omniauth-github'
12
18
  gem 'github_api'
@@ -1,4 +1,4 @@
1
- require 'generators/happy_seed/happy_seed_generator'
1
+ require 'generators/happy_seed/omniauth/omniauth_generator'
2
2
 
3
3
  module HappySeed
4
4
  module Generators
@@ -6,8 +6,14 @@ module HappySeed
6
6
  include Rails::Generators::Migration
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
+ def self.fingerprint
10
+ gem_available? 'omniauth-google-oauth2'
11
+ end
12
+
9
13
  def install_facebook
10
- require_omniauth
14
+ return if already_installed
15
+
16
+ require_generator OmniauthGenerator
11
17
 
12
18
  gem 'omniauth-google-oauth2'
13
19
  gem 'google-api-client', require: "google/api_client"
@@ -1,20 +1,24 @@
1
+ ENV['DISABLE_SPRING'] = 'true'
2
+
1
3
  module HappySeed
2
4
  module Generators
3
5
  class HappySeedGenerator < Rails::Generators::Base
4
6
  protected
5
- def require_omniauth
6
- unless gem_available?( "devise" )
7
- puts "The omniauth generator requires devise"
7
+ def already_installed
8
+ installed = self.class.fingerprint
9
+ puts "#{self.class.to_s} has already been run" if installed
10
+ installed
11
+ end
8
12
 
9
- if yes?( "Run happy_seed:devise now?" )
10
- generate "happy_seed:devise"
11
- else
12
- exit
13
- end
14
- end
13
+ def fingerprint
14
+ raise "Fingerprint not implemented in #{self.to_s}"
15
+ end
15
16
 
16
- unless File.exists? 'app/models/identity.rb'
17
- generate "happy_seed:omniauth"
17
+ def require_generator kls
18
+ if !kls.fingerprint
19
+ name = kls.to_s.gsub( /.*::/, "" ).gsub( /Generator/, "" ).underscore
20
+ puts "Running dependancy happy_seed:#{name}"
21
+ generate "happy_seed:#{name}"
18
22
  end
19
23
  end
20
24
 
@@ -49,11 +53,19 @@ RUBY
49
53
  end
50
54
 
51
55
  def gem_available?(name)
52
- Gem::Specification.find_by_name(name)
53
- rescue Gem::LoadError
54
- false
55
- rescue
56
- Gem.available?(name)
56
+ self.gem_available?( name )
57
+ end
58
+
59
+ def self.gem_available?( name )
60
+ Bundler.with_clean_env do
61
+ begin
62
+ Gem::Specification.find_by_name(name)
63
+ rescue Gem::LoadError
64
+ false
65
+ rescue
66
+ Gem.available?(name)
67
+ end
68
+ end
57
69
  end
58
70
 
59
71
  def add_env( key )
@@ -1,12 +1,18 @@
1
- require 'generators/happy_seed/happy_seed_generator'
1
+ require 'generators/happy_seed/omniauth/omniauth_generator'
2
2
 
3
3
  module HappySeed
4
4
  module Generators
5
5
  class InstagramGenerator < HappySeedGenerator
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
 
8
+ def self.fingerprint
9
+ gem_available? 'omniauth-instagram'
10
+ end
11
+
8
12
  def install_instagram
9
- require_omniauth
13
+ return if already_installed
14
+
15
+ require_generator OmniauthGenerator
10
16
 
11
17
  gem 'omniauth-instagram'
12
18
  gem 'instagram'
@@ -1,9 +1,16 @@
1
+ require 'generators/happy_seed/happy_seed_generator'
2
+
1
3
  module HappySeed
2
4
  module Generators
3
- class JazzHandsGenerator < Rails::Generators::Base
5
+ class JazzHandsGenerator < HappySeedGenerator
4
6
  source_root File.expand_path('../templates', __FILE__)
5
7
 
8
+ def self.fingerprint
9
+ gem_available? 'jazz_hands'
10
+ end
11
+
6
12
  def install_jazz_hands
13
+ return if already_installed
7
14
 
8
15
  # gem 'jazz_hands', :github => 'nixme/jazz_hands', :branch => 'bring-your-own-debugger', :groups => [:development, :test]
9
16
  gem 'jazz_hands', :github => 'danrabinowitz/jazz_hands', :branch => 'use-newer-version-of-pry', :groups => [:development, :test]
@@ -1,26 +1,21 @@
1
+ require 'generators/happy_seed/devise/devise_generator'
2
+
1
3
  module HappySeed
2
4
  module Generators
3
- class OmniauthGenerator < Rails::Generators::Base
5
+ class OmniauthGenerator < HappySeedGenerator
4
6
  include Rails::Generators::Migration
5
7
  source_root File.expand_path('../templates', __FILE__)
6
8
 
7
- def install_omniauth
8
- # if File.exists? 'app/models/identity.rb'
9
- # puts "identity.rb already exists, skipping"
10
- # return
11
- # end
9
+ def self.fingerprint
10
+ gem_available?( 'omniauth')
11
+ end
12
12
 
13
- migration_template("make_email_nullable.rb", "db/migrate/make_email_nullable.rb" )
13
+ def install_omniauth
14
+ return if already_installed
14
15
 
15
- unless gem_available?( "devise" )
16
- puts "The omniauth generator requires devise"
16
+ require_generator DeviseGenerator
17
17
 
18
- if yes?( "Run happy_seed:devise now?" )
19
- generate "happy_seed:devise"
20
- else
21
- exit
22
- end
23
- end
18
+ migration_template("make_email_nullable.rb", "db/migrate/make_email_nullable.rb" )
24
19
 
25
20
  gem 'omniauth'
26
21
 
@@ -50,15 +45,7 @@ module HappySeed
50
45
  directory "docs"
51
46
  end
52
47
 
53
- private
54
- def gem_available?(name)
55
- Gem::Specification.find_by_name(name)
56
- rescue Gem::LoadError
57
- false
58
- rescue
59
- Gem.available?(name)
60
- end
61
-
48
+ private
62
49
  def self.next_migration_number(dir)
63
50
  Time.now.utc.strftime("%Y%m%d%H%M%S")
64
51
  end
@@ -1,20 +1,18 @@
1
- require 'generators/happy_seed/happy_seed_generator'
1
+ require 'generators/happy_seed/bootstrap/bootstrap_generator'
2
2
 
3
3
  module HappySeed
4
4
  module Generators
5
5
  class SplashGenerator < HappySeedGenerator
6
6
  source_root File.expand_path('../templates', __FILE__)
7
7
 
8
+ def self.fingerprint
9
+ File.exists?( "docs/README.02.splash.rdoc" )
10
+ end
11
+
8
12
  def install_landing_page
9
- unless gem_available?( "bootstrap-sass" )
10
- puts "The splash generator requires bootstrap"
11
-
12
- if yes?( "Run happy_seed:bootstrap now?" )
13
- generate "happy_seed:bootstrap"
14
- else
15
- exit
16
- end
17
- end
13
+ return if already_installed
14
+
15
+ require_generator BootstrapGenerator
18
16
 
19
17
  gem 'gibbon'
20
18
 
@@ -43,15 +41,6 @@ module HappySeed
43
41
  say_status :env, "Unable to add template .env files", :red
44
42
  end
45
43
  end
46
-
47
- private
48
- def gem_available?(name)
49
- Gem::Specification.find_by_name(name)
50
- rescue Gem::LoadError
51
- false
52
- rescue
53
- Gem.available?(name)
54
- end
55
44
  end
56
45
  end
57
46
  end