rack-robotz 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile ADDED
@@ -0,0 +1,9 @@
1
+ # rack-robotz
2
+
3
+ [![Build Status](https://travis-ci.org/pietia/rack-robotz.png?branch=master)](https://travis-ci.org/pietia/rack-robotz)
4
+
5
+ [![Code Climate](https://codeclimate.com/github/pietia/rack-robotz.png)](https://codeclimate.com/github/pietia/rack-robotz)
6
+
7
+ * Rack application to serve a robots.txt file dynamically.
8
+ * set `DISABLE_ROBOTS=true` to enable middleware
9
+ * sample usage: `use Rack::Robotz, "User-Agent" => "*", "Disallow" => "/"`
@@ -0,0 +1,3 @@
1
+ require 'rack'
2
+
3
+ require File.expand_path("robotz/middleware", File.dirname(__FILE__))
@@ -0,0 +1,27 @@
1
+ module Rack
2
+
3
+ class Robotz
4
+
5
+ VERSION = '0.0.2'
6
+
7
+ def initialize(app, items = {"User-Agent" => "*", "Disallow" => "/"})
8
+ @app = app
9
+ @items = items
10
+ @is_enabled = %w{1 true yes}.include?(ENV["DISABLE_ROBOTS"])
11
+ end
12
+
13
+ def to_s
14
+ @items.map { |key, value| "#{key}: #{value}" }.join("\n")
15
+ end
16
+
17
+ def call(env)
18
+ if @is_enabled && env['PATH_INFO'] == '/robots.txt'
19
+ [200, { 'Content-Type' => 'text/plain' }, [to_s]]
20
+ else
21
+ @app.call(env)
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,5 @@
1
+ class TestApp
2
+ def self.call(env)
3
+ [200, {}, "meow!"]
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler/setup'
2
+ require 'minitest/autorun'
3
+ require 'minitest/pride'
4
+ require 'minitest/spec'
5
+ require 'rack/test'
6
+
7
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
8
+ $LOAD_PATH.unshift File.dirname(File.dirname(__FILE__)) + '/lib'
9
+
10
+ require 'rack/robotz'
11
+ require 'test_app'
@@ -0,0 +1,21 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class DefaultsTest < MiniTest::Unit::TestCase
4
+ include Rack::Test::Methods
5
+
6
+ def setup
7
+ ENV.delete 'DISABLE_ROBOTS'
8
+ end
9
+
10
+ def app
11
+ Rack::Robotz.new TestApp
12
+ end
13
+
14
+ def test_it_should_use_default_content
15
+ ENV['DISABLE_ROBOTS'] = 'true'
16
+ get "/robots.txt"
17
+ assert_equal last_response.status, 200
18
+ assert_equal last_response.body, "User-Agent: *\nDisallow: /"
19
+ end
20
+
21
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class MiddlewareTest < MiniTest::Unit::TestCase
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ Rack::Robotz.new TestApp, "User-Agent" => "*", "Disallow" => "/"
8
+ end
9
+
10
+ def setup
11
+ ENV.delete 'DISABLE_ROBOTS'
12
+ end
13
+
14
+ def test_should_generate_robots_txt_when_env_variable_set
15
+ ENV['DISABLE_ROBOTS'] = 'true'
16
+ get "/robots.txt"
17
+ assert_equal last_response.status, 200
18
+ assert_equal last_response.body, "User-Agent: *\nDisallow: /"
19
+ end
20
+
21
+ def test_should_not_generate_robots_txt_when_env_variable_set
22
+ get "/robots.txt"
23
+ assert_equal last_response.status, 200
24
+ assert_equal last_response.body, 'meow!'
25
+ end
26
+
27
+ def test_should_not_affect_other_urls
28
+ ENV['DISABLE_ROBOTS'] = 'true'
29
+ get "/"
30
+ assert_equal last_response.status, 200
31
+ assert_equal last_response.body, 'meow!'
32
+ end
33
+
34
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class VersionTest < MiniTest::Unit::TestCase
4
+
5
+ def test_version_should_not_be_nil
6
+ refute_nil Rack::Robotz::VERSION
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rack-robotz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - John Labovitz
9
+ - Piotr Gęga
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-04-25 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: gem-release
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: minitest
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rack-test
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ description: ! "\n Rack application to serve a robots.txt file dynamically. \n
96
+ \ "
97
+ email:
98
+ - johnl@johnlabovitz.com
99
+ - pietia@appgrinder.pl
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - lib/rack/robotz/middleware.rb
105
+ - lib/rack/robotz.rb
106
+ - test/lib/test_app.rb
107
+ - test/test_helper.rb
108
+ - test/unit/defaults_test.rb
109
+ - test/unit/middleware_test.rb
110
+ - test/unit/version_test.rb
111
+ - README.textile
112
+ homepage: http://github.com/pietia/rack-robotz
113
+ licenses: []
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ segments:
125
+ - 0
126
+ hash: 4364349245037134888
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ segments:
134
+ - 0
135
+ hash: 4364349245037134888
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 1.8.23
139
+ signing_key:
140
+ specification_version: 3
141
+ summary: Serve a robots.txt file dynamically.
142
+ test_files: []