sliders 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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