tsurezure 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tsurezure.rb +29 -6
  3. data/readme.md +28 -2
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a04f09bb09e26d531a84b5738dd7719b2dee55ef2c73845bca3700c1a5f20c25
4
- data.tar.gz: 6b3c83431259f111dd024f00860dfa9e10a8caad5e123f51b7085ca6dbced9db
3
+ metadata.gz: 1dd0633006bc7ba5837c37817e78d1f7a1fdc38520557c10a528fd40acff2573
4
+ data.tar.gz: 420c2cc0bd0387c24cbe5d12b40aad574edd1e4e0f2a4bbf6b39eeb323ccdaec
5
5
  SHA512:
6
- metadata.gz: '038ed41337233b9e7debfaed3da1d2984f8d2e11b46e02ed175da71e12eab878433a4151cefa06fbf0b247dd19d4eff5acb2fb252b6951f0df0084397eae4c14'
7
- data.tar.gz: b9a87b64323fb67155ff68f24f3c390807663de010b39c57d2a73a5aa4559181994603bc41b11ba44af74bc3824b78e317368166a63a37e4c2091b2159b342fa
6
+ metadata.gz: 358fbcfcd4504ea64c5afad8b80f5600a4bab693e48bcf536700315ce6766b54988bf4b25e8e6aeeb71facf7773515bdf0bb0bf4c2c1fc27687f984562af0ad1
7
+ data.tar.gz: 6a581bcabeb9556e2649c6893b9cfdf7553e27726f86446e35feaaba48f19126b124f0019ad45090d095704102a00e3b5834908e3ab045c70c1d11913a021636
@@ -12,6 +12,7 @@ require_relative 'utils/response' # handles request and generates responses.
12
12
 
13
13
  $TRZR_PROCESS_MODE = nil
14
14
  $TRZR_LOG = true
15
+ TRZR_STARTED_AT = Time.now.to_i
15
16
 
16
17
  ARGV.each do |arg|
17
18
  $TRZR_PROCESS_MODE = 'development' if arg == '--development'
@@ -205,8 +206,14 @@ class Tsurezure
205
206
 
206
207
  ##
207
208
  # run when the server is prepared to accept requests.
208
- def listen
209
- puts "running on port #{@port}!"
209
+ def listen(callback = nil)
210
+ if $TRZR_PROCESS_MODE == 'development'
211
+ puts "[trzr_dev] running on port #{@port}!"
212
+ end
213
+
214
+ # call the callback if there's one provided
215
+ callback.call server_opts if callback.is_a? Proc
216
+
210
217
  # create a new thread for handle each incoming request
211
218
  loop do
212
219
  Thread.start(@server.accept) do |client|
@@ -215,8 +222,20 @@ class Tsurezure
215
222
  end
216
223
  end
217
224
 
225
+ def kill
226
+ abort
227
+ end
228
+
218
229
  private
219
230
 
231
+ def server_opts
232
+ {
233
+ port: @port,
234
+ endpoints: @endpoints,
235
+ middleware: @middleware
236
+ }
237
+ end
238
+
220
239
  # ----------------------------------------
221
240
  # :section: registration of endpoints and
222
241
  # all endpoint management methods follow.
@@ -272,10 +291,14 @@ class Tsurezure
272
291
  # add endpoint to list of registered endpoints
273
292
  @endpoints[method][endpoint[:path]] = endpoint
274
293
  end
294
+ end
275
295
 
276
- def kill
277
- abort
296
+ at_exit do
297
+ if $TRZR_PROCESS_MODE == 'development' && $TRZR_LOG.true?
298
+ time = Time.now.to_i - TRZR_STARTED_AT
299
+ puts
300
+ puts '[trzr_dev] shutting down. goodbye...'
301
+ puts "[trzr_dev] shut down after #{Time.at(time).utc.strftime('%H:%M:%S')}."
302
+ puts
278
303
  end
279
304
  end
280
-
281
- at_exit { puts 'shutting down. goodbye...' }
data/readme.md CHANGED
@@ -23,9 +23,17 @@ after cloning this repo, from the root project directory, just run `rake start`
23
23
 
24
24
  to build the gem: run `gem build tsurezure.gemspec`. then, install using `gem install tsurezure-version-number`. `version-number` is whatever version is installed based on the `.gemspec` file.
25
25
 
26
+ ### commands
27
+
28
+ - `rake install` will install dependencies
29
+ - `rake check_deps` will install dependencies if not installed
30
+ - `rake start` will run the server in production mode
31
+ - `rake dev` will run the server in development mode
32
+ - `rake dev_silent` will run the server in development mode with no logs
33
+
26
34
  ### actually using tsurezure:
27
35
 
28
- as for how to use tsurezure, here's a simple hello world to get started:
36
+ as for how to use tsurezure, here's a simple script to get started:
29
37
 
30
38
  ```ruby
31
39
  require 'tsurezure'
@@ -78,6 +86,24 @@ after you run this file, open up your browser or whatever and go to `http://loca
78
86
  }
79
87
  ```
80
88
 
89
+ the `listen` method can be called with no arguments to just start the server. you can also pass in a lambda or proc that will run when the server has started. the only argument that will be passed to that proc is a hash called `server_opts`. it contains some information about the current configuration:
90
+
91
+ ```ruby
92
+ {
93
+ port, # port that tsurezure is running on
94
+ endpoints, # endpoints object containing the endpoints you've added
95
+ middleware # middleware object containing the middleware you've added
96
+ }
97
+ ```
98
+
99
+ simple example of usage:
100
+
101
+ ```ruby
102
+ server.listen lambda { |opts|
103
+ puts "listening on port #{opts[:port]}!"
104
+ }
105
+ ```
106
+
81
107
  the registration function for creating endpoints is very simple:
82
108
 
83
109
  ```ruby
@@ -92,7 +118,7 @@ register http_method, path, callback, options
92
118
 
93
119
  `options` is a hash containing various options to somehow modify the response. valid options:
94
120
 
95
- - `content_type` - determines the mime type of the response
121
+ - `content_type (default: text/plain)` - determines the mime type of the response
96
122
  - `location` - if a location header is required (301, etc), this is used to provide it.
97
123
  - `method` - if an allow header is required (405), this is used to provide it.
98
124
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tsurezure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - jpegzilla