dscf-marketplace 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cde6c4e0be884ac22882a61a3e8e0dbe2e195905a18ec4daf22733c581c0c23d
4
+ data.tar.gz: dbffce607b9df1020c5ea3d2a7d6b23cabe97ee22f2d8e36795d0fb0f5694da3
5
+ SHA512:
6
+ metadata.gz: 48d49e3eaf3840f63fdf72cc26487fbefe607023a749a6a12b2d48d6a3dce2145ca6fcdaf54138b3c924d98ab462c9779810455fd0cb7949476ce4e5bbc16fb7
7
+ data.tar.gz: 2252875018cea0d8272f4860090cb27175c20ce9986997d3846163db59484bf3024af348a9c7e1a4ac8d6f04c79e1ce3f90e8f254babced1b6aa283c92970972
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright Asrat
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Dscf::Marketplace
2
+ Short description and motivation.
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem "dscf-marketplace"
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install dscf-marketplace
22
+ ```
23
+
24
+ ## Contributing
25
+ Contribution directions go here.
26
+
27
+ ## License
28
+ 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,8 @@
1
+ require "bundler/setup"
2
+
3
+ APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
4
+ load "rails/tasks/engine.rake"
5
+
6
+ load "rails/tasks/statistics.rake"
7
+
8
+ require "bundler/gem_tasks"
@@ -0,0 +1,6 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class ApplicationController < ActionController::API
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class ApplicationJob < ActiveJob::Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class ApplicationMailer < ActionMailer::Base
4
+ default from: "from@example.com"
5
+ layout "mailer"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class ApplicationRecord < ActiveRecord::Base
4
+ self.abstract_class = true
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,50 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class Category < ApplicationRecord
4
+ belongs_to :parent, class_name: "Dscf::Marketplace::Category", foreign_key: :parent_id, optional: true
5
+ has_many :subcategories, class_name: "Dscf::Marketplace::Category", foreign_key: :parent_id
6
+ has_many :products, class_name: "Dscf::Marketplace::Product"
7
+
8
+ validates :name, presence: true, uniqueness: true
9
+ validates :description, length: {maximum: 1000}, allow_blank: true
10
+
11
+ validate :parent_not_self_or_descendant
12
+
13
+ scope :root_categories, -> { where(parent_id: nil) }
14
+
15
+ def root?
16
+ parent_id.nil?
17
+ end
18
+
19
+ def descendants
20
+ descendants = []
21
+ subcategories.each do |subcategory|
22
+ descendants << subcategory
23
+ descendants.concat(subcategory.descendants)
24
+ end
25
+ descendants
26
+ end
27
+
28
+ private
29
+
30
+ def parent_not_self_or_descendant
31
+ return unless parent_id
32
+
33
+ if parent_id == id
34
+ errors.add(:parent_id, "cannot be self-referencing")
35
+ return
36
+ end
37
+
38
+ # Check for circular reference in descendants
39
+ current = self.class.find_by(id: parent_id)
40
+ while current
41
+ if current.id == id
42
+ errors.add(:parent_id, "creates circular reference")
43
+ break
44
+ end
45
+ current = current.parent
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,2 @@
1
+ Dscf::Marketplace::Engine.routes.draw do
2
+ end
@@ -0,0 +1,18 @@
1
+ class CreateDscfMarketplaceCategories < ActiveRecord::Migration[8.0]
2
+ def change
3
+ create_table :dscf_marketplace_categories do |t|
4
+ t.string :name, null: false
5
+ t.text :description
6
+ t.references :parent,
7
+ index: {name: "parent_on_dm_categories_indx"},
8
+ null: true,
9
+ foreign_key: {to_table: :dscf_marketplace_categories}
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :dscf_marketplace_categories, :name,
15
+ unique: true,
16
+ name: "name_on_dm_categories_indx"
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ class UpdateDscfMarketplaceCategoriesIndexes < ActiveRecord::Migration[8.0]
2
+ def change
3
+ # Remove existing indexes
4
+ remove_index :dscf_marketplace_categories, :name
5
+ remove_index :dscf_marketplace_categories, :parent_id
6
+ remove_foreign_key :dscf_marketplace_categories, :dscf_marketplace_categories
7
+
8
+ add_index :dscf_marketplace_categories, :name,
9
+ unique: true,
10
+ name: "name_on_dm_categories_indx"
11
+
12
+ add_index :dscf_marketplace_categories, :parent_id,
13
+ name: "parent_on_dm_categories_indx"
14
+
15
+ add_foreign_key :dscf_marketplace_categories, :dscf_marketplace_categories,
16
+ column: :parent_id,
17
+ name: "fk_dm_categories_parent"
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module Dscf
2
+ module Marketplace
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Dscf::Marketplace
5
+ config.generators.api_only = true
6
+
7
+ config.generators do |g|
8
+ g.test_framework :rspec, routing_specs: false
9
+ g.fixture_replacement :factory_bot
10
+ g.factory_bot dir: "spec/factories"
11
+ end
12
+
13
+ initializer :append_migrations do |app|
14
+ app.config.paths["db/migrate"].concat(config.paths["db/migrate"].expanded) unless app.root.to_s.match(root.to_s + File::SEPARATOR)
15
+ end
16
+
17
+ require "active_storage/engine"
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ module Dscf
2
+ module Marketplace
3
+ VERSION = "0.1.1".freeze
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ require "dscf/marketplace/version"
2
+ require "dscf/marketplace/engine"
3
+ require "dscf/core"
4
+ require "active_model_serializers"
5
+
6
+ module Dscf
7
+ module Marketplace
8
+ # Your code goes here...
9
+ end
10
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :dscf_marketplace do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :dscf_marketplace_category, class: "Dscf::Marketplace::Category" do
3
+ sequence(:name) { |n| "Category #{n}" }
4
+ description { "Category description" }
5
+ parent_id { nil }
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,484 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dscf-marketplace
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Asrat
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-08-27 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: '8.0'
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 8.0.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '8.0'
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 8.0.2
32
+ - !ruby/object:Gem::Dependency
33
+ name: dscf-core
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 0.1.2
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: active_model_serializers
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.10'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.10'
60
+ - !ruby/object:Gem::Dependency
61
+ name: ancestry
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 4.1.0
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 4.1.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: bcrypt
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.1'
81
+ type: :runtime
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.1'
88
+ - !ruby/object:Gem::Dependency
89
+ name: httparty
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '0.21'
95
+ type: :runtime
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '0.21'
102
+ - !ruby/object:Gem::Dependency
103
+ name: image_processing
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.12'
109
+ type: :runtime
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.12'
116
+ - !ruby/object:Gem::Dependency
117
+ name: jwt
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.7'
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '2.7'
130
+ - !ruby/object:Gem::Dependency
131
+ name: noticed
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '2.4'
137
+ type: :runtime
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '2.4'
144
+ - !ruby/object:Gem::Dependency
145
+ name: pg
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.5'
151
+ type: :runtime
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.5'
158
+ - !ruby/object:Gem::Dependency
159
+ name: pundit
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '2.3'
165
+ type: :runtime
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '2.3'
172
+ - !ruby/object:Gem::Dependency
173
+ name: rack-cors
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '2.0'
179
+ type: :runtime
180
+ prerelease: false
181
+ version_requirements: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '2.0'
186
+ - !ruby/object:Gem::Dependency
187
+ name: ransack
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '4.1'
193
+ type: :runtime
194
+ prerelease: false
195
+ version_requirements: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '4.1'
200
+ - !ruby/object:Gem::Dependency
201
+ name: active_storage_validations
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '1.1'
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '1.1'
214
+ - !ruby/object:Gem::Dependency
215
+ name: brakeman
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '6.1'
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '6.1'
228
+ - !ruby/object:Gem::Dependency
229
+ name: bullet
230
+ requirement: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '7.1'
235
+ type: :development
236
+ prerelease: false
237
+ version_requirements: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '7.1'
242
+ - !ruby/object:Gem::Dependency
243
+ name: database_cleaner-active_record
244
+ requirement: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '2.1'
249
+ type: :development
250
+ prerelease: false
251
+ version_requirements: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - "~>"
254
+ - !ruby/object:Gem::Version
255
+ version: '2.1'
256
+ - !ruby/object:Gem::Dependency
257
+ name: debug
258
+ requirement: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - "~>"
261
+ - !ruby/object:Gem::Version
262
+ version: '1.9'
263
+ type: :development
264
+ prerelease: false
265
+ version_requirements: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - "~>"
268
+ - !ruby/object:Gem::Version
269
+ version: '1.9'
270
+ - !ruby/object:Gem::Dependency
271
+ name: factory_bot_rails
272
+ requirement: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - "~>"
275
+ - !ruby/object:Gem::Version
276
+ version: '6.4'
277
+ type: :development
278
+ prerelease: false
279
+ version_requirements: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: '6.4'
284
+ - !ruby/object:Gem::Dependency
285
+ name: faker
286
+ requirement: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - "~>"
289
+ - !ruby/object:Gem::Version
290
+ version: '3.2'
291
+ type: :development
292
+ prerelease: false
293
+ version_requirements: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - "~>"
296
+ - !ruby/object:Gem::Version
297
+ version: '3.2'
298
+ - !ruby/object:Gem::Dependency
299
+ name: letter_opener
300
+ requirement: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - "~>"
303
+ - !ruby/object:Gem::Version
304
+ version: '1.8'
305
+ type: :development
306
+ prerelease: false
307
+ version_requirements: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - "~>"
310
+ - !ruby/object:Gem::Version
311
+ version: '1.8'
312
+ - !ruby/object:Gem::Dependency
313
+ name: reek
314
+ requirement: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - "~>"
317
+ - !ruby/object:Gem::Version
318
+ version: '6.3'
319
+ type: :development
320
+ prerelease: false
321
+ version_requirements: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - "~>"
324
+ - !ruby/object:Gem::Version
325
+ version: '6.3'
326
+ - !ruby/object:Gem::Dependency
327
+ name: rspec-rails
328
+ requirement: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - "~>"
331
+ - !ruby/object:Gem::Version
332
+ version: '6.1'
333
+ type: :development
334
+ prerelease: false
335
+ version_requirements: !ruby/object:Gem::Requirement
336
+ requirements:
337
+ - - "~>"
338
+ - !ruby/object:Gem::Version
339
+ version: '6.1'
340
+ - !ruby/object:Gem::Dependency
341
+ name: rspec-retry
342
+ requirement: !ruby/object:Gem::Requirement
343
+ requirements:
344
+ - - "~>"
345
+ - !ruby/object:Gem::Version
346
+ version: '0.6'
347
+ type: :development
348
+ prerelease: false
349
+ version_requirements: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - "~>"
352
+ - !ruby/object:Gem::Version
353
+ version: '0.6'
354
+ - !ruby/object:Gem::Dependency
355
+ name: rubocop-rails-omakase
356
+ requirement: !ruby/object:Gem::Requirement
357
+ requirements:
358
+ - - "~>"
359
+ - !ruby/object:Gem::Version
360
+ version: '1.0'
361
+ type: :development
362
+ prerelease: false
363
+ version_requirements: !ruby/object:Gem::Requirement
364
+ requirements:
365
+ - - "~>"
366
+ - !ruby/object:Gem::Version
367
+ version: '1.0'
368
+ - !ruby/object:Gem::Dependency
369
+ name: rubocop-rspec
370
+ requirement: !ruby/object:Gem::Requirement
371
+ requirements:
372
+ - - "~>"
373
+ - !ruby/object:Gem::Version
374
+ version: '2.29'
375
+ type: :development
376
+ prerelease: false
377
+ version_requirements: !ruby/object:Gem::Requirement
378
+ requirements:
379
+ - - "~>"
380
+ - !ruby/object:Gem::Version
381
+ version: '2.29'
382
+ - !ruby/object:Gem::Dependency
383
+ name: shoulda-matchers
384
+ requirement: !ruby/object:Gem::Requirement
385
+ requirements:
386
+ - - "~>"
387
+ - !ruby/object:Gem::Version
388
+ version: '6.0'
389
+ type: :development
390
+ prerelease: false
391
+ version_requirements: !ruby/object:Gem::Requirement
392
+ requirements:
393
+ - - "~>"
394
+ - !ruby/object:Gem::Version
395
+ version: '6.0'
396
+ - !ruby/object:Gem::Dependency
397
+ name: simplecov
398
+ requirement: !ruby/object:Gem::Requirement
399
+ requirements:
400
+ - - "~>"
401
+ - !ruby/object:Gem::Version
402
+ version: '0.22'
403
+ type: :development
404
+ prerelease: false
405
+ version_requirements: !ruby/object:Gem::Requirement
406
+ requirements:
407
+ - - "~>"
408
+ - !ruby/object:Gem::Version
409
+ version: '0.22'
410
+ - !ruby/object:Gem::Dependency
411
+ name: standard
412
+ requirement: !ruby/object:Gem::Requirement
413
+ requirements:
414
+ - - "~>"
415
+ - !ruby/object:Gem::Version
416
+ version: '1.35'
417
+ type: :development
418
+ prerelease: false
419
+ version_requirements: !ruby/object:Gem::Requirement
420
+ requirements:
421
+ - - "~>"
422
+ - !ruby/object:Gem::Version
423
+ version: '1.35'
424
+ - !ruby/object:Gem::Dependency
425
+ name: timecop
426
+ requirement: !ruby/object:Gem::Requirement
427
+ requirements:
428
+ - - "~>"
429
+ - !ruby/object:Gem::Version
430
+ version: '0.9'
431
+ type: :development
432
+ prerelease: false
433
+ version_requirements: !ruby/object:Gem::Requirement
434
+ requirements:
435
+ - - "~>"
436
+ - !ruby/object:Gem::Version
437
+ version: '0.9'
438
+ description: An engine which contains core models for Supply Chain Financing.
439
+ email:
440
+ - asratextras77@gmail.com
441
+ executables: []
442
+ extensions: []
443
+ extra_rdoc_files: []
444
+ files:
445
+ - MIT-LICENSE
446
+ - README.md
447
+ - Rakefile
448
+ - app/controllers/dscf/marketplace/application_controller.rb
449
+ - app/jobs/dscf/marketplace/application_job.rb
450
+ - app/mailers/dscf/marketplace/application_mailer.rb
451
+ - app/models/dscf/marketplace/application_record.rb
452
+ - app/models/dscf/marketplace/category.rb
453
+ - config/routes.rb
454
+ - db/migrate/20250827172043_create_dscf_marketplace_categories.rb
455
+ - db/migrate/20250827173526_update_dscf_marketplace_categories_indexes.rb
456
+ - lib/dscf/marketplace.rb
457
+ - lib/dscf/marketplace/engine.rb
458
+ - lib/dscf/marketplace/version.rb
459
+ - lib/tasks/dscf/marketplace_tasks.rake
460
+ - spec/factories/dscf/marketplace/categories.rb
461
+ homepage: https://mksaddis.com/
462
+ licenses:
463
+ - MIT
464
+ metadata:
465
+ homepage_uri: https://mksaddis.com/
466
+ source_code_uri: https://github.com/BITS-DEVSEC
467
+ rdoc_options: []
468
+ require_paths:
469
+ - lib
470
+ required_ruby_version: !ruby/object:Gem::Requirement
471
+ requirements:
472
+ - - ">="
473
+ - !ruby/object:Gem::Version
474
+ version: '3.2'
475
+ required_rubygems_version: !ruby/object:Gem::Requirement
476
+ requirements:
477
+ - - ">="
478
+ - !ruby/object:Gem::Version
479
+ version: '0'
480
+ requirements: []
481
+ rubygems_version: 3.6.2
482
+ specification_version: 4
483
+ summary: An Engine for Supply Chain Financing
484
+ test_files: []