rails-architect 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9eaba9e7a51319c2b9c17d2612aa8937ec9858e3c23cdd22f5293f35c7f0b691
4
+ data.tar.gz: ec11a0500475321f9941a4e266b77226b692a2eca508b27a9ea47930942ad2dc
5
+ SHA512:
6
+ metadata.gz: 7a59adc47f124695972d4fc830cffd2e188bdba523071b8e99d1f51e55c9dd30cec9c96c4d3482b872f886720dcb3a678e6952cb62dc5cf913eec787702bad51
7
+ data.tar.gz: 7ad650cf77b1aef49fb1cc7a84784ecf36394f48472231df1f68150a618cfa258f4b73856fe1294468386ee3fb42d23a8393193096eb90cc784f280aef02f912
data/README.md ADDED
@@ -0,0 +1,134 @@
1
+ # RailsArchitect
2
+
3
+ A comprehensive architectural enforcement and code quality tool for Rails applications.
4
+
5
+ Rails Architect helps maintain clean Rails architecture by automatically detecting and preventing common anti-patterns, monitoring code complexity, enforcing test coverage, and providing architectural visualizations.
6
+
7
+ ## Features
8
+
9
+ - **Architecture Pattern Enforcement**: Detects fat models, complex controllers, and suggests service objects
10
+ - **Code Complexity Monitoring**: Tracks method complexity and suggests refactoring
11
+ - **XP/Agile Integration**: Built-in checks for test coverage requirements and TDD patterns
12
+ - **Performance Alerts**: Detects N+1 queries and inefficient database operations
13
+ - **Architecture Visualization**: Generates dependency diagrams and service flow representations
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ ```ruby
20
+ gem 'rails-architect'
21
+ ```
22
+
23
+ And then execute:
24
+
25
+ ```bash
26
+ bundle install
27
+ ```
28
+
29
+ Or install it yourself as:
30
+
31
+ ```bash
32
+ gem install rails-architect
33
+ ```
34
+
35
+ ### Configuration
36
+
37
+ Create `config/rails_architect.yml` in your Rails app:
38
+
39
+ ```yaml
40
+ defaults: &defaults
41
+ model_method_threshold: 10
42
+ controller_action_threshold: 5
43
+ method_complexity_threshold: 10
44
+ test_coverage_minimum: 80
45
+
46
+ development:
47
+ <<: *defaults
48
+
49
+ test:
50
+ <<: *defaults
51
+
52
+ production:
53
+ <<: *defaults
54
+ ```
55
+
56
+ ### Bullet Integration
57
+
58
+ Add to your `Gemfile`:
59
+
60
+ ```ruby
61
+ group :development do
62
+ gem 'bullet'
63
+ end
64
+ ```
65
+
66
+ And configure in `config/environments/development.rb`:
67
+
68
+ ```ruby
69
+ config.after_initialize do
70
+ Bullet.enable = true
71
+ Bullet.alert = true
72
+ Bullet.bullet_logger = true
73
+ Bullet.console = true
74
+ Bullet.rails_logger = true
75
+ end
76
+ ```
77
+
78
+ ### Pre-commit Hook
79
+
80
+ Copy the hook to your git hooks:
81
+
82
+ ```bash
83
+ cp $(bundle show rails-architect)/hooks/pre-commit .git/hooks/pre-commit
84
+ chmod +x .git/hooks/pre-commit
85
+ ```
86
+
87
+ ## Usage
88
+
89
+ ### Command Line
90
+
91
+ Run analysis on your Rails project:
92
+
93
+ ```bash
94
+ rails-architect analyze # Run all checks
95
+ rails-architect visualize # Generate diagrams
96
+ ```
97
+
98
+ ### Rake Tasks
99
+
100
+ ```bash
101
+ rake rails_architect:analyze # Run all checks (fails on issues)
102
+ rake rails_architect:visualize # Generate visualizations
103
+ rake rails_architect:check_coverage # Check test coverage
104
+ rake rails_architect:check_performance # Run performance checks
105
+ ```
106
+
107
+ ### Programmatic Usage
108
+
109
+ ```ruby
110
+ require 'rails_architect'
111
+
112
+ # Analyze the codebase
113
+ issues = RailsArchitect.analyze
114
+ issues.each do |issue|
115
+ puts "#{issue[:type]}: #{issue[:message]} in #{issue[:file]}"
116
+ end
117
+
118
+ # Generate visualizations
119
+ RailsArchitect.visualize
120
+ ```
121
+
122
+ ## Development
123
+
124
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
125
+
126
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`.
127
+
128
+ ## Contributing
129
+
130
+ Bug reports and pull requests are welcome on GitHub at https://github.com/samydghim/rails-architect.
131
+
132
+ ## License
133
+
134
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test"
8
+ t.libs << "lib"
9
+ t.test_files = FileList["test/**/*_test.rb"]
10
+ end
11
+
12
+ task default: :test
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'rails_architect'
5
+
6
+ case ARGV[0]
7
+ when 'analyze', nil
8
+ issues = RailsArchitect.analyze
9
+ puts "Found #{issues.count} architectural issues:"
10
+ issues.each { |issue| puts "- #{issue[:message]}" }
11
+ when 'visualize'
12
+ RailsArchitect.visualize
13
+ else
14
+ puts "Usage: rails-architect [analyze|visualize]"
15
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rails
4
+ module Architect
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "architect/version"
4
+
5
+ module Rails
6
+ module Architect
7
+ class Error < StandardError; end
8
+ # Your code goes here...
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module Rails
2
+ module Architect
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-architect
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sami Dghim
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '5.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '5.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: parser
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: ast
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rainbow
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: ruby-graphviz
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: bullet
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '7.0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '7.0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: yaml
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: minitest
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '5.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '5.0'
124
+ description: Rails Architect helps maintain clean Rails architecture by automatically
125
+ detecting and preventing common anti-patterns, monitoring code complexity, and providing
126
+ architectural visualizations.
127
+ email:
128
+ - samidghim@gmail.com
129
+ executables:
130
+ - rails-architect
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - README.md
135
+ - Rakefile
136
+ - bin/rails-architect
137
+ - lib/rails/architect.rb
138
+ - lib/rails/architect/version.rb
139
+ - sig/rails/architect.rbs
140
+ homepage: https://github.com/samydghim/rails-architect
141
+ licenses: []
142
+ metadata:
143
+ allowed_push_host: https://rubygems.org
144
+ homepage_uri: https://github.com/samydghim/rails-architect
145
+ source_code_uri: https://github.com/samydghim/rails-architect
146
+ rdoc_options: []
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 2.7.0
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements: []
160
+ rubygems_version: 3.6.9
161
+ specification_version: 4
162
+ summary: A comprehensive architectural enforcement and code quality tool for Rails
163
+ test_files: []