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 +4 -4
- data/README.md +39 -7
- data/lib/generators/slider/USAGE +9 -0
- data/lib/generators/slider/slider_generator.rb +9 -0
- data/lib/generators/slider/templates/module.rb +2 -0
- data/lib/rails_ext/active_record_model_generator.rb +18 -0
- data/lib/rails_ext/job_generator.rb +11 -0
- data/lib/rails_ext/mailer_generator.rb +11 -0
- data/lib/sliders/version.rb +1 -1
- data/lib/sliders.rb +3 -0
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92e334f7082b4b266da898f0d116abeb4aed0f62ac1e7a1103aaeb336a40a025
|
|
4
|
+
data.tar.gz: f87cc0934a9da7fe46da857b1938f224f173d1274e10c7512eb81e43861e09b0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
82
|
+
Feel free to open PR with fixes for generators for that creates files outside of sliders folder.
|
|
65
83
|
|
|
66
|
-
|
|
84
|
+
Known generators that will not do what you expect:
|
|
67
85
|
- view
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
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
|
+
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,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
|
data/lib/sliders/version.rb
CHANGED
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.
|
|
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-
|
|
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
|