environmental 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/README +1 -44
- data/Rakefile +16 -19
- metadata +12 -12
- data/lib/environmental.rb +0 -99
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,44 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
== Description
|
4
|
-
|
5
|
-
Never again will you accidentally delete production data! Rack::Environmental adds
|
6
|
-
an indicator badge to your web application so that you can tell whether you're
|
7
|
-
working with the staging, test, development or production version of your web app.
|
8
|
-
|
9
|
-
== Usage
|
10
|
-
|
11
|
-
This Rack middleware can be used with any Rack application, but here's how you would
|
12
|
-
use it in Rails. Put the following in config/environment.rb:
|
13
|
-
|
14
|
-
config.middleware.use Rack::Environmental,
|
15
|
-
:staging => { :url => /^staging.+$/ },
|
16
|
-
:test => { :url => /^test.+$/ },
|
17
|
-
:development => { :url => /^localhost.+$/ }
|
18
|
-
|
19
|
-
When a request comes to your web app, Rack::Environmental compares the URL to the supplied
|
20
|
-
regular expressions. If the URL matches, the name of the environment is displayed at the
|
21
|
-
top of the web page.
|
22
|
-
|
23
|
-
Each environment can be further configured:
|
24
|
-
|
25
|
-
config.middleware.use Rack::Environmental,
|
26
|
-
:staging => { :url => /^staging.+$/,
|
27
|
-
:color => "yellow",
|
28
|
-
:size => :large },
|
29
|
-
:test => { :url => /^test.+$/,
|
30
|
-
:color => "purple",
|
31
|
-
:style => :badge },
|
32
|
-
:development => { :url => /^localhost.+$/,
|
33
|
-
:color => "orange" }
|
34
|
-
|
35
|
-
Here's the full list of configuration options:
|
36
|
-
|
37
|
-
:url => a regular expression
|
38
|
-
:style => either :badge (a transparent, floating badge) or :banner (default)
|
39
|
-
:color => a string that represents a CSS color, such as "red", "rgb(6,70,14)", or "#8e6630"
|
40
|
-
:size => :small, :medium, or :large; defaults to :medium
|
41
|
-
:opacity => a number from 0 (completely transparent) to 1; only works with the badge style
|
42
|
-
:top => distance in pixels from the top; only works with the badge style
|
43
|
-
:left => distance in pixels from the left; only works with the badge style
|
44
|
-
|
1
|
+
This gem is deprecated. It has been renamed rack-environmental.
|
data/Rakefile
CHANGED
@@ -1,24 +1,21 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/gempackagetask'
|
3
3
|
require 'rubygems'
|
4
|
-
|
5
|
-
gem_spec = Gem::Specification.new do |s|
|
6
|
-
s.name = "environmental"
|
7
|
-
s.version = "0.0.1"
|
8
|
-
s.author = "Wyatt Greene"
|
9
|
-
s.email = "techiferous@gmail.com"
|
10
|
-
s.summary = "Rack middleware that adds an indicator of your application environment"
|
11
|
-
s.description = %Q{
|
12
|
-
Rack::Environmental indicates which environment your web application is running
|
13
|
-
in (staging, test, etc.).
|
14
|
-
}
|
15
|
-
s.require_path = "lib"
|
16
|
-
s.files = ["lib/environmental.rb", "LICENSE", "Rakefile", "README",
|
17
|
-
"CHANGELOG"]
|
18
|
-
s.homepage = "http://github.com/techiferous/environmental"
|
19
|
-
s.requirements << "none"
|
20
|
-
s.has_rdoc = false
|
21
|
-
end
|
22
4
|
|
23
|
-
|
5
|
+
begin
|
6
|
+
require 'jeweler'
|
7
|
+
Jeweler::Tasks.new do |s|
|
8
|
+
s.name = "environmental"
|
9
|
+
s.version = "1.0.0"
|
10
|
+
s.author = "Wyatt Greene"
|
11
|
+
s.email = "techiferous@gmail.com"
|
12
|
+
s.summary = "Deprecated. Use rack-environmental instead."
|
13
|
+
s.description = "Deprecated. Use rack-environmental instead."
|
14
|
+
s.files = ["LICENSE", "Rakefile", "README", "CHANGELOG"]
|
15
|
+
s.requirements << "none"
|
16
|
+
s.has_rdoc = false
|
17
|
+
end
|
18
|
+
Jeweler::GemcutterTasks.new
|
19
|
+
rescue LoadError
|
20
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
24
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environmental
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wyatt Greene
|
@@ -9,31 +9,31 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-03 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description:
|
16
|
+
description: Deprecated. Use rack-environmental instead.
|
17
17
|
email: techiferous@gmail.com
|
18
18
|
executables: []
|
19
19
|
|
20
20
|
extensions: []
|
21
21
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
24
|
-
files:
|
25
|
-
- lib/environmental.rb
|
22
|
+
extra_rdoc_files:
|
26
23
|
- LICENSE
|
27
|
-
- Rakefile
|
28
24
|
- README
|
25
|
+
files:
|
29
26
|
- CHANGELOG
|
27
|
+
- LICENSE
|
28
|
+
- README
|
29
|
+
- Rakefile
|
30
30
|
has_rdoc: true
|
31
|
-
homepage:
|
31
|
+
homepage:
|
32
32
|
licenses: []
|
33
33
|
|
34
34
|
post_install_message:
|
35
|
-
rdoc_options:
|
36
|
-
|
35
|
+
rdoc_options:
|
36
|
+
- --charset=UTF-8
|
37
37
|
require_paths:
|
38
38
|
- lib
|
39
39
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -54,6 +54,6 @@ rubyforge_project:
|
|
54
54
|
rubygems_version: 1.3.5
|
55
55
|
signing_key:
|
56
56
|
specification_version: 3
|
57
|
-
summary:
|
57
|
+
summary: Deprecated. Use rack-environmental instead.
|
58
58
|
test_files: []
|
59
59
|
|
data/lib/environmental.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'nokogiri'
|
2
|
-
|
3
|
-
module Rack
|
4
|
-
class Environmental
|
5
|
-
|
6
|
-
def initialize(app, options = {})
|
7
|
-
@app = app
|
8
|
-
@options = options
|
9
|
-
end
|
10
|
-
|
11
|
-
def call(env)
|
12
|
-
@request = Rack::Request.new(env)
|
13
|
-
status, @headers, @body = @app.call(env)
|
14
|
-
if html?
|
15
|
-
@body = add_to_top_of_web_page(create_sticker)
|
16
|
-
update_content_length
|
17
|
-
end
|
18
|
-
[status, @headers, @body]
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def html?
|
24
|
-
@headers["Content-Type"] && @headers["Content-Type"].include?("text/html")
|
25
|
-
end
|
26
|
-
|
27
|
-
def add_to_top_of_web_page(node)
|
28
|
-
if node
|
29
|
-
doc.at_css("body").children.first.add_previous_sibling(node)
|
30
|
-
end
|
31
|
-
doc.to_html
|
32
|
-
end
|
33
|
-
|
34
|
-
def create_sticker
|
35
|
-
environment_name = environment(@request.url)
|
36
|
-
return nil if environment_name.nil?
|
37
|
-
div = Nokogiri::XML::Node.new("div", doc)
|
38
|
-
div['style'] = style(@options[environment_name])
|
39
|
-
div.content = environment_name.to_s
|
40
|
-
div
|
41
|
-
end
|
42
|
-
|
43
|
-
def environment(url)
|
44
|
-
url = url.split('//').last # remove http://
|
45
|
-
@options.each do |environment_name, options|
|
46
|
-
if options[:url] && options[:url] =~ url
|
47
|
-
return environment_name
|
48
|
-
end
|
49
|
-
end
|
50
|
-
return nil
|
51
|
-
end
|
52
|
-
|
53
|
-
def doc
|
54
|
-
@doc ||= Nokogiri::HTML(body_to_string)
|
55
|
-
end
|
56
|
-
|
57
|
-
def body_to_string
|
58
|
-
s = ""
|
59
|
-
@body.each { |x| s << x }
|
60
|
-
s
|
61
|
-
end
|
62
|
-
|
63
|
-
def style(options)
|
64
|
-
style = ""
|
65
|
-
style << "font-family: Verdana, Arial, sans-serif;"
|
66
|
-
style << "font-weight: bold;"
|
67
|
-
style << "text-transform: uppercase;"
|
68
|
-
style << "text-align: center;"
|
69
|
-
style << "color: black;"
|
70
|
-
style << "padding: 3px;"
|
71
|
-
style << "background-color: #{options[:color] || "blue"};"
|
72
|
-
case options[:size]
|
73
|
-
when :large
|
74
|
-
style << "font-size: 20px;"
|
75
|
-
when :medium
|
76
|
-
style << "font-size: 14px;"
|
77
|
-
when :small
|
78
|
-
style << "font-size: 10px;"
|
79
|
-
else
|
80
|
-
style << "font-size: 14px;"
|
81
|
-
end
|
82
|
-
if options[:style] == :badge
|
83
|
-
style << "margin: 5px;"
|
84
|
-
style << "position: fixed;"
|
85
|
-
style << "top: #{options[:top] || 5}px;"
|
86
|
-
style << "left: #{options[:left] || 5}px;"
|
87
|
-
style << "opacity: #{options[:opacity] || 0.7};"
|
88
|
-
style << "-moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;"
|
89
|
-
else
|
90
|
-
style << "margin: 0px;"
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def update_content_length
|
95
|
-
@headers['Content-Length'] = Rack::Utils.bytesize(@body).to_s
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
end
|