sliders 0.1.2 → 0.1.3
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 +8 -30
- data/config/initializers/generators.rb +91 -0
- data/lib/generators/slider/slider_generator.rb +2 -2
- data/lib/sliders/version.rb +1 -1
- data/lib/sliders.rb +0 -6
- metadata +3 -8
- data/lib/rails_ext/active_record_model_generator.rb +0 -18
- data/lib/rails_ext/controller_generator.rb +0 -11
- data/lib/rails_ext/helper_generator.rb +0 -11
- data/lib/rails_ext/job_generator.rb +0 -11
- data/lib/rails_ext/mailer_generator.rb +0 -11
- data/lib/rails_ext/scaffold_controller_generator.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72c267c97b3ff9cc75bdb8d506a220ee2f71089a3047a6e30e2e4cca28e0dcc3
|
4
|
+
data.tar.gz: afa4127a42b369bac5116d9b3c850270dba2fcfbb8bd4f8988835bbdac926852
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfd5f6dede68f72d8c66f25988070fe76f8eaa65d14066cc1f760d5200eb409b6f234d4b804233e2269a6de9efa2038fc0d327212d2b957e88a3df00a85c397d
|
7
|
+
data.tar.gz: 2367002ca10751824adaeb3ca85fa699e3f6a08146e41bf83cc3667ee1707cd9f8278ca3bc68e39e4de017ba119f53680c58dd464b095465109791ac24e12459
|
data/README.md
CHANGED
@@ -70,38 +70,16 @@ This creates the `app/sliders/` folder and a module and folder for your feature.
|
|
70
70
|
|
71
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
72
|
|
73
|
-
|
74
|
-
- controllers
|
75
|
-
- scaffold
|
76
|
-
- helpers
|
77
|
-
- mailers
|
78
|
-
- jobs
|
79
|
-
- active record model
|
73
|
+
The folder *sliders* is not used for namespace, just like the folders in your slider is not used. So a file in `app/sliders/my_feature/models/admin.rb` will be for the constant `MyFeature::Admin`.
|
80
74
|
|
81
75
|
## Contributing
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
76
|
+
PR with fixes or improvements are most welcome.
|
77
|
+
|
78
|
+
We have tested *sliders* with most of Rails built-in generators, only a few of them have actual test cases.
|
79
|
+
PR with tests for more generators are very welcome - also generators for often used gems like eg. ViewComponent or Rspec.
|
80
|
+
|
81
|
+
**Known bugs**
|
82
|
+
- fixtures are generated in *sliders* folder, so they will not work
|
105
83
|
|
106
84
|
## License
|
107
85
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module SlidersCopyInvoke
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
class << self
|
6
|
+
alias_method :original_invoke, :invoke
|
7
|
+
alias_method :original_run_after_generate_callback, :run_after_generate_callback
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
Rails::Generators.include SlidersCopyInvoke
|
12
|
+
|
13
|
+
module SlidersInvoke
|
14
|
+
extend ActiveSupport::Concern
|
15
|
+
|
16
|
+
class_methods do
|
17
|
+
def invoke(namespace, args = ARGV, config = {})
|
18
|
+
# warn "SLIDERS INVOKE: #{namespace} #{args} #{config}"
|
19
|
+
original_invoke(namespace, args, config)
|
20
|
+
|
21
|
+
names = namespace.to_s.split(":")
|
22
|
+
if find_by_namespace(names.pop, names.any? && names.join(":"))
|
23
|
+
sliders_cleanup if config[:behavior] == :revoke
|
24
|
+
sliders_move if config[:behavior] == :invoke
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def sliders_cleanup
|
31
|
+
loop_files(class_variable_get(:@@generated_files)) do |source_file, destination_file|
|
32
|
+
File.unlink destination_file
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def sliders_move
|
37
|
+
loop_files(class_variable_get(:@@sliders_generated_files)) do |source_file, destination_file|
|
38
|
+
source_file = Rails.root.join(source_file)
|
39
|
+
FileUtils.mkdir_p(File.dirname(destination_file))
|
40
|
+
FileUtils.mv(source_file, destination_file)
|
41
|
+
end
|
42
|
+
|
43
|
+
class_variable_set(:@@sliders_generated_files, [])
|
44
|
+
end
|
45
|
+
|
46
|
+
def loop_files(source_files)
|
47
|
+
source_files.each do |source_file|
|
48
|
+
slider = Sliders.sliders.find { |slider| source_file.include? slider }
|
49
|
+
next unless slider
|
50
|
+
|
51
|
+
destination_file = file_in_slider_path(source_file, slider)
|
52
|
+
next unless destination_file
|
53
|
+
|
54
|
+
yield source_file, destination_file
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def file_in_slider_path(source_file, slider)
|
59
|
+
path_parts = source_file.split("/")
|
60
|
+
return unless path_parts.include?(slider) || path_parts.include?("#{slider}.rb")
|
61
|
+
return unless path_parts.include?("app") || path_parts.include?("test")
|
62
|
+
|
63
|
+
# add sliders after app or test
|
64
|
+
path_parts.insert(path_parts.index("app") + 1, "sliders") if path_parts.include?("app")
|
65
|
+
path_parts.insert(path_parts.index("test") + 1, "sliders") if path_parts.include?("test")
|
66
|
+
|
67
|
+
# move slider namespace up or add if file is named like #{slider}.rb
|
68
|
+
if path_parts.include?(slider)
|
69
|
+
slider_namespace_index = path_parts.index(slider)
|
70
|
+
path_parts[slider_namespace_index], path_parts[slider_namespace_index - 1] = path_parts[slider_namespace_index - 1], path_parts[slider_namespace_index]
|
71
|
+
else
|
72
|
+
path_parts.insert(path_parts.index("sliders") + 1, slider)
|
73
|
+
end
|
74
|
+
|
75
|
+
Rails.root.join(path_parts.join("/"))
|
76
|
+
rescue StandardError => e
|
77
|
+
warn "===== Sliders Error ====="
|
78
|
+
warn "Error moving file: #{source_file} for slider: #{slider}"
|
79
|
+
warn "Error: #{e.message}"
|
80
|
+
warn "========================="
|
81
|
+
raise
|
82
|
+
end
|
83
|
+
|
84
|
+
def run_after_generate_callback
|
85
|
+
class_variable_set(:@@sliders_generated_files, [])
|
86
|
+
class_variable_set(:@@sliders_generated_files, class_variable_get(:@@generated_files)) if class_variable_defined?(:@@generated_files)
|
87
|
+
original_run_after_generate_callback
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
Rails::Generators.prepend SlidersInvoke
|
@@ -3,7 +3,7 @@ class SliderGenerator < Rails::Generators::NamedBase
|
|
3
3
|
|
4
4
|
def create_slider_file
|
5
5
|
template "module.rb", File.join("app/sliders", "#{file_name}.rb")
|
6
|
-
|
7
|
-
|
6
|
+
create_file File.join("app/sliders", "#{file_name}", ".keep"), ""
|
7
|
+
create_file File.join("test/sliders", "#{file_name}", ".keep"), ""
|
8
8
|
end
|
9
9
|
end
|
data/lib/sliders/version.rb
CHANGED
data/lib/sliders.rb
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
require "sliders/version"
|
2
2
|
require "sliders/engine"
|
3
3
|
require "rails/generators"
|
4
|
-
require "rails_ext/controller_generator"
|
5
|
-
require "rails_ext/scaffold_controller_generator"
|
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"
|
10
4
|
|
11
5
|
module Sliders
|
12
6
|
# 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.3
|
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:
|
11
|
+
date: 2025-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -37,16 +37,11 @@ files:
|
|
37
37
|
- app/assets/config/sliders_manifest.js
|
38
38
|
- app/controllers/concerns/fix_sliders_view_path.rb
|
39
39
|
- config/initializers/autoloader.rb
|
40
|
+
- config/initializers/generators.rb
|
40
41
|
- config/routes.rb
|
41
42
|
- lib/generators/slider/USAGE
|
42
43
|
- lib/generators/slider/slider_generator.rb
|
43
44
|
- lib/generators/slider/templates/module.rb
|
44
|
-
- lib/rails_ext/active_record_model_generator.rb
|
45
|
-
- lib/rails_ext/controller_generator.rb
|
46
|
-
- lib/rails_ext/helper_generator.rb
|
47
|
-
- lib/rails_ext/job_generator.rb
|
48
|
-
- lib/rails_ext/mailer_generator.rb
|
49
|
-
- lib/rails_ext/scaffold_controller_generator.rb
|
50
45
|
- lib/sliders.rb
|
51
46
|
- lib/sliders/engine.rb
|
52
47
|
- lib/sliders/version.rb
|
@@ -1,18 +0,0 @@
|
|
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
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require "rails/generators/rails/controller/controller_generator"
|
2
|
-
module SlidersControllerGenerator
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
def create_controller_files
|
6
|
-
return super unless (class_path & Sliders.sliders).any?
|
7
|
-
|
8
|
-
template "controller.rb", File.join("app/sliders/", class_path[0], "controllers", class_path[1..], "#{file_name}_controller.rb")
|
9
|
-
end
|
10
|
-
end
|
11
|
-
Rails::Generators::ControllerGenerator.prepend SlidersControllerGenerator
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require "rails/generators/rails/helper/helper_generator"
|
2
|
-
module SlidersHelperGenerator
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
def create_helper_files
|
6
|
-
return super unless (class_path & Sliders.sliders).any?
|
7
|
-
|
8
|
-
template "helper.rb", File.join("app/sliders/", class_path[0], "helpers", class_path[1..], "#{file_name}_helper.rb")
|
9
|
-
end
|
10
|
-
end
|
11
|
-
Rails::Generators::HelperGenerator.prepend SlidersHelperGenerator
|
@@ -1,11 +0,0 @@
|
|
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
|
@@ -1,11 +0,0 @@
|
|
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,12 +0,0 @@
|
|
1
|
-
require "rails/generators/rails/scaffold_controller/scaffold_controller_generator"
|
2
|
-
module SlidersScaffoldControllerGenerator
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
def create_controller_files
|
6
|
-
return super unless (controller_class_path & Sliders.sliders).any?
|
7
|
-
|
8
|
-
template_file = options.api? ? "api_controller.rb" : "controller.rb"
|
9
|
-
template template_file, File.join("app/sliders/", controller_class_path[0], "controllers", controller_class_path[1..], "#{controller_file_name}_controller.rb")
|
10
|
-
end
|
11
|
-
end
|
12
|
-
Rails::Generators::ScaffoldControllerGenerator.prepend SlidersScaffoldControllerGenerator
|