jetski 0.0.0 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73670d12d6fb4fa5721a319367a3be98088ce12514ba451c9c75fd09bd7f045d
4
- data.tar.gz: 497f37a905ac5c5de63a3301f427a77489567fdde25a987fbc0a929a40f2b0e0
3
+ metadata.gz: 7e52910ed0f138a7ee15543b4cdf1c0ed026a48dc51dec7caa99516ea1956638
4
+ data.tar.gz: 7c5ac09f7f96e8da04186bc56d0cfc37d0572d91e75b9b8faa69e3fc063e2173
5
5
  SHA512:
6
- metadata.gz: 1b7ed68c50f7d0c4a66e3daa97ee0c762a24f04151657d2f9fd1c57345c233c9d879caa9c57a872e88df061c8073d953d4df5bae31d21b9d1e32e290882dbb8f
7
- data.tar.gz: 59239b25851ca51f9eb6f9364eeed86dc093d541be54fff628dec9655db9ca47150856f5b9c1b33463dcdcd8125382e09a4ce24b1045407f15f00934874f1432
6
+ metadata.gz: fb905bab091e628e326bf7e98df3e1f5f1f4196503726f11fd8ee6ea40b19d9f30848f6d1a72315f0ceaf2f8d503fa6cd6523081e0db77b32fbf029e8ffc46e6
7
+ data.tar.gz: 3e46ae533b25bd01cd8fc7f275d356014d2e0b286b601f87119b952d9d31ae7e894e60179060b464103e47114ee89538c5a890f91a4adfc8b15c6786cdf60173
@@ -0,0 +1,16 @@
1
+ module Jetski
2
+ class Server
3
+ def initialize
4
+ end
5
+
6
+ def call
7
+ server = WEBrick::HTTPServer.new Port: 8000
8
+
9
+ Jetski::SplashRouter.new(server).call
10
+
11
+ trap 'INT' do server.shutdown end
12
+
13
+ server.start
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,49 @@
1
+ module Jetski
2
+ class SplashRouter
3
+ attr_reader :server
4
+ def initialize(server)
5
+ @server = server
6
+ end
7
+ def call
8
+ parse_routes && host_assets
9
+ end
10
+
11
+ def parse_routes
12
+ # Convert routes file into render of correct controller and action
13
+ routes_file = "config/routes.rb"
14
+
15
+ File.readlines(routes_file, chomp: true).each do |line|
16
+ route_action = line.split(" ")[0]
17
+ controller_mapping = line.split(" ")[1].gsub(/\"/, "")
18
+ controller_name = controller_mapping.split("#")[0]
19
+ action_name = controller_mapping.split("#")[1]
20
+
21
+ served_url = case route_action
22
+ when "root"
23
+ "/"
24
+ end
25
+
26
+ server.mount_proc served_url do |req, res|
27
+ controller_class = Object.const_get("#{controller_name.capitalize}Controller")
28
+ controller = controller_class.new(res)
29
+ controller.action_name = action_name
30
+ controller.controller_name = controller_name
31
+ controller.send(action_name)
32
+ controller.render
33
+ end
34
+ end
35
+ end
36
+
37
+ def host_assets
38
+ # Render css via url
39
+ css_files = Dir[File.join('./app', 'assets', 'stylesheets', '*.css')]
40
+ css_files.each do |file_path|
41
+ filename = file_path.split("/").last
42
+ asset_url = "/assets/#{filename}"
43
+ server.mount_proc asset_url do |req, res|
44
+ res.body = File.read("app/assets/stylesheets/#{filename}")
45
+ end
46
+ end
47
+ end
48
+ end
49
+ 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
@@ -1,3 +1,7 @@
1
+ require_relative './jetski/server'
2
+ require_relative './jetski/splash_router'
3
+ require_relative './jetski/waterfall_controller'
4
+ require "webrick"
1
5
 
2
6
  module Jetski
3
7
  end
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.0
4
+ version: 0.0.3
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