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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73670d12d6fb4fa5721a319367a3be98088ce12514ba451c9c75fd09bd7f045d
4
- data.tar.gz: 497f37a905ac5c5de63a3301f427a77489567fdde25a987fbc0a929a40f2b0e0
3
+ metadata.gz: 729ed6d768c893546aa58d810d2ea6fe9aa2146bec7e0083adfda0c14d032541
4
+ data.tar.gz: ee30c3351ca9c83f85dc43221980cf6a12d427df081c61bbc8a0468c297a7454
5
5
  SHA512:
6
- metadata.gz: 1b7ed68c50f7d0c4a66e3daa97ee0c762a24f04151657d2f9fd1c57345c233c9d879caa9c57a872e88df061c8073d953d4df5bae31d21b9d1e32e290882dbb8f
7
- data.tar.gz: 59239b25851ca51f9eb6f9364eeed86dc093d541be54fff628dec9655db9ca47150856f5b9c1b33463dcdcd8125382e09a4ce24b1045407f15f00934874f1432
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
@@ -1,3 +1,6 @@
1
+ require_relative './lib/jetski/server.rb'
2
+ require_relative './lib/jetski/splash_router.rb'
3
+ require_relative './lib/jetski/waterfall_controller.rb'
1
4
 
2
5
  module Jetski
3
6
  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.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