jetski 0.0.0 → 0.0.2
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/lib/jetski/server.rb +21 -0
- data/lib/jetski/splash_router.rb +51 -0
- data/lib/jetski/waterfall_controller.rb +25 -0
- data/lib/jetski.rb +3 -0
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 729ed6d768c893546aa58d810d2ea6fe9aa2146bec7e0083adfda0c14d032541
|
|
4
|
+
data.tar.gz: ee30c3351ca9c83f85dc43221980cf6a12d427df081c61bbc8a0468c297a7454
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e06c7f93c2f9babebb6f2b414a1387ae12e1703b91c01b749e0c7f1ac1b47f4179b0d658eb2172c014966a7d05fb85027aaee7856358529e15555e747379e049
|
|
7
|
+
data.tar.gz: bacaaccddd415432748a4421bc69fe1c4bd99761553688a64593c7c99f80a5b29ff02fc27922eea15d7a560a211d3a070d3e42e50e5ae2bc4b393ece1b2254ce
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'webrick'
|
|
2
|
+
require 'pry'
|
|
3
|
+
require_relative './splash_router'
|
|
4
|
+
require_relative './waterfall_controller.rb'
|
|
5
|
+
|
|
6
|
+
module Jetski
|
|
7
|
+
class Server
|
|
8
|
+
def initialize
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call
|
|
12
|
+
server = WEBrick::HTTPServer.new Port: 8000
|
|
13
|
+
|
|
14
|
+
Jetski::SplashRouter.new(server).call
|
|
15
|
+
|
|
16
|
+
trap 'INT' do server.shutdown end
|
|
17
|
+
|
|
18
|
+
server.start
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Dir[File.join('./app', 'controllers', '*.rb')].each { |file| require file }
|
|
2
|
+
|
|
3
|
+
module Jetski
|
|
4
|
+
class SplashRouter
|
|
5
|
+
attr_reader :server
|
|
6
|
+
def initialize(server)
|
|
7
|
+
@server = server
|
|
8
|
+
end
|
|
9
|
+
def call
|
|
10
|
+
parse_routes && host_assets
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def parse_routes
|
|
14
|
+
# Convert routes file into render of correct controller and action
|
|
15
|
+
routes_file = "config/routes.rb"
|
|
16
|
+
|
|
17
|
+
File.readlines(routes_file, chomp: true).each do |line|
|
|
18
|
+
route_action = line.split(" ")[0]
|
|
19
|
+
controller_mapping = line.split(" ")[1].gsub(/\"/, "")
|
|
20
|
+
controller_name = controller_mapping.split("#")[0]
|
|
21
|
+
action_name = controller_mapping.split("#")[1]
|
|
22
|
+
|
|
23
|
+
served_url = case route_action
|
|
24
|
+
when "root"
|
|
25
|
+
"/"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
server.mount_proc served_url do |req, res|
|
|
29
|
+
controller_class = Object.const_get("#{controller_name.capitalize}Controller")
|
|
30
|
+
controller = controller_class.new(res)
|
|
31
|
+
controller.action_name = action_name
|
|
32
|
+
controller.controller_name = controller_name
|
|
33
|
+
controller.send(action_name)
|
|
34
|
+
controller.render
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def host_assets
|
|
40
|
+
# Render css via url
|
|
41
|
+
css_files = Dir[File.join('./app', 'assets', 'stylesheets', '*.css')]
|
|
42
|
+
css_files.each do |file_path|
|
|
43
|
+
filename = file_path.split("/").last
|
|
44
|
+
asset_url = "/assets/#{filename}"
|
|
45
|
+
server.mount_proc asset_url do |req, res|
|
|
46
|
+
res.body = File.read("app/assets/stylesheets/#{filename}")
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# This is the base controller of the library
|
|
2
|
+
module Jetski
|
|
3
|
+
class WaterfallController
|
|
4
|
+
attr_accessor :action_name, :controller_name
|
|
5
|
+
attr_reader :res
|
|
6
|
+
def initialize(res)
|
|
7
|
+
@res = res
|
|
8
|
+
end
|
|
9
|
+
def render
|
|
10
|
+
views_folder = File.join(__dir__, '../../','app', 'views')
|
|
11
|
+
assets_folder = File.join(__dir__, '../../','app', 'assets', 'stylesheets')
|
|
12
|
+
layout_content = File.read(File.join(views_folder, "layouts", "application.html"))
|
|
13
|
+
page_content = File.read(File.join(views_folder, controller_name, "#{action_name}.html"))
|
|
14
|
+
page_with_layout = layout_content.gsub("YIELD_CONTENT", page_content)
|
|
15
|
+
action_css_file = File.join(assets_folder, "#{controller_name}.css")
|
|
16
|
+
css_content = if File.exist? action_css_file
|
|
17
|
+
"<link rel='stylesheet' href='/assets/#{controller_name}.css'>"
|
|
18
|
+
else
|
|
19
|
+
''
|
|
20
|
+
end
|
|
21
|
+
page_with_css = page_with_layout.gsub("DYNAMIC_CSS", css_content)
|
|
22
|
+
res.body = page_with_css
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/lib/jetski.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jetski
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Indigo Tech Tutorials
|
|
@@ -17,10 +17,14 @@ extensions: []
|
|
|
17
17
|
extra_rdoc_files: []
|
|
18
18
|
files:
|
|
19
19
|
- lib/jetski.rb
|
|
20
|
+
- lib/jetski/server.rb
|
|
21
|
+
- lib/jetski/splash_router.rb
|
|
22
|
+
- lib/jetski/waterfall_controller.rb
|
|
20
23
|
homepage: https://rubygems.org/gems/jetski
|
|
21
24
|
licenses:
|
|
22
25
|
- MIT
|
|
23
|
-
metadata:
|
|
26
|
+
metadata:
|
|
27
|
+
source_code_uri: https://github.com/indigotechtutorials/jetski
|
|
24
28
|
rdoc_options: []
|
|
25
29
|
require_paths:
|
|
26
30
|
- lib
|