sliders 0.1.0 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68fe0a1c6326b7c9f44c3d68ac87df690a371cedd006ad9ea63e8928381eb71d
4
- data.tar.gz: 8c6312ebe8667e00e36af23cff3bba3e016003d5d38d369e3fd4f4bb42d3db30
3
+ metadata.gz: 92e334f7082b4b266da898f0d116abeb4aed0f62ac1e7a1103aaeb336a40a025
4
+ data.tar.gz: f87cc0934a9da7fe46da857b1938f224f173d1274e10c7512eb81e43861e09b0
5
5
  SHA512:
6
- metadata.gz: a30d308fabbf05242057bc284e4b107e6f788e47160c45adbd56bddd90d1d4569e56301d48b4931ae1147bf3e43b7f0ffd70dc42b3aa4139d60edf4d03c5c646
7
- data.tar.gz: b7df7a627e6ba3916bc9e9a356ea2037171e6f37acd3d3ad148caefa14841aa1f50b548726cf2596ca97c9a10b358467fb75bd4a8e3c855708ffcec8fad6704b
6
+ metadata.gz: 0326d5f40aba0722bbf72da10879b04353abbc64d81d2af0ec8b975ee6a2161bd2a7ac7c8ff29430bed9cccfd04b6994bf2755fd88e3162bb5dced50cfe96bf7
7
+ data.tar.gz: 60e293a699f2d1d7b30727a4a10aac8839357ed70f42d7aea9488da9ec4f58eb00190395ff0040cb94e3db8ca112facbbf352785ef748574cc5acc068669b2f7
data/README.md CHANGED
@@ -6,6 +6,8 @@ Sliders are mini "app-folders" for grouping related code in your Rails applicati
6
6
  Some times you have bundles of code in your app that is related to some specific feature.
7
7
  Extracting to a gem is not really an option as the feature is tightly integrated with the rest of the application. So how do you get a good structure of files in you application?
8
8
 
9
+ (Yes, I've been inspired by, or envious at, [Hanami](https://github.com/hanami/hanami) and their [slices](https://guides.hanamirb.org/v2.1/app/slices/) for structuring a Hanami application.)
10
+
9
11
  With `sliders` you get a namespace folder that groups all you files.
10
12
 
11
13
  Going from:
@@ -44,6 +46,7 @@ app/
44
46
  └─ important_feature_task.rb
45
47
  ```
46
48
 
49
+ Future plan is to group all your sliders tests in a `test/sliders/my_feature` folder as well.
47
50
 
48
51
  ## Installation
49
52
  Add this line to your application's Gemfile:
@@ -58,18 +61,47 @@ $ bundle
58
61
  ```
59
62
 
60
63
  ## Usage
64
+ Create your slider folder
65
+ ```bash
66
+ $ rails g slider my_feature
67
+ ```
68
+
69
+ This creates the `app/sliders/` folder and a module and folder for your feature.
61
70
 
71
+ Now you can just use regular generators to create thing in `MyFeature` namespace and *sliders* will create the files in your slider folder.
72
+
73
+ Generators that will now create files in slider folder:
74
+ - controllers
75
+ - scaffold
76
+ - helpers
77
+ - mailers
78
+ - jobs
79
+ - active record model
62
80
 
63
81
  ## Contributing
64
- Contribution directions go here.
82
+ Feel free to open PR with fixes for generators for that creates files outside of sliders folder.
65
83
 
66
- ### Generators missing
84
+ Known generators that will not do what you expect:
67
85
  - view
68
- - fixtures
69
- - model (orm)
70
- - jobs
71
- - components
72
- - ...
86
+ - controller
87
+ - mailer
88
+ - scaffold
89
+ - action cable
90
+ - action mailbox
91
+ - tests
92
+ - controller
93
+ - model
94
+ - scaffold
95
+ - mailer
96
+ - job
97
+ - integration
98
+ - helper
99
+ - system?
100
+ - fixtures (part of model tests)
101
+ - components?
102
+
103
+ Other things we need to fix:
104
+ - loading fixtures from slider fixture foldeer
73
105
 
74
106
  ## License
75
107
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Creates basic slider folder structure
3
+
4
+ Example:
5
+ bin/rails generate slider Thing
6
+
7
+ This will create:
8
+ app/sliders/thing
9
+ test/sliders/thing
@@ -0,0 +1,9 @@
1
+ class SliderGenerator < Rails::Generators::NamedBase
2
+ source_root File.expand_path("templates", __dir__)
3
+
4
+ def create_slider_file
5
+ template "module.rb", File.join("app/sliders", "#{file_name}.rb")
6
+ template ".keep", File.join("app/sliders", "#{file_name}", ".keep")
7
+ template ".keep", File.join("test/sliders", "#{file_name}", ".keep")
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ module <%= class_name %>
2
+ end
@@ -0,0 +1,18 @@
1
+ require "rails/generators/active_record/model/model_generator"
2
+ module SlidersActiveRecordModelGenerator
3
+ extend ActiveSupport::Concern
4
+
5
+ def create_model_file
6
+ return super unless (class_path & Sliders.sliders).any?
7
+
8
+ template "model.rb", File.join("app/sliders/", class_path[0], "models", class_path[1..], "#{file_name}.rb")
9
+ end
10
+
11
+ def create_module_file
12
+ return super unless (class_path & Sliders.sliders).any?
13
+
14
+ return if regular_class_path.empty? || regular_class_path.one?
15
+ template "module.rb", File.join("app/sliders/", class_path[0], "models", "#{class_path[1..].join('/')}.rb") if behavior == :invoke
16
+ end
17
+ end
18
+ ActiveRecord::Generators::ModelGenerator.prepend SlidersActiveRecordModelGenerator
@@ -0,0 +1,11 @@
1
+ require "rails/generators/job/job_generator"
2
+ module SlidersJobGenerator
3
+ extend ActiveSupport::Concern
4
+
5
+ def create_job_file
6
+ return super unless (class_path & Sliders.sliders).any?
7
+
8
+ template "job.rb", File.join("app/sliders/", class_path[0], "jobs", class_path[1..], "#{file_name}_job.rb")
9
+ end
10
+ end
11
+ Rails::Generators::JobGenerator.prepend SlidersJobGenerator
@@ -0,0 +1,11 @@
1
+ require "rails/generators/mailer/mailer_generator"
2
+ module SlidersMailerGenerator
3
+ extend ActiveSupport::Concern
4
+
5
+ def create_mailer_file
6
+ return super unless (class_path & Sliders.sliders).any?
7
+
8
+ template "mailer.rb", File.join("app/sliders/", class_path[0], "mailers", class_path[1..], "#{file_name}_mailer.rb")
9
+ end
10
+ end
11
+ Rails::Generators::MailerGenerator.prepend SlidersMailerGenerator
@@ -1,3 +1,3 @@
1
1
  module Sliders
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/sliders.rb CHANGED
@@ -4,6 +4,9 @@ require "rails/generators"
4
4
  require "rails_ext/controller_generator"
5
5
  require "rails_ext/scaffold_controller_generator"
6
6
  require "rails_ext/helper_generator"
7
+ require "rails_ext/job_generator"
8
+ require "rails_ext/mailer_generator"
9
+ require "rails_ext/active_record_model_generator"
7
10
 
8
11
  module Sliders
9
12
  # Your code goes here...
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sliders
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Træls Ravn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-26 00:00:00.000000000 Z
11
+ date: 2024-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -38,8 +38,14 @@ files:
38
38
  - app/controllers/concerns/fix_sliders_view_path.rb
39
39
  - config/initializers/autoloader.rb
40
40
  - config/routes.rb
41
+ - lib/generators/slider/USAGE
42
+ - lib/generators/slider/slider_generator.rb
43
+ - lib/generators/slider/templates/module.rb
44
+ - lib/rails_ext/active_record_model_generator.rb
41
45
  - lib/rails_ext/controller_generator.rb
42
46
  - lib/rails_ext/helper_generator.rb
47
+ - lib/rails_ext/job_generator.rb
48
+ - lib/rails_ext/mailer_generator.rb
43
49
  - lib/rails_ext/scaffold_controller_generator.rb
44
50
  - lib/sliders.rb
45
51
  - lib/sliders/engine.rb