rhino_project_core 0.20.0.alpha.0 → 0.20.0.beta.18

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -5
  3. data/app/controllers/concerns/rhino/error_handling.rb +0 -2
  4. data/app/controllers/rhino/simple_controller.rb +1 -3
  5. data/app/overrides/devise_token_auth/omniauth_callbacks_controller_override.rb +2 -2
  6. data/app/overrides/devise_token_auth/registrations_controller_override.rb +1 -1
  7. data/lib/commands/rhino_command.rb +59 -0
  8. data/lib/generators/rhino/dev/setup/setup_generator.rb +31 -55
  9. data/lib/generators/rhino/module/module_generator.rb +59 -58
  10. data/lib/generators/rhino/module/templates/engine.rb.tt +19 -0
  11. data/lib/generators/rhino/module/templates/{lib/generators/%namespaced_name%/install/install_generator.rb.tt → install_generator.rb.tt} +1 -1
  12. data/lib/generators/rhino/module/templates/module_tasks.rake.tt +17 -0
  13. data/lib/rhino/engine.rb +14 -40
  14. data/lib/rhino/resource/active_model_extension/properties.rb +0 -2
  15. data/lib/rhino/resource/active_record_extension/properties.rb +1 -1
  16. data/lib/rhino/resource/active_record_extension/properties_describe.rb +0 -2
  17. data/lib/rhino/resource/active_record_extension.rb +0 -2
  18. data/lib/rhino/resource/properties.rb +2 -2
  19. data/lib/rhino/resource/reference.rb +2 -0
  20. data/lib/rhino/resource.rb +1 -2
  21. data/lib/rhino/sieve.rb +0 -1
  22. data/lib/rhino/test_case/controller.rb +9 -20
  23. data/lib/rhino/test_case.rb +0 -1
  24. data/lib/rhino/version.rb +1 -1
  25. data/lib/{rhino_project_core.rb → rhino.rb} +0 -2
  26. data/lib/tasks/rhino.rake +14 -0
  27. metadata +19 -372
  28. data/LICENSE +0 -21
  29. data/lib/commands/rhino/module/coverage_command.rb +0 -44
  30. data/lib/commands/rhino/module/dummy_command.rb +0 -43
  31. data/lib/commands/rhino/module/new_command.rb +0 -34
  32. data/lib/commands/rhino/module/rails_command.rb +0 -43
  33. data/lib/commands/rhino/module/test_command.rb +0 -43
  34. data/lib/generators/rhino/dev/setup/templates/env.root.tt +0 -1
  35. data/lib/generators/rhino/model/model_generator.rb +0 -96
  36. data/lib/generators/rhino/module/USAGE +0 -6
  37. data/lib/generators/rhino/module/templates/%name%.gemspec.tt +0 -24
  38. data/lib/generators/rhino/module/templates/lib/%namespaced_name%/engine.rb.tt +0 -18
  39. data/lib/generators/rhino/module/templates/lib/tasks/%namespaced_name%_tasks.rake.tt +0 -13
  40. data/lib/generators/rhino/module/templates/test/dummy/app/models/user.rb +0 -4
  41. data/lib/generators/rhino/module/templates/test/dummy/config/database.yml +0 -25
  42. data/lib/generators/rhino/module/templates/test/dummy/config/initializers/devise.rb +0 -311
  43. data/lib/generators/rhino/module/templates/test/dummy/config/initializers/devise_token_auth.rb +0 -71
  44. data/lib/generators/rhino/module/templates/test/test_helper.rb +0 -54
  45. data/lib/rhino/resource/active_record_extension/super_admin.rb +0 -25
  46. data/lib/rhino/sieve/geospatial.rb +0 -45
  47. data/lib/rhino/test_case/model.rb +0 -86
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dotenv"
4
- require "rails/command"
5
-
6
- module Rails
7
- module Command
8
- module Rhino
9
- module Module
10
- class CoverageCommand < Base # :nodoc:
11
- include Thor::Actions
12
-
13
- def perform(*args)
14
- ENV["COVERAGE"] = "1"
15
- test(*args)
16
- end
17
-
18
- protected
19
- def rhino_command(extra_path, base_command, *args) # rubocop:todo Metrics/MethodLength
20
- module_name = if Dir.exist?(args[0])
21
- args.shift
22
- else
23
- abort "No module specified"
24
- end
25
- module_path = [module_name, extra_path].compact.join("/")
26
- db_name = "#{module_name}_dummy"
27
- gem_file_path = File.join(Dir.pwd, "Gemfile")
28
-
29
- # Getting existing variables and re-use
30
- ::Dotenv.load
31
-
32
- inside(module_path) do
33
- # Override DB_NAME so multiple can run in parallel
34
- run(
35
- "DB_NAME=#{db_name} BUNDLE_GEMFILE='#{gem_file_path}' bin/rails #{base_command} #{args.join(' ')}",
36
- { abort_on_failure: true }
37
- )
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dotenv"
4
- require "rails/command"
5
-
6
- module Rails
7
- module Command
8
- module Rhino
9
- module Module
10
- class DummyCommand < Base # :nodoc:
11
- include Thor::Actions
12
-
13
- def perform(*args)
14
- rhino_command("test/dummy", nil, *args)
15
- end
16
-
17
- protected
18
- def rhino_command(extra_path, base_command, *args) # rubocop:todo Metrics/MethodLength
19
- module_name = if Dir.exist?(args[0])
20
- args.shift
21
- else
22
- abort "No module specified"
23
- end
24
- module_path = [module_name, extra_path].compact.join("/")
25
- db_name = "#{module_name}_dummy"
26
- gem_file_path = File.join(Dir.pwd, "Gemfile")
27
-
28
- # Getting existing variables and re-use
29
- ::Dotenv.load
30
-
31
- inside(module_path) do
32
- # Override DB_NAME so multiple can run in parallel
33
- run(
34
- "DB_NAME=#{db_name} BUNDLE_GEMFILE='#{gem_file_path}' bin/rails #{base_command} #{args.join(' ')}",
35
- { abort_on_failure: true }
36
- )
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dotenv"
4
- require "rails/command"
5
-
6
- module Rails
7
- module Command
8
- module Rhino
9
- module Module
10
- class NewCommand < Base # :nodoc:
11
- no_commands do
12
- def help
13
- run_module_generator %w[--help]
14
- end
15
- end
16
-
17
- def self.banner(*) # :nodoc:
18
- "#{executable} new [options]"
19
- end
20
-
21
- def perform(*args)
22
- run_module_generator(args)
23
- end
24
-
25
- private
26
- def run_module_generator(plugin_args)
27
- require "generators/rhino/module/module_generator"
28
- ::Rhino::Generators::ModuleGenerator.start plugin_args
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dotenv"
4
- require "rails/command"
5
-
6
- module Rails
7
- module Command
8
- module Rhino
9
- module Module
10
- class RailsCommand < Base # :nodoc:
11
- include Thor::Actions
12
-
13
- def perform(*args)
14
- rhino_command(nil, nil, *args)
15
- end
16
-
17
- protected
18
- def rhino_command(extra_path, base_command, *args) # rubocop:todo Metrics/MethodLength
19
- module_name = if Dir.exist?(args[0])
20
- args.shift
21
- else
22
- abort "No module specified"
23
- end
24
- module_path = [module_name, extra_path].compact.join("/")
25
- db_name = "#{module_name}_dummy"
26
- gem_file_path = File.join(Dir.pwd, "Gemfile")
27
-
28
- # Getting existing variables and re-use
29
- ::Dotenv.load
30
-
31
- inside(module_path) do
32
- # Override DB_NAME so multiple can run in parallel
33
- run(
34
- "DB_NAME=#{db_name} BUNDLE_GEMFILE='#{gem_file_path}' bin/rails #{base_command} #{args.join(' ')}",
35
- { abort_on_failure: true }
36
- )
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dotenv"
4
- require "rails/command"
5
-
6
- module Rails
7
- module Command
8
- module Rhino
9
- module Module
10
- class TestCommand < Base # :nodoc:
11
- include Thor::Actions
12
-
13
- def test(*args)
14
- rhino_command(nil, "test", *args)
15
- end
16
-
17
- protected
18
- def rhino_command(extra_path, base_command, *args) # rubocop:todo Metrics/MethodLength
19
- module_name = if Dir.exist?(args[0])
20
- args.shift
21
- else
22
- abort "No module specified"
23
- end
24
- module_path = [module_name, extra_path].compact.join("/")
25
- db_name = "#{module_name}_dummy"
26
- gem_file_path = File.join(Dir.pwd, "Gemfile")
27
-
28
- # Getting existing variables and re-use
29
- ::Dotenv.load
30
-
31
- inside(module_path) do
32
- # Override DB_NAME so multiple can run in parallel
33
- run(
34
- "DB_NAME=#{db_name} BUNDLE_GEMFILE='#{gem_file_path}' bin/rails #{base_command} #{args.join(' ')}",
35
- { abort_on_failure: true }
36
- )
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1 +0,0 @@
1
- COMPOSE_PROJECT_NAME=<%= project_name %>
@@ -1,96 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails/generators"
4
- require "rails/generators/active_record/model/model_generator"
5
-
6
- module Rhino
7
- class ModelGenerator < ::ActiveRecord::Generators::ModelGenerator
8
- source_root File.expand_path("templates", __dir__)
9
-
10
- class_option :owner, type: :string, desc: "The model is owned by the reference attribute", group: :owner
11
- class_option :base_owner, type: :boolean, default: false, desc: "The model is owned by the base owner", group: :owner
12
- class_option :global_owner, type: :boolean, default: false, desc: "The model is globally owned", group: :owner
13
-
14
- # Parent source paths
15
- def source_paths
16
- [
17
- File.expand_path("templates", __dir__),
18
- ::ActiveRecord::Generators::ModelGenerator.source_root
19
- ]
20
- end
21
-
22
- def create_migration_file
23
- # We check the ownership of the reference attributes before creating the migration
24
- check_ownership
25
-
26
- super
27
- end
28
-
29
- def inject_into_rhino_initializer
30
- # FIXME: Can we do better on indentation?
31
- inject_into_file "config/initializers/rhino.rb", before: /^end\s*$/ do
32
- " config.resources += ['#{class_name}']\n"
33
- end
34
- end
35
-
36
- def inject_rhino_owner_into_model
37
- # Write 'rhino_owner :<attribute name>' to the model file
38
- model_file = File.join("app/models", "#{file_path}.rb")
39
-
40
- # FIXME: Can we do better on indentation?
41
- inject_into_file model_file, before: /^end\s*$/ do
42
- "\n #{owner_call}\n"
43
- end
44
-
45
- # Global owned don't need a reference
46
- return if global_owner?
47
-
48
- inject_into_file model_file, after: /#{owner_call}/ do
49
- "\n rhino_references %i[#{owner_name}]"
50
- end
51
- end
52
-
53
- protected
54
- def check_ownership
55
- raise Thor::Error, "Exactly one owner must be defined on a reference or globally" unless base_owner? ^ global_owner? ^ reference_owner?
56
-
57
- return if global_owner? || reference_attributes.find { |attr| attr.name == owner_name }
58
-
59
- raise Thor::Error, "The owner attribute must be a reference attribute"
60
- end
61
-
62
- private
63
- def global_owner?
64
- @global_owner = options[:global_owner]
65
- end
66
-
67
- def base_owner?
68
- @global_owner = options[:base_owner] || Rhino.base_owner.model_name.singular == options[:owner]
69
- end
70
-
71
- def reference_owner?
72
- @reference_owner = options[:owner].present? && !base_owner?
73
- end
74
-
75
- def owner_name
76
- @owner_name ||= if global_owner?
77
- "global"
78
- elsif base_owner?
79
- Rhino.base_owner.model_name.singular
80
- else
81
- options[:owner]
82
- end
83
- end
84
-
85
- def owner_call
86
- return "rhino_owner_global" if global_owner?
87
- return "rhino_owner_base" if base_owner?
88
-
89
- "rhino_owner :#{owner_name}"
90
- end
91
-
92
- def reference_attributes
93
- @reference_attributes ||= attributes.filter(&:reference?)
94
- end
95
- end
96
- end
@@ -1,6 +0,0 @@
1
- Description:
2
- The 'rails rhino:module' command creates a skeleton for developing Rhino modules.
3
-
4
- Example:
5
- rails rhino:module:new rhino_my_module
6
-
@@ -1,24 +0,0 @@
1
- require_relative "lib/<%= namespaced_name %>/version"
2
-
3
- Gem::Specification.new do |spec|
4
- spec.name = <%= name.inspect %>
5
- spec.version = <%= camelized_modules %>::VERSION
6
- spec.authors = [ <%= author.inspect %> ]
7
- spec.email = [ <%= email.inspect %> ]
8
- spec.summary = "Summary of <%= camelized_modules %>."
9
- spec.description = "Description of <%= camelized_modules %>."
10
- <%- unless inside_application? -%>
11
- spec.license = "MIT"
12
- <%- end -%>
13
-
14
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the "allowed_push_host"
15
- # to allow pushing to a single host or delete this section to allow pushing to any host.
16
- spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
17
-
18
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
- Dir["{app,config,db,lib}/**/*", <%- unless inside_application? -%> "MIT-LICENSE", <%- end -%>"Rakefile", "README.md"]
20
- end
21
-
22
- <%= "# " if rails_prerelease? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
23
- spec.add_dependency "rhino_project_core", ">= <%= rhino_version %>"
24
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rhino/engine"
4
-
5
- module <%= camelized_modules %>
6
- class Engine < ::Rails::Engine
7
- <%= engine_config -%>
8
- config.autoload_paths << File.expand_path("../../lib", __dir__)
9
-
10
- initializer "<%= namespaced_name %>.register_module" do
11
- config.after_initialize do
12
- Rhino.registered_modules[:<%= namespaced_name %>] = {
13
- version: <%= camelized_modules %>::VERSION
14
- }
15
- end
16
- end
17
- end
18
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :<%= namespaced_name %> do
4
- # Prevent migration installation task from showing up twice.
5
- Rake::Task["<%= namespaced_name %>_engine:install:migrations"].clear_comments if Rake::Task.task_defined?("<%= namespaced_name %>_engine:install:migrations")
6
-
7
- desc "Install <%= namespaced_name %>"
8
- task install: :environment do
9
- Rake::Task["<%= namespaced_name %>_engine:install:migrations"].invoke if Rake::Task.task_defined?("<%= namespaced_name %>_engine:install:migrations")
10
-
11
- Rails::Command.invoke :generate, ["<%= namespaced_name %>:install"]
12
- end
13
- end
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class User < Rhino::User
4
- end
@@ -1,25 +0,0 @@
1
- default: &default
2
- adapter: postgresql
3
- encoding: unicode
4
- pool: 5
5
- username: <%%= ENV["DB_USERNAME"] %>
6
- password: <%%= ENV["DB_PASSWORD"] %>
7
- database: <%%= ENV["DB_NAME"] %>
8
- port: <%%= ENV["DB_PORT"] || 5432 %>
9
- host: <%%= ENV["DB_HOST"] || "localhost" %>
10
-
11
- development:
12
- <<: *default
13
- database: <%%= ENV["DB_NAME"] %>_development
14
-
15
- # Warning: The database defined as "test" will be erased and
16
- # re-generated from your development database when you run "rake".
17
- # Do not set this db to the same as development or production.
18
- test:
19
- <<: *default
20
- # https://github.com/ged/ruby-pg/issues/311#issuecomment-1615084569
21
- gssencmode: disable
22
- database: <%%= ENV["DB_NAME"] %>_test
23
-
24
- production:
25
- <<: *default