railsforge 1.0.0 → 1.0.1
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/README.md +7 -11
- data/bin/railsforge +3 -3
- data/lib/railsforge/cli_minimal.rb +93 -0
- data/lib/railsforge/loader.rb +68 -48
- data/lib/railsforge/templates/v3/job/template.rb +1 -1
- data/lib/railsforge/templates/v3/service/template.rb +13 -4
- metadata +11 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 01eaa16a2df2e84f2ce395692e0b09bd8691d96762548c6d8524ebf0f7870466
|
|
4
|
+
data.tar.gz: 8c80982d2fe51c9cc13acc5b580f43a9cabe162f2a09ccf5bcd9d5fe8ffe518b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3dd1707c9e98f715d55206aaa06872deb0764f6bf678618447a42a60485c3e089fe9ea7cd424cc35a6f2b1d8fbb83c23368147686daf09d9057b9e4187c29d7b
|
|
7
|
+
data.tar.gz: beef673a82ca8a20306e6193b10a176d8433d42350a533c30271d22b9a8f111da2cb4793f0f3f2927d51dc799bacf4daba62da48e9dc62a558ff27bddc8897a6
|
data/README.md
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
# RailsForge
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<a href="https://github.com/
|
|
5
|
-
<img src="https://img.shields.io/github/actions/workflow/status/
|
|
4
|
+
<a href="https://github.com/mfifth/RailsForge/actions">
|
|
5
|
+
<img src="https://img.shields.io/github/actions/workflow/status/mfifth/railsforge/main.yml?label=CI" alt="CI Status">
|
|
6
6
|
</a>
|
|
7
7
|
<a href="https://rubygems.org/gems/railsforge">
|
|
8
|
-
<img src="https://img.shields.io/gem/v/railsforge" alt="Gem Version">
|
|
8
|
+
<img src="https://img.shields.io/gem/v/railsforge.svg?label=rubygems" alt="Gem Version">
|
|
9
9
|
</a>
|
|
10
|
-
<a href="https://
|
|
11
|
-
<img src="https://img.shields.io/
|
|
12
|
-
</a>
|
|
13
|
-
<a href="https://github.com/railsforge/railsforge/blob/main/LICENSE">
|
|
14
|
-
<img src="https://img.shields.io/github/license/railsforge/railsforge" alt="License">
|
|
10
|
+
<a href="https://github.com/mfifth/RailsForge/blob/main/LICENSE">
|
|
11
|
+
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License">
|
|
15
12
|
</a>
|
|
16
13
|
</p>
|
|
17
14
|
|
|
@@ -41,8 +38,7 @@ RailsForge streamlines Rails development by providing automated generators and a
|
|
|
41
38
|
|
|
42
39
|
### Requirements
|
|
43
40
|
|
|
44
|
-
- **Ruby** version
|
|
45
|
-
- **Rails** version 5.0 or higher (for Rails-specific features)
|
|
41
|
+
- **Ruby** version 3.0 or higher
|
|
46
42
|
- **Bundler** for gem management
|
|
47
43
|
|
|
48
44
|
### Setup Steps
|
|
@@ -464,7 +460,7 @@ We welcome contributions! Please see our contributing guidelines:
|
|
|
464
460
|
|
|
465
461
|
```bash
|
|
466
462
|
# Fork the repository
|
|
467
|
-
git clone https://github.com/
|
|
463
|
+
git clone https://github.com/mfifth/RailsForge.git
|
|
468
464
|
cd railsforge
|
|
469
465
|
|
|
470
466
|
# Install dependencies
|
data/bin/railsforge
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# CLI entrypoint for RailsForge gem
|
|
3
|
-
#
|
|
3
|
+
# Uses minimal loader for fast --help and --version
|
|
4
4
|
|
|
5
5
|
require_relative "../lib/railsforge"
|
|
6
6
|
|
|
7
|
-
#
|
|
8
|
-
RailsForge::
|
|
7
|
+
# Use minimal CLI for fast startup
|
|
8
|
+
RailsForge::CLIMinimal.start(ARGV)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Minimal CLI for fast --help and --version
|
|
2
|
+
# This is loaded first, then full CLI is lazy-loaded when needed
|
|
3
|
+
|
|
4
|
+
module RailsForge
|
|
5
|
+
class CLIMinimal
|
|
6
|
+
def self.start(args)
|
|
7
|
+
command = args.shift
|
|
8
|
+
|
|
9
|
+
case command
|
|
10
|
+
when nil, "--help", "-h"
|
|
11
|
+
display_help
|
|
12
|
+
exit 0
|
|
13
|
+
when "--version", "-v"
|
|
14
|
+
# Only load version, nothing else
|
|
15
|
+
require_relative "version"
|
|
16
|
+
puts "RailsForge #{RailsForge::VERSION}"
|
|
17
|
+
exit 0
|
|
18
|
+
else
|
|
19
|
+
# Load full CLI for other commands - this is where the slowness comes from
|
|
20
|
+
require_relative "cli"
|
|
21
|
+
require_relative "profiles"
|
|
22
|
+
require_relative "template_loader"
|
|
23
|
+
require_relative "generator"
|
|
24
|
+
|
|
25
|
+
# Load all generators
|
|
26
|
+
require_relative "generators/base_generator"
|
|
27
|
+
require_relative "generators/service_generator"
|
|
28
|
+
require_relative "generators/view_component_generator"
|
|
29
|
+
require_relative "generators/stimulus_controller_generator"
|
|
30
|
+
require_relative "generators/demo_generator"
|
|
31
|
+
require_relative "generators/devops_generator"
|
|
32
|
+
require_relative "generators/monitoring_generator"
|
|
33
|
+
require_relative "generators/test_generator"
|
|
34
|
+
|
|
35
|
+
# Load all analyzers
|
|
36
|
+
require_relative "analyzers/base_analyzer"
|
|
37
|
+
require_relative "analyzers/controller_analyzer"
|
|
38
|
+
require_relative "analyzers/model_analyzer"
|
|
39
|
+
require_relative "analyzers/spec_analyzer"
|
|
40
|
+
require_relative "analyzers/database_analyzer"
|
|
41
|
+
require_relative "analyzers/metrics_analyzer"
|
|
42
|
+
require_relative "analyzers/refactor_analyzer"
|
|
43
|
+
require_relative "analyzers/security_analyzer"
|
|
44
|
+
require_relative "analyzers/performance_analyzer"
|
|
45
|
+
|
|
46
|
+
# Load refactors and plugins
|
|
47
|
+
require_relative "refactors/refactor_controller"
|
|
48
|
+
require_relative "plugins"
|
|
49
|
+
|
|
50
|
+
# Load legacy modules
|
|
51
|
+
require_relative "mailer_generator"
|
|
52
|
+
require_relative "feature_generator"
|
|
53
|
+
require_relative "api_generator"
|
|
54
|
+
require_relative "audit"
|
|
55
|
+
require_relative "doctor"
|
|
56
|
+
require_relative "graph"
|
|
57
|
+
require_relative "wizard"
|
|
58
|
+
require_relative "wizard_tui"
|
|
59
|
+
require_relative "config"
|
|
60
|
+
|
|
61
|
+
# Dispatch to full CLI
|
|
62
|
+
CLI.start([command] + args)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.display_help
|
|
67
|
+
puts <<~HELP
|
|
68
|
+
RailsForge - A Rails development toolkit
|
|
69
|
+
|
|
70
|
+
Usage:
|
|
71
|
+
railsforge new <app_name> Create a new Rails app
|
|
72
|
+
railsforge generate service <name> Generate a service object
|
|
73
|
+
railsforge generate query <name> Generate a query object
|
|
74
|
+
railsforge generate job <name> Generate a job object
|
|
75
|
+
railsforge generate demo <name> Generate a demo project
|
|
76
|
+
railsforge generate devops Generate Docker/CI-CD configs
|
|
77
|
+
railsforge generate monitoring Generate Sentry/Lograge configs
|
|
78
|
+
railsforge generate test <name> Generate test files
|
|
79
|
+
railsforge analyze Analyze code quality
|
|
80
|
+
railsforge doctor Full project health check
|
|
81
|
+
railsforge audit Architecture audit
|
|
82
|
+
railsforge graph Dependency graph
|
|
83
|
+
railsforge refactor Refactoring suggestions
|
|
84
|
+
railsforge wizard Interactive project setup
|
|
85
|
+
railsforge plugins Plugin management
|
|
86
|
+
railsforge config Configuration
|
|
87
|
+
railsforge profiles List available profiles
|
|
88
|
+
railsforge --version, -v Show version
|
|
89
|
+
railsforge --help, -h Show this help
|
|
90
|
+
HELP
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
data/lib/railsforge/loader.rb
CHANGED
|
@@ -1,56 +1,76 @@
|
|
|
1
1
|
# RailsForge modular loader
|
|
2
|
-
# This file centralizes all require statements
|
|
2
|
+
# This file centralizes all require statements with lazy loading
|
|
3
3
|
|
|
4
4
|
require "fileutils"
|
|
5
5
|
|
|
6
6
|
# Get the lib directory path
|
|
7
7
|
LIB_DIR = File.dirname(__FILE__)
|
|
8
8
|
|
|
9
|
-
# Core modules
|
|
9
|
+
# Core modules - always needed
|
|
10
10
|
require_relative "version"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
require_relative "generators
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
require_relative "
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
require_relative
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
require_relative "
|
|
36
|
-
require_relative "
|
|
37
|
-
|
|
38
|
-
#
|
|
39
|
-
require_relative "
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
require_relative "
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
require_relative "
|
|
46
|
-
require_relative "
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
require_relative "
|
|
50
|
-
require_relative "
|
|
51
|
-
require_relative "
|
|
52
|
-
require_relative "
|
|
53
|
-
require_relative "
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
require_relative "
|
|
11
|
+
|
|
12
|
+
# Minimal CLI loader for --help and --version (fast)
|
|
13
|
+
require_relative "cli_minimal"
|
|
14
|
+
|
|
15
|
+
# Lazy-load everything else
|
|
16
|
+
module RailsForge
|
|
17
|
+
class << self
|
|
18
|
+
# Lazy-load generators
|
|
19
|
+
def require_generator(name)
|
|
20
|
+
require_relative "generators/#{name}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Lazy-load analyzers
|
|
24
|
+
def require_analyzer(name)
|
|
25
|
+
require_relative "analyzers/#{name}"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Lazy-load other modules
|
|
29
|
+
def require_module(name)
|
|
30
|
+
require_relative name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Preload all (for commands that need everything)
|
|
34
|
+
def preload_all!
|
|
35
|
+
require_relative "profiles"
|
|
36
|
+
require_relative "template_loader"
|
|
37
|
+
|
|
38
|
+
# Generators
|
|
39
|
+
require_relative "generators/base_generator"
|
|
40
|
+
require_relative "generators/service_generator"
|
|
41
|
+
require_relative "generators/view_component_generator"
|
|
42
|
+
require_relative "generators/stimulus_controller_generator"
|
|
43
|
+
require_relative "generators/demo_generator"
|
|
44
|
+
require_relative "generators/devops_generator"
|
|
45
|
+
require_relative "generators/monitoring_generator"
|
|
46
|
+
require_relative "generators/test_generator"
|
|
47
|
+
|
|
48
|
+
# Analyzers
|
|
49
|
+
require_relative "analyzers/base_analyzer"
|
|
50
|
+
require_relative "analyzers/controller_analyzer"
|
|
51
|
+
require_relative "analyzers/model_analyzer"
|
|
52
|
+
require_relative "analyzers/spec_analyzer"
|
|
53
|
+
require_relative "analyzers/database_analyzer"
|
|
54
|
+
require_relative "analyzers/metrics_analyzer"
|
|
55
|
+
require_relative "analyzers/refactor_analyzer"
|
|
56
|
+
require_relative "analyzers/security_analyzer"
|
|
57
|
+
require_relative "analyzers/performance_analyzer"
|
|
58
|
+
|
|
59
|
+
# Refactors & plugins
|
|
60
|
+
require_relative "refactors/refactor_controller"
|
|
61
|
+
require_relative "plugins"
|
|
62
|
+
|
|
63
|
+
# Legacy
|
|
64
|
+
require_relative "mailer_generator"
|
|
65
|
+
require_relative "feature_generator"
|
|
66
|
+
require_relative "api_generator"
|
|
67
|
+
require_relative "audit"
|
|
68
|
+
require_relative "doctor"
|
|
69
|
+
require_relative "graph"
|
|
70
|
+
require_relative "wizard"
|
|
71
|
+
require_relative "wizard_tui"
|
|
72
|
+
require_relative "config"
|
|
73
|
+
require_relative "generator"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -23,7 +23,7 @@ class <%= class_name %>Job < ApplicationJob
|
|
|
23
23
|
# TODO: Implement job logic
|
|
24
24
|
# Example:
|
|
25
25
|
# user = User.find(args[:user_id])
|
|
26
|
-
# user.
|
|
26
|
+
# UserMailer.welcome(user).deliver_now
|
|
27
27
|
Rails.logger.info("Executing #{self.class.name}")
|
|
28
28
|
end
|
|
29
29
|
|
|
@@ -46,16 +46,25 @@ class <%= class_name %>
|
|
|
46
46
|
private
|
|
47
47
|
|
|
48
48
|
# Validate inputs - returns Result
|
|
49
|
+
# Override this method to add custom validation
|
|
50
|
+
# @example
|
|
51
|
+
# def validate!
|
|
52
|
+
# return Failure(errors: ['Name required']) if @params[:name].blank?
|
|
53
|
+
# Success(true)
|
|
54
|
+
# end
|
|
49
55
|
def validate!
|
|
50
|
-
# TODO: Add validation logic
|
|
51
|
-
# Example:
|
|
52
|
-
# return Failure(errors: ['Name required']) if @params[:name].blank?
|
|
53
56
|
Success(true)
|
|
54
57
|
end
|
|
55
58
|
|
|
56
59
|
# Process the main logic - returns Result
|
|
60
|
+
# Override this method to implement your service logic
|
|
61
|
+
# @example
|
|
62
|
+
# def process!
|
|
63
|
+
# user = User.create!(@params)
|
|
64
|
+
# @result = { user: user }
|
|
65
|
+
# Success(true)
|
|
66
|
+
# end
|
|
57
67
|
def process!
|
|
58
|
-
# TODO: Implement service logic
|
|
59
68
|
@result = {}
|
|
60
69
|
Success(true)
|
|
61
70
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: railsforge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- RailsForge Contributors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -16,42 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.
|
|
19
|
+
version: '1.3'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activesupport
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '5.0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '5.0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rails
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '5.0'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '5.0'
|
|
26
|
+
version: '1.3'
|
|
55
27
|
- !ruby/object:Gem::Dependency
|
|
56
28
|
name: bundler
|
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,34 +58,33 @@ dependencies:
|
|
|
86
58
|
requirements:
|
|
87
59
|
- - "~>"
|
|
88
60
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '3.
|
|
61
|
+
version: '3.13'
|
|
90
62
|
type: :development
|
|
91
63
|
prerelease: false
|
|
92
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
65
|
requirements:
|
|
94
66
|
- - "~>"
|
|
95
67
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '3.
|
|
68
|
+
version: '3.13'
|
|
97
69
|
- !ruby/object:Gem::Dependency
|
|
98
70
|
name: rubocop
|
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
|
100
72
|
requirements:
|
|
101
73
|
- - "~>"
|
|
102
74
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '1.
|
|
75
|
+
version: '1.85'
|
|
104
76
|
type: :development
|
|
105
77
|
prerelease: false
|
|
106
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
79
|
requirements:
|
|
108
80
|
- - "~>"
|
|
109
81
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '1.
|
|
82
|
+
version: '1.85'
|
|
111
83
|
description: |
|
|
112
84
|
RailsForge is a comprehensive command-line tool for automatically generating
|
|
113
85
|
essential Rails application components, including monitoring configurations,
|
|
114
86
|
DevOps setups, and security/performance analyzers.
|
|
115
87
|
email:
|
|
116
|
-
- contact@railsforge.dev
|
|
117
88
|
executables:
|
|
118
89
|
- railsforge
|
|
119
90
|
extensions: []
|
|
@@ -135,6 +106,7 @@ files:
|
|
|
135
106
|
- lib/railsforge/api_generator.rb
|
|
136
107
|
- lib/railsforge/audit.rb
|
|
137
108
|
- lib/railsforge/cli.rb
|
|
109
|
+
- lib/railsforge/cli_minimal.rb
|
|
138
110
|
- lib/railsforge/config.rb
|
|
139
111
|
- lib/railsforge/database_analyzer.rb
|
|
140
112
|
- lib/railsforge/doctor.rb
|
|
@@ -202,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
202
174
|
requirements:
|
|
203
175
|
- - ">="
|
|
204
176
|
- !ruby/object:Gem::Version
|
|
205
|
-
version: '
|
|
177
|
+
version: '3.0'
|
|
206
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
179
|
requirements:
|
|
208
180
|
- - ">="
|