rails_app_generator 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/after_templates/addons/factory_bot/_.rb +12 -26
  4. data/after_templates/addons/factory_bot/app/controllers/home_controller.rb +8 -2
  5. data/after_templates/addons/factory_bot/app/services/seed_service.rb +46 -13
  6. data/after_templates/addons/factory_bot/app/views/articles/index.html.erb +32 -0
  7. data/after_templates/addons/factory_bot/app/views/companies/index.html.erb +33 -0
  8. data/after_templates/addons/factory_bot/app/views/employee_roles/index.html.erb +30 -0
  9. data/after_templates/addons/factory_bot/app/views/employees/index.html.erb +36 -0
  10. data/after_templates/addons/factory_bot/app/views/layouts/_navbar.html.erb +15 -8
  11. data/after_templates/addons/factory_bot/app/views/projects/index.html.erb +36 -0
  12. data/after_templates/addons/factory_bot/app/views/regions/index.html.erb +29 -0
  13. data/after_templates/addons/factory_bot/app/views/roles/index.html.erb +29 -0
  14. data/after_templates/addons/factory_bot/app/views/videos/index.html.erb +31 -0
  15. data/after_templates/addons/factory_bot/best-practices/toshima/a1.png +0 -0
  16. data/after_templates/addons/factory_bot/best-practices/toshima/a2.png +0 -0
  17. data/after_templates/addons/factory_bot/best-practices/toshima/a3.png +0 -0
  18. data/after_templates/addons/factory_bot/best-practices/toshima/a4.png +0 -0
  19. data/after_templates/addons/factory_bot/best-practices/toshima/a5.png +0 -0
  20. data/after_templates/addons/factory_bot/best-practices/toshima/a6.png +0 -0
  21. data/after_templates/addons/factory_bot/best-practices/toshima/a7.png +0 -0
  22. data/after_templates/addons/factory_bot/best-practices/toshima/a8.png +0 -0
  23. data/after_templates/addons/factory_bot/best-practices/toshima/a9.png +0 -0
  24. data/after_templates/addons/factory_bot/best-practices/toshima/b1.png +0 -0
  25. data/after_templates/addons/factory_bot/best-practices/toshima/b2.png +0 -0
  26. data/after_templates/addons/factory_bot/best-practices/toshima/b3.png +0 -0
  27. data/after_templates/addons/factory_bot/best-practices/toshima/b4.png +0 -0
  28. data/after_templates/addons/factory_bot/best-practices/toshima/b5.png +0 -0
  29. data/after_templates/addons/factory_bot/best-practices/toshima/b6.png +0 -0
  30. data/after_templates/addons/factory_bot/best-practices/toshima/b7.png +0 -0
  31. data/after_templates/addons/factory_bot/best-practices/toshima/b8.png +0 -0
  32. data/after_templates/addons/factory_bot/best-practices/toshima/b9.png +0 -0
  33. data/after_templates/addons/factory_bot/best-practices/toshima/c1.png +0 -0
  34. data/after_templates/addons/factory_bot/best-practices/toshima/c2.png +0 -0
  35. data/after_templates/addons/factory_bot/best-practices/toshima/c3.png +0 -0
  36. data/after_templates/addons/factory_bot/best-practices/toshima/c4.png +0 -0
  37. data/after_templates/addons/factory_bot/best-practices/toshima/c5.png +0 -0
  38. data/after_templates/addons/factory_bot/best-practices/toshima/c6.png +0 -0
  39. data/after_templates/addons/factory_bot/best-practices/toshima/c7.png +0 -0
  40. data/after_templates/addons/factory_bot/best-practices/toshima/c8.png +0 -0
  41. data/after_templates/addons/factory_bot/best-practices/toshima/c9.png +0 -0
  42. data/after_templates/addons/factory_bot/best-practices/toshima/d1.png +0 -0
  43. data/after_templates/addons/factory_bot/best-practices/toshima/d2.png +0 -0
  44. data/after_templates/addons/factory_bot/best-practices/toshima/d3.png +0 -0
  45. data/after_templates/addons/factory_bot/best-practices/toshima/d4.png +0 -0
  46. data/after_templates/addons/factory_bot/best_practice.rb +630 -0
  47. data/after_templates/addons/factory_bot/config/application.rb +39 -0
  48. data/after_templates/addons/factory_bot/{factories.rb → custom_factories/_examples.rb} +25 -37
  49. data/after_templates/addons/factory_bot/custom_factories/article.rb +13 -0
  50. data/after_templates/addons/factory_bot/custom_factories/company.rb +9 -0
  51. data/after_templates/addons/factory_bot/custom_factories/employee.rb +37 -0
  52. data/after_templates/addons/factory_bot/custom_factories/project.rb +10 -0
  53. data/after_templates/addons/factory_bot/custom_factories/region.rb +32 -0
  54. data/after_templates/addons/factory_bot/custom_factories/role.rb +21 -0
  55. data/after_templates/addons/factory_bot/custom_factories/user.rb +10 -0
  56. data/after_templates/addons/factory_bot/custom_factories/video.rb +7 -0
  57. data/after_templates/addons/rspec/_.rb +61 -0
  58. data/after_templates/addons/rspec/app/controllers/home_controller.rb +8 -0
  59. data/after_templates/addons/rspec/app/services/seed_service.rb +31 -0
  60. data/after_templates/addons/rspec/app/views/home/index.html.erb +3 -0
  61. data/after_templates/addons/rspec/app/views/layouts/_footer.html.erb +0 -0
  62. data/after_templates/addons/rspec/app/views/layouts/_navbar.html.erb +5 -0
  63. data/after_templates/addons/rspec/app/views/layouts/application.html.erb +29 -0
  64. data/after_templates/addons/rspec/db/seeds.rb +8 -0
  65. data/docs/last_run/app_generator_class.json +16 -8
  66. data/docs/last_run/app_generator_data.json +2 -1
  67. data/docs/last_run/rails_options_class.json +13 -5
  68. data/docs/last_run/rails_options_data.json +3 -3
  69. data/lib/rails_app_generator/addons/rspec.rb +7 -1
  70. data/lib/rails_app_generator/app_generator.rb +6 -9
  71. data/lib/rails_app_generator/rag_initializer.rb +4 -1
  72. data/lib/rails_app_generator/version.rb +1 -1
  73. data/package-lock.json +2 -2
  74. data/package.json +1 -1
  75. data/profiles/addons/factory_bot.json +1 -3
  76. data/profiles/addons/rspec.json +14 -0
  77. metadata +61 -8
  78. data/after_templates/addons/factory_bot/factory-create-user.png +0 -0
  79. data/after_templates/addons/factory_bot/factory-employee-bad.png +0 -0
  80. data/after_templates/addons/factory_bot/factory-employee-good.png +0 -0
  81. data/after_templates/addons/factory_bot/factory-role.png +0 -0
  82. data/after_templates/addons/factory_bot/factory-video.png +0 -0
@@ -1,45 +1,33 @@
1
- FactoryBot.define do
2
- factory :app do
3
- title { Faker::Name.name } # Faker::App.name
4
- description { Faker::Lorem.paragraphs(number: rand(4...10)).join("\n") }
5
- settings { { 'foo' => 'bar' } }
6
- end
7
-
8
- factory :tenant do
9
- name { Faker::Name.name }
10
- slug { Faker::Internet.slug }
11
- active { [true, false].sample }
12
- app
13
- end
14
-
15
- factory :employee do
16
- first_name { Faker::Name.first_name }
17
- last_name { Faker::Name.last_name }
18
- email { Faker::Internet.email }
19
- password { Faker::Internet.password }
20
- address { Faker::Address.full_address }
21
- end
22
-
23
- factory :article do
24
- title { Faker::Quote.famous_last_words }
25
- body { Faker::Lorem.paragraphs(number: rand(4...10)).join("\n") }
26
- is_featured { [true, false].sample }
27
- end
28
-
29
- factory :project do
30
- name { Faker::App.name }
31
- status { [:closed, :rejected, :failed, :loading, :running, :waiting, :done, :finalized, :archived, :finished].sample }
32
- budget { Faker::Number.decimal(l_digits: 4) }
33
- country { Faker::Address.country_code }
34
- progress { Faker::Number.between(from: 0, to: 100) }
35
- end
36
- end
37
-
38
1
  def examples
2
+ # description { Faker::Lorem.paragraphs(number: rand(1...3)).join("\n") }
39
3
  Faker::Name.name
40
4
  Faker::Name.unique.name
5
+ Faker::Name.unique.first_name
6
+ Faker::Name.unique.last_name
7
+
8
+ Faker::Hacker.unique.say_something_smart
9
+ Faker::String.unique.troublesome
10
+
11
+ Faker::Lorem.unique.sentences.join(' ')
12
+ Faker::Lorem.unique.words.join(' ')
13
+ Faker::Lorem.unique.characters(10)
14
+ Faker::Lorem.unique.paragraphs.join("\n\n")
41
15
 
42
16
  Faker::Internet.email
17
+ Faker::Internet.unique.user_name
18
+ Faker::Internet.unique.url
19
+ Faker::Internet.unique.ip_v4_address
20
+
21
+ Faker::Number.unique.between(1, 10_000)
22
+ Faker::Number.unique.decimal(4, 2)
23
+
24
+ Faker::Company.catch_phrase
25
+ Faker::Company.buzzword
26
+ # When a straight answer won't do, BS to the rescue!
27
+ Faker::Company.bs
28
+ Faker::Company.logo #=> "https://pigment.github.com/fake-logos/logos/medium/color/5.png"
29
+ Faker::Company.profession #=> "firefighter"
30
+ Faker::Company.australian_business_number #=> "81137773602"
43
31
 
44
32
  Faker::Artist.name
45
33
  Faker::Address.city #=> "Imogeneborough"
@@ -0,0 +1,13 @@
1
+ FactoryBot.define do
2
+ factory :article do
3
+ title { Faker::Quote.famous_last_words }
4
+ body { Faker::Lorem.paragraphs(number: rand(4...10)).join("\n") }
5
+ is_featured { [true, false].sample }
6
+ published { rand(1..10) > 8 ? nil : rand(1..20).days.ago }
7
+ # employee { nil }
8
+ # tenant { nil }
9
+ trait :unpublished do
10
+ published { nil }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ FactoryBot.define do
2
+ factory :company do
3
+ active { [true, false].sample }
4
+ name { Faker::Name.name }
5
+ slug { Faker::Internet.slug }
6
+ # region
7
+ # region { nil }
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ FactoryBot.define do
2
+ factory :employee do
3
+ first_name { Faker::Name.first_name }
4
+ last_name { Faker::Name.last_name }
5
+ email { Faker::Internet.email }
6
+ password { Faker::Internet.password }
7
+ address { Faker::Address.full_address }
8
+ role # { %i[role_contributor role_moderator role_admin].sample }
9
+ # tenant { nil }
10
+ # role { nil }
11
+
12
+ # trait :contributor do
13
+ # role :contributor_role
14
+ # end
15
+
16
+ # trait :moderator do
17
+ # role :moderator_role
18
+ # end
19
+
20
+ # trait :admin do
21
+ # role :admin_role
22
+ # end
23
+
24
+ # factory :contributor_user , traits: [:contributor]
25
+ # factory :moderator_user , traits: [:moderator]
26
+ # factory :admin_user , traits: [:admin]
27
+
28
+ end
29
+
30
+ # factory :employee do
31
+ # first_name { "MyString" }
32
+ # last_name { "MyString" }
33
+ # address { "MyText" }
34
+ # email { "MyString" }
35
+ # password { "MyString" }
36
+ # end
37
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :project do
3
+ name { Faker::App.name }
4
+ status { %i[closed rejected failed loading running waiting done finalized archived finished].sample }
5
+ budget { Faker::Number.decimal(l_digits: 4) }
6
+ country { Faker::Address.country_code }
7
+ progress { Faker::Number.between(from: 0, to: 100) }
8
+ # tenant { nil }
9
+ end
10
+ end
@@ -0,0 +1,32 @@
1
+ FactoryBot.define do
2
+ factory :region do
3
+ name { Faker::Australia.location } # Faker::App.name
4
+ settings { Faker::Json.shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.last_name' }) }
5
+
6
+ # These traits are used to define well known variations of a factory
7
+ trait :western_sydney do
8
+ name { 'Western Sydney' }
9
+ settings { { 'suburbs' => ['Blacktown', 'Parramatta', 'Penrith', 'Campbelltown', 'Liverpool'] } }
10
+ end
11
+
12
+ trait :sydney do
13
+ name { 'Sydney CBD' }
14
+ settings { { 'suburbs' => ['Sydney', 'Sydney CBD', 'Surry Hills', 'Darling Harbour', 'Barangaroo'] } }
15
+ end
16
+
17
+ trait :eastern_suburbs do
18
+ name { 'Eastern Suburbs' }
19
+ settings { { 'suburbs' => ['Bondi', 'Bondi Beach', 'Bondi Junction', 'Bronte', 'Coogee', 'Darlinghurst'] }}
20
+ end
21
+
22
+ trait :inner_west do
23
+ name { 'Inner West' }
24
+ settings { { 'suburbs' => ['Ashfield', 'Burwood', 'Campsie', 'Croydon', 'Newtown'] } }
25
+ end
26
+
27
+ trait :north_shore do
28
+ name { 'North Shore' }
29
+ settings { { 'suburbs' => ['Pymble', 'Castle Cove', 'Castlecrag', 'Chatswood', 'Crows Nest', 'Cremorne'] } }
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ FactoryBot.define do
2
+ factory :role do
3
+ code { 'user' }
4
+
5
+ trait :contributor do
6
+ code { 'contributor' }
7
+ end
8
+
9
+ trait :moderator do
10
+ code { 'moderator' }
11
+ end
12
+
13
+ trait :admin do
14
+ code { 'admin' }
15
+ end
16
+
17
+ # factory :contributor_role , traits: [:contributor]
18
+ # factory :moderator_role , traits: [:moderator]
19
+ # factory :admin_role , traits: [:admin]
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ # Attach factory name to a class, similar outcome to using aliases
3
+ factory :user, class: "Employee" do
4
+ active { [true, false].sample }
5
+ name { 'User 1' }
6
+ slug { 'user-1' }
7
+ # region
8
+ # # region { nil }
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :video do
3
+ title { Faker::Movie.title }
4
+ youtube_id { Faker::Barcode.ean }
5
+ # article { nil }
6
+ end
7
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ # BDD for Ruby
4
+ #
5
+ # exe/rag addons/rspec
6
+
7
+ # NOTE: Currently not implemented fully
8
+
9
+ self.local_template_path = File.dirname(__FILE__)
10
+
11
+ gac 'base rails 7 image created'
12
+
13
+ prepare_environment
14
+
15
+ after_bundle do
16
+ create_db
17
+ scaffolds
18
+ setup_customizations
19
+ migrate_db
20
+ end
21
+
22
+ def scaffolds
23
+ # add_scaffold('post', 'title', 'body:text', 'user:references')
24
+ # add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
25
+ # add_scaffold('product', 'name', 'price:integer')
26
+ end
27
+
28
+ def setup_customizations
29
+ route("root 'home#index'")
30
+
31
+ force_copy
32
+
33
+ add_controller('home', 'index')
34
+
35
+ directory "app/controllers"
36
+ directory "app/models"
37
+ directory "app/views"
38
+ template 'app/views/layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
39
+ directory "app/services"
40
+ end
41
+
42
+ def create_db
43
+ # uncomment this if you need custom configuration in database.yml
44
+ # gsub_file('config/database.yml', ' encoding: unicode', db_development_settings)
45
+ db(drop: true, create: true)
46
+ end
47
+
48
+ def migrate_db
49
+ template 'db/seeds.rb' , 'db/seeds.rb'
50
+
51
+ db(migrate: true, seed: true)
52
+ end
53
+
54
+ def db_development_settings
55
+ <<-'RUBY'
56
+ encoding: unicode
57
+ host: 127.0.0.1
58
+ username: printspeak
59
+ password: printspeak
60
+ RUBY
61
+ end
@@ -0,0 +1,8 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ # def reseed
6
+ # SeedService.seed
7
+ # end
8
+ end
@@ -0,0 +1,31 @@
1
+ class SeedService
2
+ class << self
3
+ def seed(variant: :reset)
4
+ service = SeedService.new
5
+ service.call(variant: variant)
6
+ end
7
+ end
8
+
9
+ def call(variant: :reset)
10
+ reset if variant == :reset
11
+ refresh if variant == :refresh
12
+ create
13
+ end
14
+
15
+ private
16
+
17
+ def reset
18
+ # Person.delete_all
19
+ # Post.delete_all
20
+ # Project.delete_all
21
+ end
22
+
23
+ def refresh
24
+ end
25
+
26
+ def create
27
+ # FactoryBot.create_list(:post, rand(10..20))
28
+ # FactoryBot.create_list(:person, rand(10..20))
29
+ # FactoryBot.create_list(:project, rand(10..20))
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Rspec</h1>
2
+
3
+ <p>BD for Ruby</p>
@@ -0,0 +1,5 @@
1
+ <%= link_to 'Home', root_path %>
2
+ | <%= link_to 'Products', products_path %>
3
+ | <%= link_to 'Posts', posts_path %>
4
+ | <%= link_to 'People', people_path %>
5
+ <hr />
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
10
+ <%%= stylesheet_link_tag "application" %>
11
+ <%- else -%>
12
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
13
+ <%- end -%>
14
+ </head>
15
+
16
+ <body>
17
+ <header>
18
+ <%%= render 'layouts/navbar' %>
19
+ <hr />
20
+ </header>
21
+ <main>
22
+ <%%= yield %>
23
+ </main>
24
+ <footer>
25
+ <%%= render 'layouts/footer' %>
26
+ </footer>
27
+ </body>
28
+ </html>
29
+
@@ -0,0 +1,8 @@
1
+ # SeedService.seed
2
+ # david = User.create(email: 'david@site.com', name: 'david', password: 'password')
3
+ # james = User.create(email: 'james@site.com', name: 'james', password: 'password')
4
+ # sally = User.create(email: 'sally@site.com', name: 'sally', password: 'password')
5
+
6
+ # 10.times do |i|
7
+ # Post.create(title: "Post #{i}", body: "This is the body of post #{i}", user: User.all.sample)
8
+ # end
@@ -70,10 +70,11 @@
70
70
  "add_pretender",
71
71
  "add_public_suffix",
72
72
  "add_rails_html_sanitizer",
73
- "add_scenic",
74
73
  "add_ransack",
75
74
  "add_redcarpet",
76
75
  "add_rolify",
76
+ "add_scenic",
77
+ "add_rspec",
77
78
  "add_rubocop",
78
79
  "add_twilio_ruby"
79
80
  ],
@@ -568,13 +569,6 @@
568
569
  "default": false,
569
570
  "required": false
570
571
  },
571
- {
572
- "name": "add_scenic",
573
- "description": "Indicates when to generate add scenic",
574
- "type": "boolean",
575
- "default": false,
576
- "required": false
577
- },
578
572
  {
579
573
  "name": "add_ransack",
580
574
  "description": "Indicates when to generate add ransack",
@@ -596,6 +590,20 @@
596
590
  "default": false,
597
591
  "required": false
598
592
  },
593
+ {
594
+ "name": "add_scenic",
595
+ "description": "Indicates when to generate add scenic",
596
+ "type": "boolean",
597
+ "default": false,
598
+ "required": false
599
+ },
600
+ {
601
+ "name": "add_rspec",
602
+ "description": "Indicates when to generate add rspec",
603
+ "type": "boolean",
604
+ "default": false,
605
+ "required": false
606
+ },
599
607
  {
600
608
  "name": "add_rubocop",
601
609
  "description": "Indicates when to generate add rubocop",
@@ -60,10 +60,11 @@
60
60
  "add_pretender": false,
61
61
  "add_public_suffix": false,
62
62
  "add_rails_html_sanitizer": false,
63
- "add_scenic": false,
64
63
  "add_ransack": false,
65
64
  "add_redcarpet": false,
66
65
  "add_rolify": false,
66
+ "add_scenic": false,
67
+ "add_rspec": false,
67
68
  "add_rubocop": false,
68
69
  "add_twilio_ruby": false,
69
70
  "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/factory_bot/_.rb"
@@ -70,10 +70,11 @@
70
70
  "add_pretender",
71
71
  "add_public_suffix",
72
72
  "add_rails_html_sanitizer",
73
- "add_scenic",
74
73
  "add_ransack",
75
74
  "add_redcarpet",
76
75
  "add_rolify",
76
+ "add_scenic",
77
+ "add_rspec",
77
78
  "add_rubocop",
78
79
  "add_twilio_ruby"
79
80
  ],
@@ -569,28 +570,35 @@
569
570
  "required": false
570
571
  },
571
572
  {
572
- "name": "add_scenic",
573
+ "name": "add_ransack",
573
574
  "description": "",
574
575
  "type": "boolean",
575
576
  "default": false,
576
577
  "required": false
577
578
  },
578
579
  {
579
- "name": "add_ransack",
580
+ "name": "add_redcarpet",
580
581
  "description": "",
581
582
  "type": "boolean",
582
583
  "default": false,
583
584
  "required": false
584
585
  },
585
586
  {
586
- "name": "add_redcarpet",
587
+ "name": "add_rolify",
587
588
  "description": "",
588
589
  "type": "boolean",
589
590
  "default": false,
590
591
  "required": false
591
592
  },
592
593
  {
593
- "name": "add_rolify",
594
+ "name": "add_scenic",
595
+ "description": "",
596
+ "type": "boolean",
597
+ "default": false,
598
+ "required": false
599
+ },
600
+ {
601
+ "name": "add_rspec",
594
602
  "description": "",
595
603
  "type": "boolean",
596
604
  "default": false,
@@ -70,13 +70,13 @@
70
70
  "add_pretender": false,
71
71
  "add_public_suffix": false,
72
72
  "add_rails_html_sanitizer": false,
73
- "add_scenic": false,
74
73
  "add_ransack": false,
75
74
  "add_redcarpet": false,
76
75
  "add_rolify": false,
76
+ "add_scenic": false,
77
+ "add_rspec": false,
77
78
  "add_rubocop": false,
78
79
  "add_twilio_ruby": false,
79
- "add_factory_bot": true,
80
- "add_rspec": true
80
+ "add_factory_bot": true
81
81
  }
82
82
  }
@@ -1,10 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # lib/rails_app_generator/rag_initializer.rb
4
+ # add_if(:rspec)
5
+ # rag.add_option :add_rspec , type: :boolean, default: false
6
+
3
7
  module RailsAppGenerator
4
8
  # Custom add-ons for RailsAppGenerator
5
9
  module AddOns
6
- # Add RSpec unit testing support to rails application
10
+ # Add Rspec to rails application
7
11
  class Rspec < RailsAppGenerator::Addon
12
+ required_gem gem.version('rspec', '3.11.0', 'BDD for Ruby')
13
+
8
14
  depends_on :test
9
15
 
10
16
  def apply
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # require 'rails/generators/rails/app/app_generator'
4
-
5
3
  module RailsAppGenerator
6
4
  # AppGenerator is a wrapper for Rails::AppGenerator
7
5
  class AppGenerator < Rails::Generators::AppGenerator
@@ -153,15 +151,13 @@ module RailsAppGenerator
153
151
  add_if(:rubocop)
154
152
  end
155
153
 
156
- # def create_test_files
157
- # return if options[:skip_test]
158
-
159
- # super if options[:test] == 'minitest'
154
+ def create_test_files
155
+ return if options[:skip_test]
160
156
 
161
- # # puts options[:testing_framework]
157
+ super if options[:test] == 'minitest'
162
158
 
163
- # # add(:rspec) if options[:testing_framework] == 'rspec'
164
- # end
159
+ add(:rspec) if active?(:rspec) || options[:test] == 'rspec'
160
+ end
165
161
 
166
162
  # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
167
163
  def finish_template
@@ -209,6 +205,7 @@ module RailsAppGenerator
209
205
  add_if(:redcarpet) # tested
210
206
  add_if(:rolify) # tested
211
207
  add_if(:scenic)
208
+ # add_if(:rspec) # see: create_test_filers
212
209
  add_if(:services) # TODO: needs testing
213
210
  add_if(:shoulda) # TODO: needs testing
214
211
  add_if(:sidekiq) # TODO: needs testing
@@ -10,6 +10,7 @@ KConfig.configure do |config|
10
10
  # https://github.com/carbonfive/raygun-rails
11
11
  # https://github.com/abhaynikam/boring_generators
12
12
 
13
+ # NOTE: currently this is being done using add_rspec, but I should support this technique as well.
13
14
  # rag.add_option :test , type: :string , default: 'rspec'
14
15
 
15
16
  # rag.add_option :skip_namespace , type: :boolean , default: false , description: "Skip namespace (affects only isolated engines)"
@@ -68,6 +69,7 @@ KConfig.configure do |config|
68
69
  # future_option :skip_hotwire , type: :boolean, default: false # , description: "Skip Hotwire integration"
69
70
  # future_option :skip_jbuilder , type: :boolean, default: false # , description: "Skip jbuilder gem"
70
71
  # rag.add_option :skip_test , type: :boolean, default: false # , description: "Skip test files"
72
+ # NOTE: currently this is being done using add_rspec, but I should support this technique as well.
71
73
  rag.add_option :test , type: :string , default: 'rspec' # , description: "minitest or rspec (default: rspec)"
72
74
  # future_option :skip_system_test , type: :boolean, default: false # , description: "Skip system test files"
73
75
  # future_option :skip_bootsnap , type: :boolean, default: false # , description: "Skip bootsnap gem"
@@ -139,14 +141,15 @@ KConfig.configure do |config|
139
141
  rag.add_option :add_public_suffix , type: :boolean, default: false
140
142
  # pundit
141
143
  rag.add_option :add_rails_html_sanitizer , type: :boolean, default: false
142
- rag.add_option :add_scenic , type: :boolean, default: false
143
144
  # rails_app_generator
144
145
  rag.add_option :add_ransack , type: :boolean, default: false
145
146
  rag.add_option :add_redcarpet , type: :boolean, default: false
146
147
  rag.add_option :add_rolify , type: :boolean, default: false
148
+ rag.add_option :add_scenic , type: :boolean, default: false
147
149
  # services
148
150
  # shoulda
149
151
  # sidekiq
152
+ rag.add_option :add_rspec , type: :boolean, default: false
150
153
  rag.add_option :add_rubocop , type: :boolean, default: false
151
154
  rag.add_option :add_twilio_ruby , type: :boolean, default: false
152
155
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.3.2",
9
+ "version": "0.3.3",
10
10
  "dependencies": {
11
11
  "daisyui": "^2.20.0"
12
12
  },
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -5,14 +5,12 @@
5
5
  "when_folder_exist": "keep_git"
6
6
  },
7
7
  "opts": {
8
- "skip_git": false,
9
8
  "skip_test": true,
10
9
  "add_minimal_css": true,
11
10
  "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/factory_bot/_.rb",
12
11
  "add_annotate": true,
13
12
  "add_factory_bot": true,
14
13
  "add_factory_bot_rails": true,
15
- "add_faker": true,
16
- "add_rspec": true
14
+ "add_faker": true
17
15
  }
18
16
  }
@@ -0,0 +1,14 @@
1
+ {
2
+ "args": {
3
+ "app_path": "r7_rspec",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/addons",
5
+ "when_folder_exist": "destroy"
6
+ },
7
+ "opts": {
8
+ "skip_git": true,
9
+ "add_minimal_css": true,
10
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/addons/rspec/_.rb",
11
+ "test": "rspec",
12
+ "add_rspec": true
13
+ }
14
+ }