synthra 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 +7 -0
- data/.rspec +4 -0
- data/.rubocop.yml +40 -0
- data/.yardopts +18 -0
- data/ACCESS_DOCS.md +116 -0
- data/ADVANCED_FEATURES_SUMMARY.md +245 -0
- data/CHANGELOG.md +498 -0
- data/CODE_OF_CONDUCT.md +122 -0
- data/CONTRIBUTING.md +307 -0
- data/DOCUMENTATION.md +204 -0
- data/DOCUMENTATION_GUIDE.md +194 -0
- data/LICENSE +22 -0
- data/README.md +1458 -0
- data/Rakefile +128 -0
- data/benchmark/README.md +591 -0
- data/benchmark/batch_generation.rb +63 -0
- data/benchmark/engine_comparison.rb +295 -0
- data/benchmark/single_record.rb +108 -0
- data/benchmark/streaming.rb +74 -0
- data/docs/ACTIVERECORD_INFERENCE.md +524 -0
- data/docs/API_SERVER.md +278 -0
- data/docs/CONFIG_FILE.md +315 -0
- data/docs/DATA_CONTRACTS.md +312 -0
- data/docs/ENHANCED_REPL.md +304 -0
- data/docs/FACTORY_BOT.md +271 -0
- data/docs/GITHUB_ACTION.md +420 -0
- data/docs/GRAPHQL_EXPORT.md +303 -0
- data/docs/GRAPHQL_FEDERATION.md +651 -0
- data/docs/HOW_TO_GENERATE_DOCS.md +252 -0
- data/docs/LSP.md +189 -0
- data/docs/MIGRATION_GENERATOR.md +547 -0
- data/docs/MOCK_SERVER.md +280 -0
- data/docs/NATIVE_ENGINE.md +298 -0
- data/docs/OPENAPI_EXPORT.md +252 -0
- data/docs/PERFORMANCE_MODE.md +228 -0
- data/docs/PERSONAS.md +547 -0
- data/docs/PROPERTY_TESTING.md +284 -0
- data/docs/PROTOBUF_EXPORT.md +276 -0
- data/docs/QUALITY_METRICS.md +555 -0
- data/docs/QUICK_REFERENCE.md +88 -0
- data/docs/RAILS_ENGINE.md +404 -0
- data/docs/RAILS_INTEGRATION.md +454 -0
- data/docs/README.md +175 -0
- data/docs/REPL_QUICK_REFERENCE.md +149 -0
- data/docs/RUST_INTEGRATION_GUIDE.md +1376 -0
- data/docs/SCENARIOS.md +576 -0
- data/docs/SECURITY_TESTING.md +318 -0
- data/docs/SNAPSHOT_TESTING.md +308 -0
- data/docs/STRING_TEXT_TYPES_REFERENCE.md +512 -0
- data/docs/TERRAFORM_EXPORT.md +447 -0
- data/docs/TIME_TRAVEL.md +507 -0
- data/docs/USAGE_GUIDE.md +980 -0
- data/docs/WEBHOOK_SIMULATOR.md +579 -0
- data/docs/advanced_features.md +183 -0
- data/docs/api_reference.md +153 -0
- data/docs/behaviors.md +138 -0
- data/docs/best_practices.md +191 -0
- data/docs/dsl_reference.md +172 -0
- data/docs/examples.md +162 -0
- data/docs/generation_modes.md +125 -0
- data/docs/getting_started.md +92 -0
- data/docs/index.html +177 -0
- data/docs/strategic/CLOUD_REGISTRY_ARCHITECTURE.md +268 -0
- data/docs/strategic/SIMD_OPTIMIZATION_STRATEGY.md +153 -0
- data/docs/troubleshooting.md +215 -0
- data/docs/type_reference.md +224 -0
- data/examples/hostile_mode_demo.rb +64 -0
- data/exe/synthra +6 -0
- data/ext/synthra_native/Cargo.lock +972 -0
- data/ext/synthra_native/Cargo.toml +46 -0
- data/ext/synthra_native/extconf.rb +41 -0
- data/ext/synthra_native/src/generator.rs +397 -0
- data/ext/synthra_native/src/lib.rs +229 -0
- data/ext/synthra_native/src/types.rs +1485 -0
- data/lib/generators/synthra/install_generator.rb +86 -0
- data/lib/generators/synthra/templates/api_response.dsl +15 -0
- data/lib/generators/synthra/templates/fake_data.rake +116 -0
- data/lib/generators/synthra/templates/synthra.yml +31 -0
- data/lib/generators/synthra/templates/synthra_support.rb +19 -0
- data/lib/generators/synthra/templates/user.dsl +11 -0
- data/lib/synthra/activerecord_inference.rb +394 -0
- data/lib/synthra/api.rb +381 -0
- data/lib/synthra/api_server.rb +718 -0
- data/lib/synthra/behaviors/applicator.rb +165 -0
- data/lib/synthra/behaviors/base.rb +155 -0
- data/lib/synthra/behaviors/close_connection.rb +60 -0
- data/lib/synthra/behaviors/deprecated.rb +100 -0
- data/lib/synthra/behaviors/failure.rb +69 -0
- data/lib/synthra/behaviors/latency.rb +103 -0
- data/lib/synthra/behaviors/partial_data.rb +83 -0
- data/lib/synthra/behaviors/randomize_order.rb +74 -0
- data/lib/synthra/behaviors/registry.rb +238 -0
- data/lib/synthra/behaviors/simulate_error.rb +79 -0
- data/lib/synthra/cli/commands/base.rb +105 -0
- data/lib/synthra/cli/commands/diff.rb +227 -0
- data/lib/synthra/cli/commands/docs.rb +67 -0
- data/lib/synthra/cli/commands/export.rb +150 -0
- data/lib/synthra/cli/commands/generate.rb +72 -0
- data/lib/synthra/cli/commands/import.rb +80 -0
- data/lib/synthra/cli/commands/lint.rb +53 -0
- data/lib/synthra/cli/commands/live.rb +57 -0
- data/lib/synthra/cli/commands/seed.rb +99 -0
- data/lib/synthra/cli/commands/validate.rb +28 -0
- data/lib/synthra/cli.rb +2471 -0
- data/lib/synthra/config_file.rb +129 -0
- data/lib/synthra/configuration.rb +281 -0
- data/lib/synthra/contracts_registry.rb +408 -0
- data/lib/synthra/database_seeder.rb +268 -0
- data/lib/synthra/deterministic_ids.rb +218 -0
- data/lib/synthra/documentation_generator.rb +414 -0
- data/lib/synthra/engine.rb +251 -0
- data/lib/synthra/errors.rb +1169 -0
- data/lib/synthra/export/base.rb +85 -0
- data/lib/synthra/export/csv.rb +101 -0
- data/lib/synthra/export/graphql.rb +266 -0
- data/lib/synthra/export/graphql_federation.rb +377 -0
- data/lib/synthra/export/graphviz.rb +258 -0
- data/lib/synthra/export/javascript.rb +327 -0
- data/lib/synthra/export/json_data.rb +61 -0
- data/lib/synthra/export/json_schema.rb +290 -0
- data/lib/synthra/export/openapi.rb +514 -0
- data/lib/synthra/export/protobuf.rb +483 -0
- data/lib/synthra/export/python.rb +560 -0
- data/lib/synthra/export/sql.rb +381 -0
- data/lib/synthra/export/sql_insert.rb +152 -0
- data/lib/synthra/export/terraform.rb +501 -0
- data/lib/synthra/export/type_mapping.rb +389 -0
- data/lib/synthra/export/typescript.rb +300 -0
- data/lib/synthra/export/xml_data.rb +104 -0
- data/lib/synthra/export/yaml_data.rb +56 -0
- data/lib/synthra/export.rb +404 -0
- data/lib/synthra/factory_bot_integration.rb +157 -0
- data/lib/synthra/field.rb +440 -0
- data/lib/synthra/functions/registry.rb +104 -0
- data/lib/synthra/generator/context.rb +372 -0
- data/lib/synthra/generator/engine.rb +336 -0
- data/lib/synthra/generator/faker_adapter.rb +425 -0
- data/lib/synthra/generator/modes.rb +444 -0
- data/lib/synthra/generator/resolver.rb +256 -0
- data/lib/synthra/generator/rng.rb +273 -0
- data/lib/synthra/generator/streamer.rb +63 -0
- data/lib/synthra/generator/uniqueness.rb +118 -0
- data/lib/synthra/initializer.rb +97 -0
- data/lib/synthra/limits.rb +279 -0
- data/lib/synthra/live_preview.rb +518 -0
- data/lib/synthra/loader_config.rb +78 -0
- data/lib/synthra/lsp/server.rb +689 -0
- data/lib/synthra/migration_generator.rb +301 -0
- data/lib/synthra/mixin.rb +174 -0
- data/lib/synthra/mock_server.rb +458 -0
- data/lib/synthra/native_engine.rb +304 -0
- data/lib/synthra/openapi_importer.rb +228 -0
- data/lib/synthra/output/json_formatter.rb +40 -0
- data/lib/synthra/output/ndjson_formatter.rb +55 -0
- data/lib/synthra/parser/ast.rb +1287 -0
- data/lib/synthra/parser/lexer.rb +1152 -0
- data/lib/synthra/parser/parser.rb +1664 -0
- data/lib/synthra/parser/tokens.rb +461 -0
- data/lib/synthra/performance_mode.rb +364 -0
- data/lib/synthra/personas.rb +397 -0
- data/lib/synthra/property_testing.rb +172 -0
- data/lib/synthra/quality_metrics.rb +405 -0
- data/lib/synthra/rails_test_helper.rb +248 -0
- data/lib/synthra/registry.rb +533 -0
- data/lib/synthra/relationships.rb +193 -0
- data/lib/synthra/repl/enhanced_repl.rb +607 -0
- data/lib/synthra/repl/formatter.rb +191 -0
- data/lib/synthra/scenarios.rb +423 -0
- data/lib/synthra/schema.rb +605 -0
- data/lib/synthra/schema_inheritance.rb +104 -0
- data/lib/synthra/schema_versioning.rb +212 -0
- data/lib/synthra/snapshot_testing.rb +199 -0
- data/lib/synthra/time_travel.rb +338 -0
- data/lib/synthra/type_definitions.rb +274 -0
- data/lib/synthra/types/address_location/addresses.rb +125 -0
- data/lib/synthra/types/address_location/airports.rb +200 -0
- data/lib/synthra/types/address_location/banks_hospitals.rb +207 -0
- data/lib/synthra/types/address_location/locations.rb +406 -0
- data/lib/synthra/types/base.rb +48 -0
- data/lib/synthra/types/commerce_products/commerce.rb +119 -0
- data/lib/synthra/types/commerce_products/companies.rb +71 -0
- data/lib/synthra/types/commerce_products/construction.rb +126 -0
- data/lib/synthra/types/commerce_products/products.rb +205 -0
- data/lib/synthra/types/core/collections.rb +513 -0
- data/lib/synthra/types/core/defaults.rb +76 -0
- data/lib/synthra/types/core/enums.rb +102 -0
- data/lib/synthra/types/core/identifiers.rb +445 -0
- data/lib/synthra/types/core/primitives.rb +586 -0
- data/lib/synthra/types/core/references.rb +466 -0
- data/lib/synthra/types/core/sequences.rb +304 -0
- data/lib/synthra/types/crypto/crypto.rb +162 -0
- data/lib/synthra/types/date_time/dates.rb +387 -0
- data/lib/synthra/types/finance_banking/banking.rb +424 -0
- data/lib/synthra/types/finance_banking/credit_cards.rb +24 -0
- data/lib/synthra/types/finance_banking/identifiers.rb +93 -0
- data/lib/synthra/types/formula.rb +184 -0
- data/lib/synthra/types/health_medical/medical.rb +150 -0
- data/lib/synthra/types/hostile_payloads.rb +122 -0
- data/lib/synthra/types/json_array.rb +51 -0
- data/lib/synthra/types/media_entertainment/media.rb +62 -0
- data/lib/synthra/types/naughty_string.rb +30 -0
- data/lib/synthra/types/personal_names/chinese.rb +41 -0
- data/lib/synthra/types/personal_names/identifiers.rb +187 -0
- data/lib/synthra/types/personal_names/names.rb +246 -0
- data/lib/synthra/types/personal_names/national_id.rb +89 -0
- data/lib/synthra/types/personal_names/titles_suffixes.rb +41 -0
- data/lib/synthra/types/regex.rb +248 -0
- data/lib/synthra/types/registry.rb +182 -0
- data/lib/synthra/types/repeating_element.rb +50 -0
- data/lib/synthra/types/scenario.rb +29 -0
- data/lib/synthra/types/technology_internet/apps.rb +67 -0
- data/lib/synthra/types/technology_internet/communication.rb +162 -0
- data/lib/synthra/types/technology_internet/devices.rb +80 -0
- data/lib/synthra/types/technology_internet/formats.rb +139 -0
- data/lib/synthra/types/technology_internet/networking.rb +143 -0
- data/lib/synthra/types/template.rb +92 -0
- data/lib/synthra/types/text_content/business.rb +128 -0
- data/lib/synthra/types/text_content/colors.rb +70 -0
- data/lib/synthra/types/text_content/misc.rb +237 -0
- data/lib/synthra/types/text_content/security.rb +130 -0
- data/lib/synthra/types/text_content/text_generation.rb +532 -0
- data/lib/synthra/types/travel/travel.rb +150 -0
- data/lib/synthra/utils/string_distance.rb +133 -0
- data/lib/synthra/validator/dsl_validator.rb +339 -0
- data/lib/synthra/validator/path_validator.rb +615 -0
- data/lib/synthra/version.rb +35 -0
- data/lib/synthra/webhook_simulator.rb +341 -0
- data/lib/synthra.rb +259 -0
- data/schemas/address.dsl +16 -0
- data/schemas/api_response.dsl +8 -0
- data/schemas/error_payload.dsl +9 -0
- data/schemas/order.dsl +10 -0
- data/schemas/order_item.dsl +8 -0
- data/schemas/payment.dsl +11 -0
- data/schemas/social_post.dsl +13 -0
- data/schemas/user.dsl +10 -0
- data/scripts/batch_fix_all.rb +96 -0
- data/scripts/delete_old_files.rb +32 -0
- data/scripts/fix_all_grouped_files.rb +137 -0
- data/scripts/fix_all_indentation.rb +48 -0
- data/scripts/fix_all_syntax.rb +124 -0
- data/scripts/fix_grouped_files.rb +184 -0
- data/scripts/fix_syntax_errors.rb +108 -0
- data/scripts/group_domain_types.rb +112 -0
- data/scripts/group_domain_types_fixed.rb +150 -0
- data/scripts/merge_domains_to_one_file.rb +68 -0
- data/scripts/move_existing_types.rb +130 -0
- data/scripts/split_grouped_types.rb +142 -0
- data/tech_docs/README.md +134 -0
- data/tech_docs/advanced/streaming.md +405 -0
- data/tech_docs/advanced/thread_safety.md +253 -0
- data/tech_docs/api/overview.md +485 -0
- data/tech_docs/appendices/type_chart.md +193 -0
- data/tech_docs/basic_concepts.md +383 -0
- data/tech_docs/behaviors/overview.md +346 -0
- data/tech_docs/dsl/complex_types.md +790 -0
- data/tech_docs/dsl/core_types.md +464 -0
- data/tech_docs/dsl/datetime_types.md +325 -0
- data/tech_docs/dsl/field_modifiers.md +414 -0
- data/tech_docs/dsl/grammar.md +431 -0
- data/tech_docs/dsl/schema_definition.md +399 -0
- data/tech_docs/export/README.md +276 -0
- data/tech_docs/installation.md +273 -0
- data/tech_docs/integration/ci_cd.md +707 -0
- data/tech_docs/integration/ci_cd_guide.md +579 -0
- data/tech_docs/integration/factory_bot.md +485 -0
- data/tech_docs/integration/rails.md +630 -0
- data/tech_docs/integration/rspec.md +449 -0
- data/tech_docs/modes/overview.md +350 -0
- data/tech_docs/performance/NATIVE_RUST_EXTENSION.md +1270 -0
- data/tech_docs/performance/OPTIMIZATION_GUIDE.md +901 -0
- data/tech_docs/quick_start.md +256 -0
- data/tech_docs/templates/README.md +805 -0
- data/tech_docs/tutorials/advanced.md +371 -0
- data/tech_docs/tutorials/getting_started.md +189 -0
- data/tech_docs/tutorials/intermediate.md +231 -0
- data/tech_docs/tutorials/template_gallery.md +569 -0
- data/tech_example/01_basic_usage.rb +238 -0
- data/tech_example/02_types_demo.rb +336 -0
- data/tech_example/04_cli_usage.md +429 -0
- data/tech_example/05_database_seeding.rb +283 -0
- data/tech_example/07_rspec_integration.rb +359 -0
- data/tech_example/10_custom_types.rb +387 -0
- data/tech_example/12_behaviors.rb +372 -0
- data/tech_example/13_twitter_dm_example.rb +120 -0
- data/tech_example/14_exact_json_structure.rb +253 -0
- data/tech_example/16_lsp_server.rb +56 -0
- data/tech_example/17_property_testing.rb +92 -0
- data/tech_example/18_enhanced_repl.rb +120 -0
- data/tech_example/19_security_fuzzing.rb +145 -0
- data/tech_example/NEW_FEATURES.md +169 -0
- data/tech_example/README.md +118 -0
- data/tech_example/schemas/api_response.dsl +123 -0
- data/tech_example/schemas/ecommerce.dsl +121 -0
- data/tech_example/schemas/twitter_dm.dsl +109 -0
- data/tech_example/schemas/user.dsl +36 -0
- data/vscode-extension/README.md +246 -0
- data/vscode-extension/language-configuration.json +31 -0
- data/vscode-extension/package.json +55 -0
- data/vscode-extension/snippets/fakedatadsl.json +198 -0
- data/vscode-extension/syntaxes/fakedatadsl.tmLanguage.json +128 -0
- metadata +478 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Installation Guide
|
|
2
|
+
|
|
3
|
+
Complete guide to installing and setting up FakeDataDSL in your Ruby project.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Requirements](#requirements)
|
|
8
|
+
- [Installation Methods](#installation-methods)
|
|
9
|
+
- [Verifying Installation](#verifying-installation)
|
|
10
|
+
- [Development Installation](#development-installation)
|
|
11
|
+
- [Troubleshooting](#troubleshooting)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
### Minimum Requirements
|
|
18
|
+
|
|
19
|
+
| Requirement | Version |
|
|
20
|
+
|-------------|---------|
|
|
21
|
+
| Ruby | 3.1.0 or higher |
|
|
22
|
+
| Bundler | 2.0 or higher (recommended) |
|
|
23
|
+
|
|
24
|
+
### Optional Dependencies
|
|
25
|
+
|
|
26
|
+
| Dependency | Purpose |
|
|
27
|
+
|------------|---------|
|
|
28
|
+
| Faker | Automatically installed - provides realistic data |
|
|
29
|
+
| Zeitwerk | Automatically installed - autoloading |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Installation Methods
|
|
34
|
+
|
|
35
|
+
### Method 1: Via Bundler (Recommended)
|
|
36
|
+
|
|
37
|
+
Add FakeDataDSL to your `Gemfile`:
|
|
38
|
+
|
|
39
|
+
```ruby
|
|
40
|
+
# Gemfile
|
|
41
|
+
|
|
42
|
+
# For production/development
|
|
43
|
+
gem 'fake_data_dsl'
|
|
44
|
+
|
|
45
|
+
# Or for test group only
|
|
46
|
+
group :test, :development do
|
|
47
|
+
gem 'fake_data_dsl'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Pin to specific version
|
|
51
|
+
gem 'fake_data_dsl', '~> 1.0'
|
|
52
|
+
|
|
53
|
+
# Use latest from GitHub
|
|
54
|
+
gem 'fake_data_dsl', git: 'https://github.com/talaatmagdyx/fake_data_dsl.git'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Then install:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
bundle install
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Method 2: Direct Installation
|
|
64
|
+
|
|
65
|
+
Install via RubyGems:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
gem install fake_data_dsl
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Method 3: From Source
|
|
72
|
+
|
|
73
|
+
Clone and install from source:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Clone repository
|
|
77
|
+
git clone https://github.com/talaatmagdyx/fake_data_dsl.git
|
|
78
|
+
cd fake_data_dsl
|
|
79
|
+
|
|
80
|
+
# Install dependencies
|
|
81
|
+
bundle install
|
|
82
|
+
|
|
83
|
+
# Install gem locally
|
|
84
|
+
bundle exec rake install
|
|
85
|
+
|
|
86
|
+
# Or build gem manually
|
|
87
|
+
gem build fake_data_dsl.gemspec
|
|
88
|
+
gem install fake_data_dsl-*.gem
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Verifying Installation
|
|
94
|
+
|
|
95
|
+
### Check Version
|
|
96
|
+
|
|
97
|
+
```ruby
|
|
98
|
+
require 'fake_data_dsl'
|
|
99
|
+
puts FakeDataDSL::VERSION
|
|
100
|
+
# => "1.0.0"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Quick Test
|
|
104
|
+
|
|
105
|
+
```ruby
|
|
106
|
+
require 'fake_data_dsl'
|
|
107
|
+
|
|
108
|
+
# Create a simple schema
|
|
109
|
+
schema = FakeDataDSL.parse(<<~DSL)
|
|
110
|
+
Test:
|
|
111
|
+
id: uuid
|
|
112
|
+
name: name
|
|
113
|
+
DSL
|
|
114
|
+
|
|
115
|
+
# Generate data
|
|
116
|
+
data = schema.generate
|
|
117
|
+
puts data
|
|
118
|
+
# => {"id"=>"550e8400-e29b-41d4-a716-446655440000", "name"=>"John Smith"}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### CLI Test
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Check CLI is available
|
|
125
|
+
fake_data_dsl --version
|
|
126
|
+
|
|
127
|
+
# Generate sample data
|
|
128
|
+
echo "User:
|
|
129
|
+
id: uuid
|
|
130
|
+
name: name" | fake_data_dsl generate User --stdin
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Development Installation
|
|
136
|
+
|
|
137
|
+
For contributing to FakeDataDSL:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Clone the repository
|
|
141
|
+
git clone https://github.com/talaatmagdyx/fake_data_dsl.git
|
|
142
|
+
cd fake_data_dsl
|
|
143
|
+
|
|
144
|
+
# Install development dependencies
|
|
145
|
+
bundle install
|
|
146
|
+
|
|
147
|
+
# Run tests to verify setup
|
|
148
|
+
bundle exec rspec
|
|
149
|
+
|
|
150
|
+
# Run linter
|
|
151
|
+
bundle exec rubocop
|
|
152
|
+
|
|
153
|
+
# Generate documentation
|
|
154
|
+
bundle exec yard doc
|
|
155
|
+
|
|
156
|
+
# Start console for testing
|
|
157
|
+
bundle exec bin/console
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Development Dependencies
|
|
161
|
+
|
|
162
|
+
The development environment includes:
|
|
163
|
+
|
|
164
|
+
| Gem | Purpose |
|
|
165
|
+
|-----|---------|
|
|
166
|
+
| rspec | Testing framework |
|
|
167
|
+
| rubocop | Code linting |
|
|
168
|
+
| simplecov | Test coverage |
|
|
169
|
+
| yard | Documentation |
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Troubleshooting
|
|
174
|
+
|
|
175
|
+
### Common Installation Issues
|
|
176
|
+
|
|
177
|
+
#### 1. Ruby Version Too Old
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
ERROR: fake_data_dsl requires Ruby version >= 3.1.0
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Solution:** Upgrade Ruby using rbenv, rvm, or asdf:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Using rbenv
|
|
187
|
+
rbenv install 3.3.0
|
|
188
|
+
rbenv local 3.3.0
|
|
189
|
+
|
|
190
|
+
# Using rvm
|
|
191
|
+
rvm install 3.3.0
|
|
192
|
+
rvm use 3.3.0
|
|
193
|
+
|
|
194
|
+
# Using asdf
|
|
195
|
+
asdf install ruby 3.3.0
|
|
196
|
+
asdf local ruby 3.3.0
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
#### 2. Bundler Not Found
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
-bash: bundle: command not found
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Solution:** Install Bundler:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
gem install bundler
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
#### 3. Permission Denied
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
ERROR: While executing gem ... (Gem::FilePermissionError)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Solution:** Use a Ruby version manager or install with user permissions:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Install to user directory
|
|
221
|
+
gem install fake_data_dsl --user-install
|
|
222
|
+
|
|
223
|
+
# Or use rbenv/rvm which doesn't require sudo
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### 4. OpenSSL Errors
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
SSL_connect returned=1 errno=0 state=error: certificate verify failed
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Solution:** Update CA certificates:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# macOS
|
|
236
|
+
brew install openssl
|
|
237
|
+
|
|
238
|
+
# Ubuntu/Debian
|
|
239
|
+
sudo apt-get install ca-certificates
|
|
240
|
+
|
|
241
|
+
# Update RubyGems
|
|
242
|
+
gem update --system
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### 5. Native Extension Build Failures
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
ERROR: Failed to build gem native extension
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Solution:** Install build tools:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# macOS
|
|
255
|
+
xcode-select --install
|
|
256
|
+
|
|
257
|
+
# Ubuntu/Debian
|
|
258
|
+
sudo apt-get install build-essential
|
|
259
|
+
|
|
260
|
+
# CentOS/RHEL
|
|
261
|
+
sudo yum groupinstall 'Development Tools'
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Next Steps
|
|
267
|
+
|
|
268
|
+
After installation:
|
|
269
|
+
|
|
270
|
+
1. Read the [Quick Start Guide](quick_start.md)
|
|
271
|
+
2. Explore [Basic Concepts](basic_concepts.md)
|
|
272
|
+
3. Check out [Examples](../tech_example/README.md)
|
|
273
|
+
|