Module: Engine2

Defined in:
lib/engine2/model.rb,
lib/engine2/action.rb,
lib/engine2/scheme.rb,
lib/engine2/handler.rb,
lib/engine2/version.rb,
lib/engine2/templates.rb,
lib/engine2/type_info.rb,
lib/engine2/action/form.rb,
lib/engine2/action/link.rb,
lib/engine2/action/list.rb,
lib/engine2/action/save.rb,
lib/engine2/action/view.rb,
lib/engine2/action_node.rb,
lib/engine2/action/array.rb,
lib/engine2/action/infra.rb,
lib/engine2/models/Files.rb,
lib/engine2/action/decode.rb,
lib/engine2/action/delete.rb,
lib/engine2/models/UserInfo.rb,
lib/engine2/core.rb

Defined Under Namespace

Modules: ActionAPISupport, ActionAngularSupport, ActionApproveSupport, ActionBulkDeleteSupport, ActionCreateSupport, ActionDeleteSupport, ActionDraggableSupport, ActionFormSupport, ActionInsertSupport, ActionListSupport, ActionMenuSupport, ActionModelSupport, ActionModifySupport, ActionOnChangeSupport, ActionPanelSupport, ActionQuerySupport, ActionSaveSupport, ActionTabSupport, ActionUpdateSupport, ActionViewSupport, ActionWebSocketSupport, BlobSupportAction, MemoryModel, Model Classes: Action, ActionMenuBuilder, ActionNode, ActionNodeBundle, ArrayListAction, BlobStoreAction, BulkDeleteAction, ConfirmAction, CreateAction, DecodeAction, DecodeEntryAction, DecodeListAction, DeleteAction, DeleteActionBase, DownloadBlobStoreAction, DownloadFileStoreAction, DownloadForeignBlobStoreAction, E2Error, E2Files, FileStoreAction, ForeignBlobStoreAction, FormAction, Handler, InfraAction, InlineAction, InsertAction, InspectModalAction, ListAction, LoginAction, LoginFormAction, LogoutAction, LogoutFormAction, ManyToOneListAction, MenuAction, MenuBuilder, ModifyAction, RootAction, SaveAction, Schemes, SearchTemplates, StarToManyBulkUnlinkAction, StarToManyFieldAction, StarToManyFieldInsertAction, StarToManyFieldLinkListAction, StarToManyFieldUpdateAction, StarToManyLinkAction, StarToManyLinkListAction, StarToManyListAction, StarToManyUnlinkAction, StarToManyUnlinkActionBase, Templates, TypeAheadAction, TypeInfo, UpdateAction, UploadBlobStoreAction, UploadFileStoreAction, UserInfo, ViewAction, WebSocketAction

Constant Summary collapse

VERSION =
[MAJOR, MINOR, TINY].join('.').freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.core_loadedObject (readonly)

Returns the value of attribute core_loaded.



512
513
514
# File 'lib/engine2/core.rb', line 512

def core_loaded
  @core_loaded
end

Class Method Details

.boot(&blk) ⇒ Object



523
524
525
# File 'lib/engine2/core.rb', line 523

def boot &blk
    @boot_blk = blk
end

.bootstrap(path, settings = {}) ⇒ Object



570
571
572
573
574
575
576
577
578
579
580
581
582
# File 'lib/engine2/core.rb', line 570

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_e2dbObject



531
532
533
534
535
536
537
# File 'lib/engine2/core.rb', line 531

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) ⇒ Object



518
519
520
521
# File 'lib/engine2/core.rb', line 518

def connect *args
    db = Sequel.connect *args
    db
end

.database(name) ⇒ Object



514
515
516
# File 'lib/engine2/core.rb', line 514

def database name
    Object.const_set(name, yield) unless Object.const_defined?(name)
end

.model_boot(&blk) ⇒ Object



527
528
529
# File 'lib/engine2/core.rb', line 527

def model_boot &blk
    @model_boot_blk = blk
end

.reloadObject



539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
# File 'lib/engine2/core.rb', line 539

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
    @model_boot_blk.() if @model_boot_blk
    load 'engine2/models/Files.rb'
    load 'engine2/models/UserInfo.rb'
    Dir["#{Engine2::SETTINGS.path_for(:model_path)}/*"].each{|m| load m}
    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

.versionObject



7
8
9
# File 'lib/engine2/version.rb', line 7

def self.version
    VERSION
end