module Engine2

Constants

TINY
VERSION

Attributes

core_loaded[R]

Public Class Methods

boot(&blk) click to toggle source
# File lib/engine2/core.rb, line 532
def boot &blk
    @boot_blk = blk
end
bootstrap(path, settings = {}) click to toggle source
# File lib/engine2/core.rb, line 579
def bootstrap path, settings = {}
    SETTINGS.merge! settings
    SETTINGS[:path] = path
    SETTINGS[:name] ||= File::basename(path)
    SETTINGS.freeze
    Handler.set :public_folder, "public"
    Handler.set :views, [SETTINGS.path_for(:view_path), "#{Engine2::PATH}/views"]
    bootstrap_e2db

    require 'engine2/pre_bootstrap'
    reload
    require 'engine2/post_bootstrap'
end
bootstrap_e2db() click to toggle source
# File lib/engine2/core.rb, line 540
def bootstrap_e2db
    e2_db_path = "#{Engine2::SETTINGS.path_for(:db_path)}/engine2.db"
    e2_db_url = (defined? JRUBY_VERSION) ? "jdbc:sqlite:#{e2_db_path}" : "sqlite://#{e2_db_path}"
    const_set :E2DB, connect(e2_db_url, loggers: [Logger.new($stdout)], convert_types: false, name: :engine2)
    const_set :DUMMYDB, Sequel::Database.new(uri: 'dummy')
    def DUMMYDB.synchronize *args;end
end
connect(*args) click to toggle source
# File lib/engine2/core.rb, line 527
def connect *args
    db = Sequel.connect *args
    db
end
database(name) { || ... } click to toggle source
# File lib/engine2/core.rb, line 523
def database name
    Object.const_set(name, yield) unless Object.const_defined?(name)
end
model_boot(&blk) click to toggle source
# File lib/engine2/core.rb, line 536
def model_boot &blk
    @model_boot_blk = blk
end
reload() click to toggle source
# File lib/engine2/core.rb, line 548
def reload
    @core_loaded = true
    t = Time.now
    ActionNode.count = 0
    SCHEMES.user.clear

    Sequel::DATABASES.each do |db|
        db.models.each{|n, m| Object.send(:remove_const, n) if Object.const_defined?(n)} unless db == E2DB || db == DUMMYDB
    end

    load "#{Engine2::SETTINGS[:app_path]}/boot.rb"

    Sequel::DATABASES.each &:load_schema_cache_from_file
    load 'engine2/models/Files.rb'
    load 'engine2/models/UserInfo.rb'
    Dir["#{Engine2::SETTINGS.path_for(:model_path)}/*"].each{|m| load m}
    @model_boot_blk.() if @model_boot_blk
    puts "MODELS: #{Sequel::DATABASES.reduce(0){|s, d|s + d.models.size}}, Time: #{Time.now - t}"
    Sequel::DATABASES.each do |db|
        db.dump_schema_cache_to_file
        db.models.each{|n, m|m.synchronize_type_info}
    end

    send(:remove_const, :ROOT) if defined? ROOT
    const_set(:ROOT, ActionNode.new(nil, :api, RootAction, {}))

    @boot_blk.(ROOT)
    ROOT.setup_node_tree
    puts "BOOTSTRAP #{Engine2::SETTINGS[:name]}, Time: #{Time.new - t}"
end
version() click to toggle source
# File lib/engine2/version.rb, line 7
def self.version
    VERSION
end