Module: Kadim

Defined in:
lib/kadim.rb,
lib/kadim/engine.rb,
lib/kadim/version.rb,
app/jobs/kadim/application_job.rb,
lib/kadim/template/memory_resolver.rb,
app/helpers/kadim/application_helper.rb,
app/mailers/kadim/application_mailer.rb,
lib/generators/kadim/host/host_generator.rb,
app/controllers/kadim/application_controller.rb,
lib/generators/kadim/scaffold_controller/scaffold_controller_generator.rb

Defined Under Namespace

Modules: ApplicationHelper, Generators Classes: ApplicationController, ApplicationJob, ApplicationMailer, Engine, HostGenerator, MemoryResolver

Constant Summary collapse

VERSION =
"0.4.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.app_model_pathsObject



38
39
40
41
42
43
44
45
46
# File 'lib/kadim.rb', line 38

def self.app_model_paths
  return [] unless db_connection?

  Dir[Rails.root.join("app", "models", "**", "*.rb")]
    .reject { |model_path| model_path.include?("/concerns/") || model_path.include?("application_record") }
    .map    { |model_path| model_path.remove(%r{.*/app/models/}, ".rb") }
    .select { |model_path| model_path.camelize.constantize.try(:table_exists?) }
    .sort
end

.bootstrap_controllersObject



48
49
50
51
52
53
54
# File 'lib/kadim.rb', line 48

def self.bootstrap_controllers
  return unless db_connection?

  cleanup
  load_app_kadim_consts
  scaffold_controllers
end

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Kadim)

    the object that the method was called on



34
35
36
# File 'lib/kadim.rb', line 34

def self.configure
  yield self
end

.initObject



26
27
28
29
30
31
32
# File 'lib/kadim.rb', line 26

def self.init
  @@upload_type ||= if [:amazon, :google, :microsoft].include?(Rails.configuration.active_storage.service)
    :direct
  else
    :local
  end
end

.scaffold_attributes(model_klass) ⇒ Object



76
77
78
# File 'lib/kadim.rb', line 76

def self.scaffold_attributes(model_klass)
  database_attributes(model_klass) + attachment_attributes(model_klass)
end

.scaffold_controller(args, options, config) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/kadim.rb', line 56

def self.scaffold_controller(args, options, config)
  current_namespace = Rails::Generators.namespace
  Rails::Generators.namespace = Kadim

  require "rails/generators/erb/scaffold/scaffold_generator"
  templates_path = if Kadim.layout == :bulma
    "generators/kadim/scaffold_controller/templates/bulma"
  else
    "generators/kadim/scaffold_controller/templates"
  end
  Erb::Generators::ScaffoldGenerator.source_paths.prepend(File.expand_path(templates_path, __dir__))

  generator = Rails::Generators::ScaffoldControllerGenerator.new(args, options, config)
  source_path_idx = generator.class.source_paths.index { |source_path| source_path.include?("jbuilder") }
  generator.class.source_paths[source_path_idx] = generator.class.source_root if source_path_idx
  generator.invoke_all
ensure
  Rails::Generators.namespace = current_namespace
end

Instance Method Details

#layoutSymbol? #layout=(value) ⇒ Object

Overloads:

  • #layout=(value) ⇒ Object

    The following layouts are available:

    • nil - No layout, will use Rails generators template.

    • :bulma - A layout using the bulma CSS framework.



24
# File 'lib/kadim.rb', line 24

mattr_accessor :layout

#upload_typeSymbol #upload_type=(value) ⇒ Symbol

Overloads:



16
# File 'lib/kadim.rb', line 16

mattr_accessor :upload_type