x_runtime 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,5 +2,4 @@ source "http://ruby.taobao.org"
2
2
  gem 'rack'
3
3
  gem 'rake'
4
4
  gem 'jeweler'
5
- gem 'active_support'
6
5
  gem 'redis', '~>3.0.1'
data/Gemfile.lock CHANGED
@@ -1,16 +1,13 @@
1
1
  GEM
2
2
  remote: http://ruby.taobao.org/
3
3
  specs:
4
- active_support (3.0.0)
5
- activesupport (= 3.0.0)
6
- activesupport (3.0.0)
7
4
  git (1.2.5)
8
5
  jeweler (1.8.4)
9
6
  bundler (~> 1.0)
10
7
  git (>= 1.2.5)
11
8
  rake
12
9
  rdoc
13
- json (1.7.3)
10
+ json (1.7.5)
14
11
  rack (1.4.1)
15
12
  rake (0.9.2.2)
16
13
  rdoc (3.12)
@@ -21,7 +18,6 @@ PLATFORMS
21
18
  ruby
22
19
 
23
20
  DEPENDENCIES
24
- active_support
25
21
  jeweler
26
22
  rack
27
23
  rake
data/README.markdown CHANGED
@@ -26,7 +26,13 @@ XRuntime是一个Rack的middleware,配合Redis用来分析Http Server每个URI
26
26
  2. redis对象
27
27
 
28
28
  可以指定XRuntime使用的Redis的key前缀或者叫命名空间:
29
- `XRuntime::NameSpace = "RuntimeEx::Threshold"`
29
+ `XRuntime::NameSpace = "RuntimeEx::Threshold"`
30
+
31
+ [http://localhost:4567/xruntime](/xruntime)支持Http basic auth验证:
32
+
33
+ use Rack::XRuntime, 100, Redis.connect(:url => "redis://localhost:6380/") do |name, password|
34
+ name == "cui" and password == "hello"
35
+ end
30
36
 
31
37
  ### Sinatra
32
38
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,30 +1,28 @@
1
1
  module XRuntime
2
2
  class Middleware
3
3
  # threshold => ms
4
- def initialize(app, threshold, redis)
4
+ def initialize(app, threshold, redis, &auth)
5
5
  @app = app
6
6
  @threshold = threshold.to_f
7
7
  @redis = redis
8
+ @portal = Portal.new(ds)
9
+ @portal = Rack::Auth::Basic.new(@portal, &auth) if block_given?
8
10
  end
9
11
 
10
12
  def ds
11
- @@ds ||= DataSet.new(redis_key, script)
13
+ @ds ||= DataSet.new(redis_key, script)
12
14
  end
13
15
 
14
16
  def script
15
- @@script ||= Script.new(@redis)
17
+ @script ||= Script.new(@redis)
16
18
  end
17
19
 
18
20
  def call(env)
19
- status, headers, body = nil
20
-
21
21
  if env['REQUEST_PATH'] == "/xruntime"
22
- status, headers, body = call_portal(env)
22
+ call_portal(env)
23
23
  else
24
- status, headers, body = call_app(env)
24
+ call_app(env)
25
25
  end
26
-
27
- [status, headers, body]
28
26
  end
29
27
 
30
28
  def call_app(env)
@@ -40,8 +38,7 @@ module XRuntime
40
38
  end
41
39
 
42
40
  def call_portal(env)
43
- @req = Rack::Request.new(env)
44
- [200, {}, [Template.new(ds, :limit => (@req.params["limit"] ? @req.params["limit"].to_i : 20), :offset => @req.params["offset"].to_i).render]]
41
+ @portal.call(env)
45
42
  end
46
43
 
47
44
  def logredis(cost,uri)
@@ -0,0 +1,12 @@
1
+ module XRuntime
2
+ class Portal
3
+ def initialize(ds)
4
+ @ds = ds
5
+ end
6
+
7
+ def call(env)
8
+ @req = Rack::Request.new(env)
9
+ [200, {}, [Template.new(@ds, :limit => (@req.params["limit"] ? @req.params["limit"].to_i : 20), :offset => @req.params["offset"].to_i).render]]
10
+ end
11
+ end
12
+ end
data/lib/x_runtime.rb CHANGED
@@ -10,14 +10,15 @@ $:.unshift(File.dirname(__FILE__))
10
10
 
11
11
  module XRuntime
12
12
  NameSpace = "RuntimeEx::Threshold"
13
+
14
+ autoload :Middleware, "x_runtime/middleware"
15
+ autoload :DataSet, "x_runtime/data_set"
16
+ autoload :Script, "x_runtime/script"
17
+ autoload :Portal, "x_runtime/portal"
18
+ autoload :Template, "x_runtime/template"
19
+ autoload :Utils, "x_runtime/utils"
13
20
  end
14
21
 
15
- XRuntime.autoload :Middleware, "x_runtime/middleware"
16
- XRuntime.autoload :DataSet, "x_runtime/data_set"
17
- XRuntime.autoload :Script, "x_runtime/script"
18
- XRuntime.autoload :Template, "x_runtime/template"
19
- XRuntime.autoload :Utils, "x_runtime/utils"
20
-
21
22
  module Rack
22
23
  XRuntime = XRuntime::Middleware
23
24
  end
data/test/server.rb CHANGED
@@ -2,8 +2,17 @@ require "sinatra"
2
2
  require_relative "../lib/x_runtime"
3
3
 
4
4
  # redis-server version must > 2.6.0 for lua script.
5
+
5
6
  # use XRuntime::Middleware, 10, Redis.connect(:url => "redis://localhost:6380/")
6
- use Rack::XRuntime, 10, Redis.connect(:url => "redis://localhost:6380/")
7
+
8
+ # XRuntime::Middleware is same as Rack::XRuntime
9
+
10
+ # use Rack::XRuntime, 10, Redis.connect(:url => "redis://localhost:6380/")
11
+
12
+ # Use with basic auth
13
+ use Rack::XRuntime, 10, Redis.connect(:url => "redis://localhost:6380/") do |name, password|
14
+ name == "cui" and password == "hello"
15
+ end
7
16
 
8
17
  get /.*/ do
9
18
  # sleep(1)
data/x_runtime.gemspec ADDED
@@ -0,0 +1,69 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "x_runtime"
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["\u{5d14}\u{5ce5}"]
12
+ s.date = "2012-08-20"
13
+ s.description = "\u{7531}\u{4e8e}\u{4f7f}\u{7528}\u{5230}Redis\u{7684}lua script,\u{6240}\u{4ee5}\u{9700}\u{8981}\u{4f60}\u{7684}Redis\u{670d}\u{52a1}\u{652f}\u{6301},redis-server\u{7248}\u{672c}>2.6.x,redis(ruby gem)>3.0.1."
14
+ s.email = "zheng.cuizh@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE.txt",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/x_runtime.rb",
27
+ "lib/x_runtime/array.rb",
28
+ "lib/x_runtime/data_set.rb",
29
+ "lib/x_runtime/middleware.rb",
30
+ "lib/x_runtime/portal.rb",
31
+ "lib/x_runtime/redis.lua",
32
+ "lib/x_runtime/script.rb",
33
+ "lib/x_runtime/template.erb",
34
+ "lib/x_runtime/template.rb",
35
+ "lib/x_runtime/utils.rb",
36
+ "test/client.rb",
37
+ "test/helper.rb",
38
+ "test/server.rb",
39
+ "test/test_x_runtime.rb",
40
+ "x_runtime.gemspec"
41
+ ]
42
+ s.homepage = "http://github.com/charlescui/x_runtime"
43
+ s.licenses = ["MIT"]
44
+ s.require_paths = ["lib"]
45
+ s.rubygems_version = "1.8.24"
46
+ s.summary = "XRuntime\u{662f}\u{4e00}\u{4e2a}Rack\u{7684}middleware,\u{914d}\u{5408}Redis\u{7528}\u{6765}\u{5206}\u{6790}Http Server\u{6bcf}\u{4e2a}URI\u{8bf7}\u{6c42}\u{65f6}\u{957f}"
47
+
48
+ if s.respond_to? :specification_version then
49
+ s.specification_version = 3
50
+
51
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
+ s.add_runtime_dependency(%q<rack>, [">= 0"])
53
+ s.add_runtime_dependency(%q<rake>, [">= 0"])
54
+ s.add_runtime_dependency(%q<jeweler>, [">= 0"])
55
+ s.add_runtime_dependency(%q<redis>, ["~> 3.0.1"])
56
+ else
57
+ s.add_dependency(%q<rack>, [">= 0"])
58
+ s.add_dependency(%q<rake>, [">= 0"])
59
+ s.add_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_dependency(%q<redis>, ["~> 3.0.1"])
61
+ end
62
+ else
63
+ s.add_dependency(%q<rack>, [">= 0"])
64
+ s.add_dependency(%q<rake>, [">= 0"])
65
+ s.add_dependency(%q<jeweler>, [">= 0"])
66
+ s.add_dependency(%q<redis>, ["~> 3.0.1"])
67
+ end
68
+ end
69
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x_runtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -59,22 +59,6 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: active_support
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: redis
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -110,6 +94,7 @@ files:
110
94
  - lib/x_runtime/array.rb
111
95
  - lib/x_runtime/data_set.rb
112
96
  - lib/x_runtime/middleware.rb
97
+ - lib/x_runtime/portal.rb
113
98
  - lib/x_runtime/redis.lua
114
99
  - lib/x_runtime/script.rb
115
100
  - lib/x_runtime/template.erb
@@ -119,6 +104,7 @@ files:
119
104
  - test/helper.rb
120
105
  - test/server.rb
121
106
  - test/test_x_runtime.rb
107
+ - x_runtime.gemspec
122
108
  homepage: http://github.com/charlescui/x_runtime
123
109
  licenses:
124
110
  - MIT
@@ -134,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
134
120
  version: '0'
135
121
  segments:
136
122
  - 0
137
- hash: 1659196055007791068
123
+ hash: 3835881030075432585
138
124
  required_rubygems_version: !ruby/object:Gem::Requirement
139
125
  none: false
140
126
  requirements: