Module: Tina4

Defined in:
lib/tina4.rb,
lib/tina4/api.rb,
lib/tina4/cli.rb,
lib/tina4/env.rb,
lib/tina4/orm.rb,
lib/tina4/auth.rb,
lib/tina4/crud.rb,
lib/tina4/wsdl.rb,
lib/tina4/debug.rb,
lib/tina4/queue.rb,
lib/tina4/router.rb,
lib/tina4/request.rb,
lib/tina4/session.rb,
lib/tina4/swagger.rb,
lib/tina4/testing.rb,
lib/tina4/version.rb,
lib/tina4/database.rb,
lib/tina4/rack_app.rb,
lib/tina4/response.rb,
lib/tina4/template.rb,
lib/tina4/migration.rb,
lib/tina4/webserver.rb,
lib/tina4/websocket.rb,
lib/tina4/dev_reload.rb,
lib/tina4/middleware.rb,
lib/tina4/field_types.rb,
lib/tina4/localization.rb,
lib/tina4/scss_compiler.rb,
lib/tina4/database_result.rb,
lib/tina4/drivers/mssql_driver.rb,
lib/tina4/drivers/mysql_driver.rb,
lib/tina4/drivers/sqlite_driver.rb,
lib/tina4/drivers/firebird_driver.rb,
lib/tina4/drivers/postgres_driver.rb,
lib/tina4/queue_backends/lite_backend.rb,
lib/tina4/queue_backends/kafka_backend.rb,
lib/tina4/session_handlers/file_handler.rb,
lib/tina4/session_handlers/mongo_handler.rb,
lib/tina4/session_handlers/redis_handler.rb,
lib/tina4/queue_backends/rabbitmq_backend.rb

Defined Under Namespace

Modules: Auth, Crud, Debug, DevReload, Drivers, Env, FieldTypes, Localization, QueueBackends, Router, ScssCompiler, SessionHandlers, Swagger, Template, Testing, WSDL Classes: API, APIResponse, CLI, Consumer, Database, DatabaseResult, LazySession, Middleware, Migration, ORM, Producer, QueueMessage, RackApp, Request, Response, Route, Session, WebServer, WebSocket, WebSocketConnection

Constant Summary collapse

<<~'BANNER'

  ████████╗██╗███╗   ██╗ █████╗ ██╗  ██╗
  ╚══██╔══╝██║████╗  ██║██╔══██╗██║  ██║
     ██║   ██║██╔██╗ ██║███████║███████║
     ██║   ██║██║╚██╗██║██╔══██║╚════██║
     ██║   ██║██║ ╚████║██║  ██║     ██║
     ╚═╝   ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝     ╚═╝
BANNER
VERSION =
"0.2.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.databaseObject

Returns the value of attribute database.



54
55
56
# File 'lib/tina4.rb', line 54

def database
  @database
end

.root_dirObject

Returns the value of attribute root_dir.



54
55
56
# File 'lib/tina4.rb', line 54

def root_dir
  @root_dir
end

Class Method Details

.after(pattern = nil, &block) ⇒ Object



167
168
169
# File 'lib/tina4.rb', line 167

def after(pattern = nil, &block)
  Tina4::Middleware.after(pattern, &block)
end

.any(path, auth: false, swagger_meta: {}, &block) ⇒ Object



120
121
122
123
124
125
# File 'lib/tina4.rb', line 120

def any(path, auth: false, swagger_meta: {}, &block)
  auth_handler = resolve_auth(auth)
  %w[GET POST PUT PATCH DELETE].each do |method|
    Tina4::Router.add_route(method, path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
  end
end

.before(pattern = nil, &block) ⇒ Object

Middleware hooks



163
164
165
# File 'lib/tina4.rb', line 163

def before(pattern = nil, &block)
  Tina4::Middleware.before(pattern, &block)
end

.delete(path, auth: :default, swagger_meta: {}, &block) ⇒ Object



115
116
117
118
# File 'lib/tina4.rb', line 115

def delete(path, auth: :default, swagger_meta: {}, &block)
  auth_handler = resolve_auth(auth)
  Tina4::Router.add_route("DELETE", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.describe(name, &block) ⇒ Object

Inline test DSL



177
178
179
# File 'lib/tina4.rb', line 177

def describe(name, &block)
  Tina4::Testing.describe(name, &block)
end

.get(path, auth: nil, swagger_meta: {}, &block) ⇒ Object

DSL methods for route registration GET is public by default (matching tina4_python behavior) POST/PUT/PATCH/DELETE are secured by default — use auth: false to make public



95
96
97
98
# File 'lib/tina4.rb', line 95

def get(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth == false ? nil : auth
  Tina4::Router.add_route("GET", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.group(prefix, auth: nil, &block) ⇒ Object

Route groups



158
159
160
# File 'lib/tina4.rb', line 158

def group(prefix, auth: nil, &block)
  Tina4::Router.group(prefix, auth_handler: auth, &block)
end

.initialize!(root_dir = Dir.pwd) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/tina4.rb', line 64

def initialize!(root_dir = Dir.pwd)
  @root_dir = root_dir

  # Print banner
  print_banner

  # Load environment
  Tina4::Env.load(root_dir)

  # Setup debug logging
  Tina4::Debug.setup(root_dir)
  Tina4::Debug.info("Tina4 Ruby v#{VERSION} initializing...")

  # Setup auth keys
  Tina4::Auth.setup(root_dir)

  # Load translations
  Tina4::Localization.load(root_dir)

  # Connect database if configured
  setup_database

  # Auto-discover routes
  auto_discover(root_dir)

  Tina4::Debug.info("Tina4 initialized successfully")
end

.options(path, &block) ⇒ Object



127
128
129
# File 'lib/tina4.rb', line 127

def options(path, &block)
  Tina4::Router.add_route("OPTIONS", path, block)
end

.patch(path, auth: :default, swagger_meta: {}, &block) ⇒ Object



110
111
112
113
# File 'lib/tina4.rb', line 110

def patch(path, auth: :default, swagger_meta: {}, &block)
  auth_handler = resolve_auth(auth)
  Tina4::Router.add_route("PATCH", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.post(path, auth: :default, swagger_meta: {}, &block) ⇒ Object



100
101
102
103
# File 'lib/tina4.rb', line 100

def post(path, auth: :default, swagger_meta: {}, &block)
  auth_handler = resolve_auth(auth)
  Tina4::Router.add_route("POST", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end


56
57
58
59
60
61
62
# File 'lib/tina4.rb', line 56

def print_banner
  puts "\e[35m#{BANNER}\e[0m"
  puts "    \e[35mTina4 Ruby v#{VERSION} - This is not a framework\e[0m"
  puts ""
rescue
  puts "\e[35mTINA4 Ruby v#{VERSION}\e[0m"
end

.put(path, auth: :default, swagger_meta: {}, &block) ⇒ Object



105
106
107
108
# File 'lib/tina4.rb', line 105

def put(path, auth: :default, swagger_meta: {}, &block)
  auth_handler = resolve_auth(auth)
  Tina4::Router.add_route("PUT", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.secure_delete(path, auth: nil, swagger_meta: {}, &block) ⇒ Object



152
153
154
155
# File 'lib/tina4.rb', line 152

def secure_delete(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth || Tina4::Auth.default_secure_auth
  Tina4::Router.add_route("DELETE", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.secure_get(path, auth: nil, swagger_meta: {}, &block) ⇒ Object

Explicit secure variants (always secured, regardless of HTTP method)



132
133
134
135
# File 'lib/tina4.rb', line 132

def secure_get(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth || Tina4::Auth.default_secure_auth
  Tina4::Router.add_route("GET", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.secure_patch(path, auth: nil, swagger_meta: {}, &block) ⇒ Object



147
148
149
150
# File 'lib/tina4.rb', line 147

def secure_patch(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth || Tina4::Auth.default_secure_auth
  Tina4::Router.add_route("PATCH", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.secure_post(path, auth: nil, swagger_meta: {}, &block) ⇒ Object



137
138
139
140
# File 'lib/tina4.rb', line 137

def secure_post(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth || Tina4::Auth.default_secure_auth
  Tina4::Router.add_route("POST", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.secure_put(path, auth: nil, swagger_meta: {}, &block) ⇒ Object



142
143
144
145
# File 'lib/tina4.rb', line 142

def secure_put(path, auth: nil, swagger_meta: {}, &block)
  auth_handler = auth || Tina4::Auth.default_secure_auth
  Tina4::Router.add_route("PUT", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
end

.t(key, **options) ⇒ Object

Translation shortcut



182
183
184
# File 'lib/tina4.rb', line 182

def t(key, **options)
  Tina4::Localization.t(key, **options)
end

.template_global(key, value) ⇒ Object

Template globals



172
173
174
# File 'lib/tina4.rb', line 172

def template_global(key, value)
  Tina4::Template.add_global(key, value)
end