Module: Jets::Core

Extended by:
Memoist
Included in:
Jets
Defined in:
lib/jets/core.rb

Constant Summary collapse

@@application =

Calling application triggers load of configs. Jets’ the default config/application.rb is loaded, then the project’s config/application.rb is loaded.

nil
@@call_count =

NOTE: In development this will always be 1 because the app gets reloaded. On AWS Lambda, this will be ever increasing until the container gets replaced.

0
@@prewarm_count =
0

Instance Method Summary collapse

Instance Method Details

#applicationObject



12
13
14
15
16
17
18
# File 'lib/jets/core.rb', line 12

def application
  return @@application if @@application

  @@application = Jets::Application.new
  @@application.setup!
  @@application
end

#bootObject

Load all application base classes and project classes



27
28
29
# File 'lib/jets/core.rb', line 27

def boot
  Jets::Booter.boot!
end

#build_rootObject



58
59
60
# File 'lib/jets/core.rb', line 58

def build_root
  "/tmp/jets/#{config.project_name}".freeze
end

#call_countObject



102
103
104
# File 'lib/jets/core.rb', line 102

def call_count
  @@call_count
end

#configObject

For some reason memoize doesnt work with application, think there’s some circular dependency issue. Figure this out later.



22
23
24
# File 'lib/jets/core.rb', line 22

def config
  application.config
end

#eager_load!Object



81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/jets/core.rb', line 81

def eager_load!
  Dir.glob("#{Jets.root}app/**/*.rb").select do |path|
    next if !File.file?(path) or path =~ %r{/javascript/} or path =~ %r{/views/}

    class_name = path
                  .sub(/\.rb$/,'') # remove .rb
                  .sub(/^\.\//,'') # remove ./
                  .sub(/app\/\w+\//,'') # remove app/controllers or app/jobs etc
                  .classify
    puts "eager_load! loading path: #{path} class_name: #{class_name}" if ENV['DEBUG']
    class_name.constantize # dont have to worry about order.
  end
end

#envObject



51
52
53
54
55
# File 'lib/jets/core.rb', line 51

def env
  env = ENV['JETS_ENV'] || 'development'
  ENV['RAILS_ENV'] = ENV['RACK_ENV'] = env
  ActiveSupport::StringInquirer.new(env)
end

#increase_call_countObject



98
99
100
# File 'lib/jets/core.rb', line 98

def increase_call_count
  @@call_count += 1
end

#increase_prewarm_countObject



107
108
109
# File 'lib/jets/core.rb', line 107

def increase_prewarm_count
  @@prewarm_count += 1
end

#load_tasksObject



73
74
75
# File 'lib/jets/core.rb', line 73

def load_tasks
  Jets::Commands::RakeTasks.load!
end

#loggerObject



63
64
65
# File 'lib/jets/core.rb', line 63

def logger
  Logger.new($stderr)
end

#prewarm_countObject



111
112
113
# File 'lib/jets/core.rb', line 111

def prewarm_count
  @@prewarm_count
end

#rootObject

Ensures trailing slash Useful for appending a ‘./’ in front of a path or leaving it alone. Returns: ‘/path/with/trailing/slash/’ or ‘./’ @@root = nil def root

return @@root if @@root
@@root = ENV['JETS_ROOT'].to_s
@@root = '.' if @@root == ''
@@root = "#{@@root}/" unless @@root.ends_with?('/')
@@root = Pathname.new(@@root)

end



43
44
45
46
47
48
# File 'lib/jets/core.rb', line 43

def root
  root = ENV['JETS_ROOT'].to_s
  root = '.' if root == ''
  root = "#{root}/" unless root.ends_with?('/')
  Pathname.new(root)
end

#versionObject



77
78
79
# File 'lib/jets/core.rb', line 77

def version
  Jets::VERSION
end

#webpacker?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/jets/core.rb', line 68

def webpacker?
  Gem.loaded_specs.keys.include?("webpacker")
end