useless 0.0.6 → 0.0.7

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/lib/useless.rb ADDED
@@ -0,0 +1,4 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+
3
+ module Useless
4
+ end
data/lib/useless/fs.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'mongo'
2
+
3
+ module Useless
4
+ # Useless::FS is a minimal wrapper around Mongo::Grid.
5
+ class FS
6
+
7
+ def self.for_env(env = nil)
8
+ mongo = Useless::Mongo.for_env(env)
9
+ self.new(mongo)
10
+ end
11
+
12
+ def initialize(mongo)
13
+ @mongo = mongo
14
+ end
15
+
16
+ def put(file, opts = {})
17
+ @mongo.grid.put(file, opts)
18
+ end
19
+
20
+ class FileNotFound < StandardError; end
21
+
22
+ def get(id)
23
+ @mongo.grid.get(id)
24
+
25
+ # To preserve the abstraction, raise our own exception when a file isn't
26
+ # found
27
+ rescue ::Mongo::GridFileNotFound => e
28
+ raise FileNotFound, e.message
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,48 @@
1
+ require 'logger'
2
+
3
+ module Useless
4
+ # Useless::Logger is a wrapper around Logger for the purposes of decorating.
5
+ class Logger
6
+ attr_accessor :request_id
7
+
8
+ def initialize(io = $stdout)
9
+ @logger = ::Logger.new(io)
10
+ end
11
+
12
+ def level=(level)
13
+ @logger.level = level
14
+ end
15
+
16
+ def level
17
+ @logger.level
18
+ end
19
+
20
+ def fatal(message)
21
+ add ::Logger::FATAL, message
22
+ end
23
+
24
+ def error(message)
25
+ add ::Logger::ERROR, message
26
+ end
27
+
28
+ def warn(message)
29
+ add ::Logger::WARN, message
30
+ end
31
+
32
+ def info(message)
33
+ add ::Logger::INFO, message
34
+ end
35
+
36
+ def debug(message)
37
+ add ::Logger::DEBUG, message
38
+ end
39
+
40
+ private
41
+
42
+ def add(level, message)
43
+ formatted_message = message
44
+ formatted_message = "[#{@request_id}] #{formatted_message}" if @request_id
45
+ @logger.add level, formatted_message
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ require 'low/mongo'
2
+
3
+ module Useless
4
+ module Mongo
5
+ # Returns an instance of the appropriate `Low::Mongo` helper class based upon the
6
+ # `RACK_ENV` environment variable (or the `env` parameter, if specified).
7
+ def self.for_env(env = nil)
8
+ case (env || ENV['RACK_ENV'])
9
+ when 'test' then Low::Mongo::Local.new 'useless_test'
10
+ when 'production' then Low::Mongo::Remote.new ENV['MONGOLAB_URI']
11
+ else Low::Mongo::Local.new 'useless_development'
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/useless/rack.rb CHANGED
@@ -1,5 +1,3 @@
1
- $:.push File.expand_path('../lib', __FILE__)
2
-
3
1
  require 'low/rack/log_level'
4
2
  require 'low/rack/rack_errors'
5
3
  require 'low/rack/request_id'
@@ -7,27 +5,17 @@ require 'low/rack/request_logger'
7
5
  require 'low/rack/subdomain_map'
8
6
  require 'low/scoped_logger'
9
7
 
8
+ require 'useless/rack/middleware/exceptions'
9
+ require 'useless/rack/middleware/assets'
10
+ require 'useless/rack/middleware/mongo'
11
+ require 'useless/rack/middleware/fs'
12
+ require 'useless/rack/middleware/doc'
13
+ require 'useless/rack/middleware/authentication/query_string'
14
+ require 'useless/rack/middleware/authentication/request_header'
15
+ require 'useless/rack/base'
16
+
10
17
  module Useless
11
18
  class Rack
12
- autoload :Base, 'useless/rack/base'
13
- autoload :Doc, 'useless/rack/doc'
14
- autoload :FS, 'useless/rack/fs'
15
- autoload :Logger, 'useless/rack/logger'
16
- autoload :Mongo, 'useless/rack/mongo'
17
-
18
- module Middleware
19
- autoload :Assets, 'useless/rack/middleware/assets'
20
- autoload :Doc, 'useless/rack/middleware/doc'
21
- autoload :Exceptions, 'useless/rack/middleware/exceptions'
22
- autoload :FS, 'useless/rack/middleware/fs'
23
- autoload :Mongo, 'useless/rack/middleware/mongo'
24
-
25
- module Authentication
26
- autoload :AccessToken, 'useless/rack/middleware/authentication/access_token'
27
- autoload :QueryString, 'useless/rack/middleware/authentication/query_string'
28
- autoload :RequestHeader, 'useless/rack/middleware/authentication/request_header'
29
- end
30
- end
31
19
 
32
20
  def self.mongo
33
21
  @mongo ||= Mongo.for_env
@@ -65,5 +53,6 @@ module Useless
65
53
  run Low::Rack::SubdomainMap.new(Base.new, @map)
66
54
  end.call(env)
67
55
  end
56
+
68
57
  end
69
58
  end
@@ -1,3 +1,5 @@
1
+ require 'useless/fs'
2
+
1
3
  module Useless
2
4
  class Rack
3
5
  class Base
@@ -22,7 +24,7 @@ module Useless
22
24
  # Two things can go wrong, and they'll both raise an error:
23
25
  # * the specified ID is not a valid object ID
24
26
  # * there is no file corresponding to the ID in the FS
25
- rescue BSON::InvalidObjectId, Useless::Rack::FS::FileNotFound
27
+ rescue BSON::InvalidObjectId, Useless::FS::FileNotFound
26
28
  [404, {'Content-Type' => 'text/plain'}, "File not found: #{id}"]
27
29
  end
28
30
  end
@@ -1,3 +1,5 @@
1
+ require 'useless/rack/middleware/authentication/access_token'
2
+
1
3
  module Useless
2
4
  class Rack
3
5
  module Middleware
@@ -1,3 +1,5 @@
1
+ require 'useless/rack/middleware/authentication/access_token'
2
+
1
3
  module Useless
2
4
  class Rack
3
5
  module Middleware
@@ -1,3 +1,5 @@
1
+ require 'useless/rack/doc'
2
+
1
3
  module Useless
2
4
  class Rack
3
5
  module Middleware
@@ -1,3 +1,3 @@
1
1
  module Useless
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -1,12 +1,14 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'useless/fs'
2
3
 
3
- describe Useless::Rack::FS do
4
+ describe Useless::FS do
4
5
  it 'should allow for files to be added and retrieved via .put and .get' do
5
6
  original_file = File.open(asset_path('muffin-milk.jpg'))
6
- original_file_id = Useless::Rack.fs.put(original_file)
7
- stored_file = Useless::Rack.fs.get(original_file_id)
7
+ fs = Useless::FS.for_env('test')
8
+ original_file_id = fs.put(original_file)
9
+ stored_file = fs.get(original_file_id)
8
10
 
9
- # Useless::Rack::FS stores the file as an un-encoded binary blob, so in order to
11
+ # Useless::FS stores the file as an un-encoded binary blob, so in order to
10
12
  # compare, we must strip the encoding, i.e. force a binary encoding.
11
13
  original_file.rewind
12
14
  original_blob = original_file.read
@@ -16,7 +18,7 @@ describe Useless::Rack::FS do
16
18
 
17
19
  describe '.get' do
18
20
  it 'should raise Useless::FS::FileNotFound if the specified ID doesn\'t exist' do
19
- -> { Useless::Rack.fs.get('nonexistant') }.should raise_error(Useless::Rack::FS::FileNotFound)
21
+ -> { Useless::FS.for_env('test').get('nonexistant') }.should raise_error(Useless::FS::FileNotFound)
20
22
  end
21
23
  end
22
24
  end
@@ -1,10 +1,11 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'useless/logger'
2
3
 
3
- describe Useless::Rack::Logger do
4
+ describe Useless::Logger do
4
5
  describe '#fatal' do
5
6
  it 'should emit a fatal message' do
6
7
  io = StringIO.new
7
- logger = Useless::Rack::Logger.new(io)
8
+ logger = Useless::Logger.new(io)
8
9
  logger.fatal 'Oh noes!'
9
10
 
10
11
  io.rewind; message = io.read
@@ -16,7 +17,7 @@ describe Useless::Rack::Logger do
16
17
  describe '#error' do
17
18
  it 'should emit an error message' do
18
19
  io = StringIO.new
19
- logger = Useless::Rack::Logger.new(io)
20
+ logger = Useless::Logger.new(io)
20
21
  logger.error 'Wrong!'
21
22
 
22
23
  io.rewind; message = io.read
@@ -28,7 +29,7 @@ describe Useless::Rack::Logger do
28
29
  describe '#warn' do
29
30
  it 'should emit a warn message' do
30
31
  io = StringIO.new
31
- logger = Useless::Rack::Logger.new(io)
32
+ logger = Useless::Logger.new(io)
32
33
  logger.warn 'Watchout!'
33
34
 
34
35
  io.rewind; message = io.read
@@ -40,7 +41,7 @@ describe Useless::Rack::Logger do
40
41
  describe '#info' do
41
42
  it 'should emit an info message' do
42
43
  io = StringIO.new
43
- logger = Useless::Rack::Logger.new(io)
44
+ logger = Useless::Logger.new(io)
44
45
  logger.info 'Such and such'
45
46
 
46
47
  io.rewind; message = io.read
@@ -52,7 +53,7 @@ describe Useless::Rack::Logger do
52
53
  describe '#debug' do
53
54
  it 'should emit a debug message' do
54
55
  io = StringIO.new
55
- logger = Useless::Rack::Logger.new(io)
56
+ logger = Useless::Logger.new(io)
56
57
  logger.debug '101011'
57
58
 
58
59
  io.rewind; message = io.read
@@ -62,7 +63,7 @@ describe Useless::Rack::Logger do
62
63
 
63
64
  it 'should emit nothing if the level is too high' do
64
65
  io = StringIO.new
65
- logger = Useless::Rack::Logger.new(io)
66
+ logger = Useless::Logger.new(io)
66
67
  logger.level = ::Logger::INFO
67
68
  logger.debug '101011'
68
69
 
@@ -74,7 +75,7 @@ describe Useless::Rack::Logger do
74
75
  describe '#request_id' do
75
76
  it 'should append the specified ID to all messages' do
76
77
  io = StringIO.new
77
- logger = Useless::Rack::Logger.new(io)
78
+ logger = Useless::Logger.new(io)
78
79
  logger.request_id = 'abc123'
79
80
  logger.info 'Yadda'
80
81
 
@@ -1,9 +1,10 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'useless/mongo'
2
3
 
3
- describe Useless::Rack::Mongo do
4
+ describe Useless::Mongo do
4
5
  describe '.for_env' do
5
6
  it 'should return a instance for \'useless_development\' if \'development\' is specified' do
6
- mongo = Useless::Rack::Mongo.for_env('development')
7
+ mongo = Useless::Mongo.for_env('development')
7
8
  mongo.database.should == 'useless_development'
8
9
  end
9
10
 
@@ -11,7 +12,7 @@ describe Useless::Rack::Mongo do
11
12
  original_rack_env = ENV['RACK_ENV']
12
13
  begin
13
14
  ENV['RACK_ENV'] = 'development'
14
- mongo = Useless::Rack::Mongo.for_env
15
+ mongo = Useless::Mongo.for_env
15
16
  mongo.database.should == 'useless_development'
16
17
  ensure
17
18
  ENV['RACK_ENV'] = original_rack_env
@@ -19,7 +20,7 @@ describe Useless::Rack::Mongo do
19
20
  end
20
21
 
21
22
  it 'should return a instance for \'useless_test\' if \'test\' is specified' do
22
- mongo = Useless::Rack::Mongo.for_env('test')
23
+ mongo = Useless::Mongo.for_env('test')
23
24
  mongo.database.should == 'useless_test'
24
25
  end
25
26
 
@@ -27,7 +28,7 @@ describe Useless::Rack::Mongo do
27
28
  original_rack_env = ENV['RACK_ENV']
28
29
  begin
29
30
  ENV['RACK_ENV'] = 'test'
30
- mongo = Useless::Rack::Mongo.for_env
31
+ mongo = Useless::Mongo.for_env
31
32
  mongo.database.should == 'useless_test'
32
33
  ensure
33
34
  ENV['RACK_ENV'] = original_rack_env
@@ -38,7 +39,7 @@ describe Useless::Rack::Mongo do
38
39
  original_mongolab_uri = ENV['MONGOLAB_URI']
39
40
  begin
40
41
  ENV['MONGOLAB_URI'] = 'mongodb://mongo.com'
41
- mongo = Useless::Rack::Mongo.for_env('production')
42
+ mongo = Useless::Mongo.for_env('production')
42
43
  mongo.uri.should == 'mongodb://mongo.com'
43
44
  ensure
44
45
  ENV['MONGOLAB_URI'] = original_mongolab_uri
@@ -51,7 +52,7 @@ describe Useless::Rack::Mongo do
51
52
  begin
52
53
  ENV['RACK_ENV'] = 'production'
53
54
  ENV['MONGOLAB_URI'] = 'mongodb://mongo.com'
54
- mongo = Useless::Rack::Mongo.for_env
55
+ mongo = Useless::Mongo.for_env
55
56
  mongo.uri.should == 'mongodb://mongo.com'
56
57
  ensure
57
58
  ENV['RACK_ENV'] = original_rack_env
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'useless/rack/base/files'
2
3
 
3
4
  describe 'useless.io/files' do
4
5
  include Rack::Test::Methods
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ require 'useless/rack/middleware/authentication/query_string'
2
3
 
3
4
  describe Useless::Rack::Middleware::Authentication::QueryString do
4
5
  def authenticated_app
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ require 'useless/rack/middleware/authentication/request_header'
2
3
 
3
4
  describe Useless::Rack::Middleware::Authentication::RequestHeader do
4
5
  def authenticated_app
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'useless/rack/middleware/exceptions'
2
3
 
3
4
  describe Useless::Rack::Middleware::Exceptions do
4
5
  it 'should proxy transparently if nothing goes wrong in the main app' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: useless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -136,13 +136,15 @@ files:
136
136
  - README.md
137
137
  - Rakefile
138
138
  - assets/application.css
139
+ - lib/useless.rb
140
+ - lib/useless/fs.rb
141
+ - lib/useless/logger.rb
142
+ - lib/useless/mongo.rb
139
143
  - lib/useless/rack.rb
140
144
  - lib/useless/rack/base.rb
141
145
  - lib/useless/rack/base/doc.rb
142
146
  - lib/useless/rack/base/files.rb
143
147
  - lib/useless/rack/doc.rb
144
- - lib/useless/rack/fs.rb
145
- - lib/useless/rack/logger.rb
146
148
  - lib/useless/rack/middleware/assets.rb
147
149
  - lib/useless/rack/middleware/authentication/access_token.rb
148
150
  - lib/useless/rack/middleware/authentication/query_string.rb
@@ -151,17 +153,16 @@ files:
151
153
  - lib/useless/rack/middleware/exceptions.rb
152
154
  - lib/useless/rack/middleware/fs.rb
153
155
  - lib/useless/rack/middleware/mongo.rb
154
- - lib/useless/rack/mongo.rb
155
156
  - lib/useless/version.rb
156
157
  - spec/spec_helper.rb
157
158
  - spec/support/assets/muffin-milk.jpg
159
+ - spec/useless/fs_spec.rb
160
+ - spec/useless/logger_spec.rb
161
+ - spec/useless/mongo_spec.rb
158
162
  - spec/useless/rack/base/files_spec.rb
159
- - spec/useless/rack/fs_spec.rb
160
- - spec/useless/rack/logger_spec.rb
161
163
  - spec/useless/rack/middleware/authentication/query_string_spec.rb
162
164
  - spec/useless/rack/middleware/authentication/request_header_spec.rb
163
165
  - spec/useless/rack/middleware/exceptions_spec.rb
164
- - spec/useless/rack/mongo_spec.rb
165
166
  - useless.gemspec
166
167
  homepage: https://github.com/khy/useless.rb
167
168
  licenses: []
@@ -190,10 +191,10 @@ summary: The useless.io Ruby library.
190
191
  test_files:
191
192
  - spec/spec_helper.rb
192
193
  - spec/support/assets/muffin-milk.jpg
194
+ - spec/useless/fs_spec.rb
195
+ - spec/useless/logger_spec.rb
196
+ - spec/useless/mongo_spec.rb
193
197
  - spec/useless/rack/base/files_spec.rb
194
- - spec/useless/rack/fs_spec.rb
195
- - spec/useless/rack/logger_spec.rb
196
198
  - spec/useless/rack/middleware/authentication/query_string_spec.rb
197
199
  - spec/useless/rack/middleware/authentication/request_header_spec.rb
198
200
  - spec/useless/rack/middleware/exceptions_spec.rb
199
- - spec/useless/rack/mongo_spec.rb
@@ -1,25 +0,0 @@
1
- module Useless
2
- class Rack
3
- # Useless::FS is a minimal wrapper around Mongo::Grid.
4
- class FS
5
- class FileNotFound < StandardError; end
6
-
7
- def initialize(mongo)
8
- @mongo = mongo
9
- end
10
-
11
- def put(file, opts = {})
12
- @mongo.grid.put(file, opts)
13
- end
14
-
15
- def get(id)
16
- @mongo.grid.get(id)
17
-
18
- # To preserve the abstraction, raise our own exception when a file isn't
19
- # found
20
- rescue ::Mongo::GridFileNotFound => e
21
- raise FileNotFound, e.message
22
- end
23
- end
24
- end
25
- end
@@ -1,50 +0,0 @@
1
- require 'logger'
2
-
3
- module Useless
4
- class Rack
5
- # Useless::Logger is a wrapper around Logger for the purposes of decorating.
6
- class Logger
7
- attr_accessor :request_id
8
-
9
- def initialize(io = $stdout)
10
- @logger = ::Logger.new(io)
11
- end
12
-
13
- def level=(level)
14
- @logger.level = level
15
- end
16
-
17
- def level
18
- @logger.level
19
- end
20
-
21
- def fatal(message)
22
- add ::Logger::FATAL, message
23
- end
24
-
25
- def error(message)
26
- add ::Logger::ERROR, message
27
- end
28
-
29
- def warn(message)
30
- add ::Logger::WARN, message
31
- end
32
-
33
- def info(message)
34
- add ::Logger::INFO, message
35
- end
36
-
37
- def debug(message)
38
- add ::Logger::DEBUG, message
39
- end
40
-
41
- private
42
-
43
- def add(level, message)
44
- formatted_message = message
45
- formatted_message = "[#{@request_id}] #{formatted_message}" if @request_id
46
- @logger.add level, formatted_message
47
- end
48
- end
49
- end
50
- end
@@ -1,17 +0,0 @@
1
- require 'low/mongo'
2
-
3
- module Useless
4
- class Rack
5
- module Mongo
6
- # Returns an instance of the appropriate `Low::Mongo` helper class based upon the
7
- # `RACK_ENV` environment variable (or the `env` parameter, if specified).
8
- def self.for_env(env = nil)
9
- case (env || ENV['RACK_ENV'])
10
- when 'test' then Low::Mongo::Local.new 'useless_test'
11
- when 'production' then Low::Mongo::Remote.new ENV['MONGOLAB_URI']
12
- else Low::Mongo::Local.new 'useless_development'
13
- end
14
- end
15
- end
16
- end
17
- end