boring_generators 0.6.0 → 0.7.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/lib/boring_generators/version.rb +1 -1
- data/lib/generators/boring/oauth/base_generator.rb +63 -0
- data/lib/generators/boring/oauth/facebook/install/install_generator.rb +11 -60
- data/lib/generators/boring/oauth/facebook/install/templates/README +0 -4
- data/lib/generators/boring/oauth/github/install/install_generator.rb +42 -0
- data/lib/generators/boring/oauth/github/install/templates/README +20 -0
- data/lib/generators/boring/oauth/github/install/templates/omniauth_callbacks_controller.rb +21 -0
- data/lib/generators/boring/tailwind/install/install_generator.rb +11 -10
- data/lib/generators/boring/tailwind/install/templates/README +13 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c38ce00aea24f2d84874abeaf67e8fc1e917934b8dc24e7a722c695cd55b75f
|
4
|
+
data.tar.gz: 3373b320ace30d8a04e14af9780b65b819f266712cfd37e676f89872ce157cb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9e074f948419ff51132578335b1b9003ba99f73779b535b0a306753a3057dd924833d31eeb12091af4ebbb0db59b0ea5faa207da0ae9e413a6c3c7d61f24f32
|
7
|
+
data.tar.gz: 5c06d9e92fa9b7f5599cdf77d5c391c59adffea7ccdad470e723daa1190bc94ded77b57e4417564b5ebcc53507c3b421b1093b827ea81aaa4ea2786813531df6
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## master (unreleased)
|
4
4
|
|
5
|
+
## 0.7.0 (January 30th, 2021)
|
6
|
+
* Upgrade the Tailwind CSS generator to support Tailwind V2.0. ([@abhaynikam][])
|
7
|
+
* Adds Devise GitHub Omniauth generator. ([@abhaynikam][])
|
8
|
+
|
5
9
|
## 0.6.0 (January 10th, 2021)
|
6
10
|
* Updates default ruby version of GitHub Actions install generator. ([@jamesglover][])
|
7
11
|
* Simplify generated GitHub Actions install ([@jamesglover][])
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -61,6 +61,7 @@ The boring generator introduces following generators:
|
|
61
61
|
- Install SimpleForm: `rails generate boring:simple_form:install --css_framework=<css_framework>`
|
62
62
|
- Install Devise: `rails generate boring:devise:install`
|
63
63
|
- Install Devise Facebook Omniauth: `rails generate boring:oauth:facebook:install`
|
64
|
+
- Install Devise GitHub Omniauth: `rails generate boring:oauth:github:install`
|
64
65
|
|
65
66
|
## Development
|
66
67
|
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
|
5
|
+
module Boring
|
6
|
+
module Oauth
|
7
|
+
module BaseGenerator
|
8
|
+
def add_provider_and_uuid_user_details
|
9
|
+
say "Adding migration to add provider and uuid columns to users", :green
|
10
|
+
Bundler.with_unbundled_env do
|
11
|
+
run "DISABLE_SPRING=1 bundle exec rails generate migration AddOmniauthToUsers provider:string uid:string"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def configure_devise_omniauth
|
16
|
+
say "Adding omniauth devise configuration", :green
|
17
|
+
if File.exist?("config/initializers/devise.rb")
|
18
|
+
insert_into_file "config/initializers/devise.rb", <<~RUBY, after: /Devise.setup do \|config\|/
|
19
|
+
\n
|
20
|
+
\tconfig.omniauth :#{@oauth_name}, "APP_ID", "APP_SECRET"
|
21
|
+
RUBY
|
22
|
+
else
|
23
|
+
raise MissingDeviseConfigurationError, <<~ERROR
|
24
|
+
Looks like the devise installation is incomplete. Could not find devise.rb in config/initializers.
|
25
|
+
ERROR
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_omniauth_callback_routes
|
30
|
+
devise_route = '# devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }'.dup
|
31
|
+
route devise_route
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_omniauth_callback_controller
|
35
|
+
say "Copying omniauth_callbacks_controller.rb", :green
|
36
|
+
template("omniauth_callbacks_controller.rb", "app/controllers/users/omniauth_callbacks_controller.rb")
|
37
|
+
end
|
38
|
+
|
39
|
+
def configure_and_add_devise_setting_in_user_model
|
40
|
+
say "Configuring #{@oauth_name.to_s} omniauth for user model", :green
|
41
|
+
insert_into_file "app/models/user.rb", <<~RUBY, after: /class User < ApplicationRecord/
|
42
|
+
\n\tdevise :omniauthable, omniauth_providers: %i[#{@oauth_name}]
|
43
|
+
|
44
|
+
\tdef self.from_omniauth(auth)
|
45
|
+
\twhere(provider: auth.provider, uid: auth.uid).first_or_create do |user|
|
46
|
+
\tuser.email = auth.info.email
|
47
|
+
\tuser.password = Devise.friendly_token[0, 20]
|
48
|
+
\tuser.name = auth.info.name # assuming the user model has a name
|
49
|
+
\t# user.image = auth.info.image # assuming the user model has an image
|
50
|
+
\t# If you are using confirmable and the provider(s) you use validate emails,
|
51
|
+
\t# uncomment the line below to skip the confirmation emails.
|
52
|
+
\t# user.skip_confirmation!
|
53
|
+
\tend
|
54
|
+
\tend
|
55
|
+
RUBY
|
56
|
+
end
|
57
|
+
|
58
|
+
def show_readme
|
59
|
+
readme "README"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,11 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'bundler'
|
4
|
+
require 'generators/boring/oauth/base_generator'
|
4
5
|
|
5
6
|
module Boring
|
6
7
|
module Oauth
|
7
8
|
module Facebook
|
8
9
|
class InstallGenerator < Rails::Generators::Base
|
10
|
+
include Boring::Oauth::BaseGenerator
|
11
|
+
|
9
12
|
class MissingDeviseConfigurationError < StandardError; end
|
10
13
|
|
11
14
|
desc "Adds facebook OmniAuth to the application"
|
@@ -24,66 +27,14 @@ module Boring
|
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
say "Adding omniauth devise configuration", :green
|
36
|
-
if File.exist?("config/initializers/devise.rb")
|
37
|
-
insert_into_file "config/initializers/devise.rb", <<~RUBY, after: /Devise.setup do \|config\|/
|
38
|
-
\n
|
39
|
-
\tconfig.omniauth :facebook, "APP_ID", "APP_SECRET"
|
40
|
-
RUBY
|
41
|
-
else
|
42
|
-
raise MissingDeviseConfigurationError, <<~ERROR
|
43
|
-
Looks like the devise installation is incomplete. Could not find devise.rb in config/initializers.
|
44
|
-
ERROR
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def add_omniauth_callback_routes
|
49
|
-
devise_route = '# devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }'.dup
|
50
|
-
route devise_route
|
51
|
-
end
|
52
|
-
|
53
|
-
def add_omniauth_callback_controller
|
54
|
-
say "Copying omniauth_callbacks_controller.rb", :green
|
55
|
-
template("omniauth_callbacks_controller.rb", "app/controllers/users/omniauth_callbacks_controller.rb")
|
56
|
-
end
|
57
|
-
|
58
|
-
def configure_and_add_devise_setting_in_user_model
|
59
|
-
say "Configuring facebook omniauth for user model", :green
|
60
|
-
insert_into_file "app/models/user.rb", <<~RUBY, after: /class User < ApplicationRecord/
|
61
|
-
|
62
|
-
\tdevise :omniauthable, omniauth_providers: %i[facebook]
|
63
|
-
|
64
|
-
\tdef self.from_omniauth(auth)
|
65
|
-
\twhere(provider: auth.provider, uid: auth.uid).first_or_create do |user|
|
66
|
-
\tuser.email = auth.info.email
|
67
|
-
\tuser.password = Devise.friendly_token[0, 20]
|
68
|
-
\tuser.name = auth.info.name # assuming the user model has a name
|
69
|
-
\t# user.image = auth.info.image # assuming the user model has an image
|
70
|
-
\t# If you are using confirmable and the provider(s) you use validate emails,
|
71
|
-
\t# uncomment the line below to skip the confirmation emails.
|
72
|
-
\t# user.skip_confirmation!
|
73
|
-
\tend
|
74
|
-
\tend
|
75
|
-
RUBY
|
76
|
-
end
|
77
|
-
|
78
|
-
def add_the_facebook_devise_omniauth_view
|
79
|
-
insert_into_file "app/views/users/sessions/new.html.erb", <<~RUBY, after: /<%= render "users\/shared\/links" %>/
|
80
|
-
|
81
|
-
<%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>
|
82
|
-
RUBY
|
83
|
-
end
|
84
|
-
|
85
|
-
def show_readme
|
86
|
-
readme "README"
|
30
|
+
def invoke_common_generator_methods
|
31
|
+
@oauth_name = :facebook
|
32
|
+
add_provider_and_uuid_user_details
|
33
|
+
configure_devise_omniauth
|
34
|
+
add_omniauth_callback_routes
|
35
|
+
add_omniauth_callback_controller
|
36
|
+
configure_and_add_devise_setting_in_user_model
|
37
|
+
show_readme
|
87
38
|
end
|
88
39
|
end
|
89
40
|
end
|
@@ -16,9 +16,5 @@ Some setup you must do manually if you haven't yet:
|
|
16
16
|
For example:
|
17
17
|
|
18
18
|
config.omniauth :facebook, "APP_ID", "APP_SECRET"
|
19
|
-
3. Ensure you have added the facebook omniauth route in the devise session view:
|
20
|
-
For example:
|
21
|
-
|
22
|
-
<%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>
|
23
19
|
|
24
20
|
===============================================================================
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
require 'generators/boring/oauth/base_generator'
|
5
|
+
|
6
|
+
module Boring
|
7
|
+
module Oauth
|
8
|
+
module Github
|
9
|
+
class InstallGenerator < Rails::Generators::Base
|
10
|
+
include Boring::Oauth::BaseGenerator
|
11
|
+
|
12
|
+
class MissingDeviseConfigurationError < StandardError; end
|
13
|
+
|
14
|
+
desc "Adds GitHub OmniAuth to the application"
|
15
|
+
source_root File.expand_path("templates", __dir__)
|
16
|
+
|
17
|
+
def add_github_omniauth_gem
|
18
|
+
say "Adding GitHub OmniAuth gem", :green
|
19
|
+
github_omniauth_gem = <<~RUBY
|
20
|
+
\n
|
21
|
+
# for omniauth github
|
22
|
+
gem 'omniauth-github', '~> 1.4.0'
|
23
|
+
RUBY
|
24
|
+
append_to_file "Gemfile", github_omniauth_gem
|
25
|
+
Bundler.with_unbundled_env do
|
26
|
+
run "bundle install"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def invoke_common_generator_methods
|
31
|
+
@oauth_name = :github
|
32
|
+
add_provider_and_uuid_user_details
|
33
|
+
configure_devise_omniauth
|
34
|
+
add_omniauth_callback_routes
|
35
|
+
add_omniauth_callback_controller
|
36
|
+
configure_and_add_devise_setting_in_user_model
|
37
|
+
show_readme
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
Some setup you must do manually if you haven't yet:
|
4
|
+
|
5
|
+
1. Ensure you have overridden or uncommented the routes for generated omniauth callback controllers in your routes.rb.
|
6
|
+
For example:
|
7
|
+
|
8
|
+
Rails.application.routes.draw do
|
9
|
+
devise_for :users, controllers: {
|
10
|
+
omniauth_callbacks: "users/omniauth_callbacks"
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
2. Update the devise github omniauth APP_ID and APP_SECRET in "config/initializers/devise.rb"
|
15
|
+
after registering the Rails application on: https://github.com/settings/applications/new
|
16
|
+
For example:
|
17
|
+
|
18
|
+
config.omniauth :github, "APP_ID", "APP_SECRET"
|
19
|
+
|
20
|
+
===============================================================================
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
2
|
+
# See https://github.com/omniauth/omniauth/wiki/FAQ#rails-session-is-clobbered-after-callback-on-developer-strategy
|
3
|
+
skip_before_action :verify_authenticity_token, only: :github
|
4
|
+
|
5
|
+
def github
|
6
|
+
# You need to implement the method below in your model (e.g. app/models/user.rb)
|
7
|
+
@user = User.from_omniauth(request.env["omniauth.auth"])
|
8
|
+
|
9
|
+
if @user.persisted?
|
10
|
+
sign_in_and_redirect @user, event: :authentication #this will throw if @user is not activated
|
11
|
+
set_flash_message(:notice, :success, kind: "GitHub") if is_navigational_format?
|
12
|
+
else
|
13
|
+
session["devise.github_data"] = request.env["omniauth.auth"].except(:extra) # Removing extra as it can overflow some session stores
|
14
|
+
redirect_to new_user_registration_url
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def failure
|
19
|
+
redirect_to root_path
|
20
|
+
end
|
21
|
+
end
|
@@ -6,18 +6,12 @@ module Boring
|
|
6
6
|
desc "Adds Tailwind CSS to the application"
|
7
7
|
source_root File.expand_path("templates", __dir__)
|
8
8
|
|
9
|
-
class_option :skip_tailwind_css_ui, type: :boolean, aliases: "-sui",
|
10
|
-
desc: "Skip adding @tailwindcss/ui package"
|
11
9
|
class_option :skip_tailwind_init_full, type: :boolean, aliases: "-sif",
|
12
10
|
desc: "Skip running tailwindcss init with --full option"
|
13
11
|
|
14
12
|
def add_tailwind_package
|
15
13
|
say "Adding tailwind package", :green
|
16
|
-
|
17
|
-
run "yarn add tailwindcss"
|
18
|
-
else
|
19
|
-
run "yarn add tailwindcss @tailwindcss/ui"
|
20
|
-
end
|
14
|
+
run "yarn add tailwindcss@latest postcss@latest autoprefixer@latest"
|
21
15
|
end
|
22
16
|
|
23
17
|
def create_tailwind_config
|
@@ -54,9 +48,12 @@ module Boring
|
|
54
48
|
|
55
49
|
def insert_stylesheet_in_the_application
|
56
50
|
if File.exist?("app/javascript/packs/application.js")
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
stylesheet_tailwind_imports = <<~RUBY
|
52
|
+
\n
|
53
|
+
import "stylesheets/application"
|
54
|
+
RUBY
|
55
|
+
|
56
|
+
append_to_file "app/javascript/packs/application.js", stylesheet_tailwind_imports
|
60
57
|
else
|
61
58
|
say <<~WARNING, :red
|
62
59
|
ERROR: Looks like the webpacker installation is incomplete. Could not find application.js in app/javascript/packs.
|
@@ -69,6 +66,10 @@ module Boring
|
|
69
66
|
\t\t<%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
70
67
|
RUBY
|
71
68
|
end
|
69
|
+
|
70
|
+
def show_readme
|
71
|
+
readme "README"
|
72
|
+
end
|
72
73
|
end
|
73
74
|
end
|
74
75
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
Some setup you must do manually if you haven't yet:
|
4
|
+
|
5
|
+
Current webpacker version relies on the older version of PostCSS.
|
6
|
+
Tailwind 2.0 doesn't support the older version of PostCSS. Please
|
7
|
+
update package.json to update webpacker version.
|
8
|
+
|
9
|
+
```
|
10
|
+
"@rails/webpacker": "rails/webpacker#b6c2180",
|
11
|
+
```
|
12
|
+
|
13
|
+
===============================================================================
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boring_generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abhay Nikam
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -79,10 +79,14 @@ files:
|
|
79
79
|
- lib/generators/boring/graphql/install/templates/base_resolver.rb
|
80
80
|
- lib/generators/boring/graphql/install/templates/hello_world_resolver.rb
|
81
81
|
- lib/generators/boring/jquery/install/install_generator.rb
|
82
|
+
- lib/generators/boring/oauth/base_generator.rb
|
82
83
|
- lib/generators/boring/oauth/facebook/install/install_generator.rb
|
83
84
|
- lib/generators/boring/oauth/facebook/install/templates/README
|
84
85
|
- lib/generators/boring/oauth/facebook/install/templates/omniauth.rb
|
85
86
|
- lib/generators/boring/oauth/facebook/install/templates/omniauth_callbacks_controller.rb
|
87
|
+
- lib/generators/boring/oauth/github/install/install_generator.rb
|
88
|
+
- lib/generators/boring/oauth/github/install/templates/README
|
89
|
+
- lib/generators/boring/oauth/github/install/templates/omniauth_callbacks_controller.rb
|
86
90
|
- lib/generators/boring/pry/install/install_generator.rb
|
87
91
|
- lib/generators/boring/pry/install/templates/pryrc
|
88
92
|
- lib/generators/boring/pundit/install/install_generator.rb
|
@@ -90,6 +94,7 @@ files:
|
|
90
94
|
- lib/generators/boring/rubocop/install/templates/.rubocop.yml.tt
|
91
95
|
- lib/generators/boring/simple_form/install/install_generator.rb
|
92
96
|
- lib/generators/boring/tailwind/install/install_generator.rb
|
97
|
+
- lib/generators/boring/tailwind/install/templates/README
|
93
98
|
- lib/generators/boring/tailwind/install/templates/application.scss
|
94
99
|
- tmp/templates/app_template/.ruby-version
|
95
100
|
- tmp/templates/app_template/Gemfile
|