eksa-framework 3.4.3 → 3.5.0
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.
- checksums.yaml +4 -4
- data/.eksa.json +10 -1
- data/.env.example +8 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +10 -0
- data/README.md +48 -64
- data/_posts/2026-03-15-welcome-to-eksa-framework.md +57 -73
- data/app/views/about.html.erb +3 -3
- data/app/views/docs.html.erb +51 -92
- data/app/views/edit.html.erb +1 -1
- data/app/views/index.html.erb +2 -2
- data/db/eksa_app.db +0 -0
- data/db/setup.rb +4 -4
- data/exe/eksa +135 -12
- data/lib/eksa/database/mongo_adapter.rb +154 -0
- data/lib/eksa/database/sqlite_adapter.rb +26 -0
- data/lib/eksa/database.rb +47 -0
- data/lib/eksa/model.rb +2 -16
- data/lib/eksa/version.rb +1 -1
- data/lib/eksa.rb +1 -2
- metadata +36 -3
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
begin
|
|
3
|
+
require 'dotenv'
|
|
4
|
+
Dotenv.load if File.exist?('.env')
|
|
5
|
+
rescue LoadError
|
|
6
|
+
# Dotenv not available, rely on existing ENV
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module Eksa
|
|
10
|
+
module Database
|
|
11
|
+
def self.adapter
|
|
12
|
+
@adapter ||= create_adapter
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.reset_adapter
|
|
16
|
+
@adapter = nil
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.create_adapter
|
|
20
|
+
config = load_config
|
|
21
|
+
type = config.dig('database', 'type') || 'sqlite'
|
|
22
|
+
|
|
23
|
+
case type
|
|
24
|
+
when 'mongo', 'mongodb'
|
|
25
|
+
require_relative 'database/mongo_adapter'
|
|
26
|
+
mongo_config = config.dig('database', 'mongodb') || {}
|
|
27
|
+
|
|
28
|
+
# Prioritize Environment Variable for Security
|
|
29
|
+
env_uri = ENV['EKSA_MONGODB_URI'] || ENV['MONGODB_URI']
|
|
30
|
+
mongo_config['uri'] = env_uri if env_uri
|
|
31
|
+
|
|
32
|
+
MongoAdapter.new(mongo_config)
|
|
33
|
+
else
|
|
34
|
+
require_relative 'database/sqlite_adapter'
|
|
35
|
+
SqliteAdapter.new(config.dig('database', 'sqlite'))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.load_config
|
|
40
|
+
config_path = File.join(Dir.pwd, '.eksa.json')
|
|
41
|
+
return {} unless File.exist?(config_path)
|
|
42
|
+
JSON.parse(File.read(config_path))
|
|
43
|
+
rescue
|
|
44
|
+
{}
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/eksa/model.rb
CHANGED
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
require 'fileutils'
|
|
1
|
+
require_relative 'database'
|
|
3
2
|
|
|
4
3
|
module Eksa
|
|
5
4
|
class Model
|
|
6
|
-
class << self
|
|
7
|
-
attr_accessor :database_path
|
|
8
|
-
end
|
|
9
|
-
|
|
10
5
|
def self.db
|
|
11
|
-
path = database_path || default_db_path
|
|
12
|
-
db_dir = File.dirname(path)
|
|
13
|
-
FileUtils.mkdir_p(db_dir) unless Dir.exist?(db_dir)
|
|
14
|
-
|
|
15
|
-
@db ||= SQLite3::Database.new(path)
|
|
16
6
|
ensure_schema
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.default_db_path
|
|
21
|
-
File.expand_path("../../db/eksa_app.db", __dir__)
|
|
7
|
+
Eksa::Database.adapter
|
|
22
8
|
end
|
|
23
9
|
|
|
24
10
|
def self.ensure_schema
|
data/lib/eksa/version.rb
CHANGED
data/lib/eksa.rb
CHANGED
|
@@ -6,6 +6,7 @@ require_relative 'eksa/controller'
|
|
|
6
6
|
require_relative 'eksa/model'
|
|
7
7
|
require_relative 'eksa/markdown_post'
|
|
8
8
|
require_relative 'eksa/user'
|
|
9
|
+
require_relative 'eksa/database'
|
|
9
10
|
require_relative 'eksa/auth_controller'
|
|
10
11
|
require_relative 'eksa/cms_controller'
|
|
11
12
|
|
|
@@ -26,8 +27,6 @@ module Eksa
|
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
def configure_framework
|
|
29
|
-
Eksa::Model.database_path = @config[:db_path]
|
|
30
|
-
|
|
31
30
|
# Setup Session Middleware for Authentication
|
|
32
31
|
use Rack::Session::Cookie, secret: @config[:session_secret], key: 'eksa.session'
|
|
33
32
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: eksa-framework
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- IshikawaUta
|
|
@@ -121,8 +121,36 @@ dependencies:
|
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
123
|
version: '2.0'
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: mongo
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - "~>"
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '2.19'
|
|
131
|
+
type: :runtime
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - "~>"
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '2.19'
|
|
138
|
+
- !ruby/object:Gem::Dependency
|
|
139
|
+
name: dotenv
|
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '2.8'
|
|
145
|
+
type: :runtime
|
|
146
|
+
prerelease: false
|
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - "~>"
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '2.8'
|
|
152
|
+
description: Framework MVC ringan dengan tema modern, sistem routing, dan dukungan
|
|
153
|
+
multi-database (SQLite & MongoDB).
|
|
126
154
|
email:
|
|
127
155
|
- komikers09@gmail.com
|
|
128
156
|
executables:
|
|
@@ -131,6 +159,7 @@ extensions: []
|
|
|
131
159
|
extra_rdoc_files: []
|
|
132
160
|
files:
|
|
133
161
|
- ".eksa.json"
|
|
162
|
+
- ".env.example"
|
|
134
163
|
- Gemfile
|
|
135
164
|
- Gemfile.lock
|
|
136
165
|
- LICENSE
|
|
@@ -149,12 +178,16 @@ files:
|
|
|
149
178
|
- app/views/posts/index.html.erb
|
|
150
179
|
- app/views/posts/show.html.erb
|
|
151
180
|
- config.ru
|
|
181
|
+
- db/eksa_app.db
|
|
152
182
|
- db/setup.rb
|
|
153
183
|
- exe/eksa
|
|
154
184
|
- lib/eksa.rb
|
|
155
185
|
- lib/eksa/auth_controller.rb
|
|
156
186
|
- lib/eksa/cms_controller.rb
|
|
157
187
|
- lib/eksa/controller.rb
|
|
188
|
+
- lib/eksa/database.rb
|
|
189
|
+
- lib/eksa/database/mongo_adapter.rb
|
|
190
|
+
- lib/eksa/database/sqlite_adapter.rb
|
|
158
191
|
- lib/eksa/markdown_post.rb
|
|
159
192
|
- lib/eksa/model.rb
|
|
160
193
|
- lib/eksa/user.rb
|