rack-robotz 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.
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: []