m2config 0.5.4 → 0.7.0
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.
- checksums.yaml +4 -4
- data/README.md +9 -5
- data/lib/m2config.rb +2 -3
- data/lib/m2config/mimetype.rb +17 -10
- data/lib/m2config/mongrel2.mime.yml +2 -1
- data/lib/m2config/version.rb +1 -1
- data/m2config.gemspec +1 -1
- data/spec/env.rb +1 -1
- data/spec/mimetype_spec.rb +21 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7628a64cb9b551df57316cd9506e4a27c0711d21
|
4
|
+
data.tar.gz: bb8bc8ed05f08fa132f370e9469fd58734c4e480
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d8b93c438183dd08ff388de1dc7716aae67a0403b5e84216330a331fa44e3031e4d9aa85503994ffa602eaf549c43ab88d68c17e62f6aa8787a8dc12253bd69
|
7
|
+
data.tar.gz: 66751355ffd58029e51cd2eccbdd65f504d4cd8df36ffab3b55a1b019bf45cb23765f388eee19e1e1d4b342c363594256ab9a02b3f32857250f10c411cd0d8d7
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
CAVEAT EMPTOR
|
2
2
|
-------------
|
3
3
|
|
4
|
-
THIS LIB IS
|
4
|
+
THIS LIB IS STILL YOUNG. ALTHOUGH IT SEEMS TO WORK SO FAR, I AM JUST
|
5
5
|
STARTING TO USE IT IN THE FIELD SO EVEN THOUGH THE SPECS PASS IT MAY
|
6
6
|
BREAK STUFF.
|
7
7
|
|
@@ -10,7 +10,7 @@ M2config
|
|
10
10
|
========
|
11
11
|
[](https://travis-ci.org/ameuret/m2config)
|
12
12
|
[](https://codeclimate.com/github/ameuret/m2config)
|
13
|
-
|
13
|
+
[](http://badge.fury.io/rb/m2config)
|
14
14
|
Manage your Mongrel2 configuration database using handy model classes
|
15
15
|
that map Servers, Hosts, Routes, Directories, Proxies, Handlers and Settings.
|
16
16
|
|
@@ -40,8 +40,8 @@ require "m2config"
|
|
40
40
|
|
41
41
|
cfg = M2Config::Config.new
|
42
42
|
server = M2Config::Server.new
|
43
|
-
exComHost = M2Config::Host.new({matching:"example.com"})
|
44
|
-
pubDir = M2Config::Dir.new({base:"
|
43
|
+
exComHost = M2Config::Host.new({name: "ex", matching:"example.com"})
|
44
|
+
pubDir = M2Config::Dir.new({base:"public"})
|
45
45
|
pubRoute = M2Config::Route.new({path:"/", target:pubDir})
|
46
46
|
|
47
47
|
exComHost.add_route pubRoute
|
@@ -54,7 +54,7 @@ for duplicates. This has the benefit of complete flexibility and
|
|
54
54
|
control but *you* must ensure that the DB ends up looking the way you
|
55
55
|
want.
|
56
56
|
|
57
|
-
You can swiftly dump your config using:
|
57
|
+
You can swiftly dump your config using this at the end of your script:
|
58
58
|
|
59
59
|
```ruby
|
60
60
|
require "pp"
|
@@ -67,6 +67,10 @@ pp Route.all
|
|
67
67
|
|
68
68
|
```
|
69
69
|
|
70
|
+
#### Default values
|
71
|
+
|
72
|
+
TODO
|
73
|
+
|
70
74
|
### This is Sequel
|
71
75
|
|
72
76
|
The classes mapping the configuration are
|
data/lib/m2config.rb
CHANGED
@@ -23,12 +23,11 @@ module M2Config
|
|
23
23
|
@@foundTables
|
24
24
|
end
|
25
25
|
|
26
|
-
def initialize(
|
26
|
+
def initialize(fileName = DEFAULT_CONFIG, options={})
|
27
27
|
@fileName = fileName
|
28
28
|
creating = ! (File.exists? @fileName)
|
29
29
|
@db = Sequel.connect "sqlite://#{@fileName}"
|
30
30
|
|
31
|
-
|
32
31
|
@db.run SCHEMA if creating
|
33
32
|
|
34
33
|
Sequel::Model.db = @db
|
@@ -42,7 +41,7 @@ module M2Config
|
|
42
41
|
require "m2config/setting"
|
43
42
|
require "m2config/mimetype"
|
44
43
|
|
45
|
-
M2Config::MimeType.populate_table if creating
|
44
|
+
M2Config::MimeType.populate_table(nil,options[:ignoreDoubles]) if creating
|
46
45
|
end
|
47
46
|
|
48
47
|
def add_server( settings = {} )
|
data/lib/m2config/mimetype.rb
CHANGED
@@ -13,12 +13,13 @@ module M2Config
|
|
13
13
|
having count(*)>1
|
14
14
|
SQL
|
15
15
|
|
16
|
-
def self.populate_table
|
16
|
+
def self.populate_table(types=nil, ignoreDoubles=false)
|
17
17
|
raise RuntimeError, "Table must be empty" if db[:mimetype].count > 0
|
18
|
-
|
19
|
-
|
18
|
+
types ||= MIME::Types
|
19
|
+
rows = [] # Will collect ext<->type rows
|
20
|
+
types.each {
|
20
21
|
|type|
|
21
|
-
next if not_dominant(type)
|
22
|
+
next if not_dominant?(type)
|
22
23
|
type.extensions.each {
|
23
24
|
|ext|
|
24
25
|
ext = "."+ext
|
@@ -30,18 +31,24 @@ module M2Config
|
|
30
31
|
db.transaction {
|
31
32
|
db[:mimetype].import([:mimetype, :extension], rows)
|
32
33
|
}
|
33
|
-
remove_duplicates
|
34
|
+
remove_duplicates unless ignoreDoubles
|
34
35
|
end
|
35
36
|
|
36
|
-
|
37
|
-
|
37
|
+
# Is it reasonable to ignore this type ?
|
38
|
+
def self.not_dominant?(mtype)
|
39
|
+
mtype.obsolete? || superceded?(mtype) || !simplest?(mtype)
|
38
40
|
end
|
39
41
|
|
40
|
-
def self.superceded?(
|
42
|
+
def self.superceded?(mtype)
|
41
43
|
mtype.docs =~ /instead/
|
42
44
|
end
|
45
|
+
|
46
|
+
def self.simplest?(mtype)
|
47
|
+
mtype.content_type == mtype.simplified
|
48
|
+
end
|
43
49
|
|
44
50
|
def self.remove_duplicates
|
51
|
+
randomChoices = []
|
45
52
|
db[SQL_FIND_DUPLICATES].all.each {
|
46
53
|
|r|
|
47
54
|
ext = r[:extension]
|
@@ -50,14 +57,14 @@ module M2Config
|
|
50
57
|
db[:mimetype].where(extension:ext).delete
|
51
58
|
db[:mimetype].insert(extension:ext, mimetype:preferred)
|
52
59
|
else
|
53
|
-
raise ArgumentError, "#{ext} has multiple content types but no Mongrel2 preference"
|
60
|
+
raise ArgumentError, "#{ext} (#{r[:mimetype]}) has multiple content types but no Mongrel2 preference"
|
54
61
|
end
|
55
62
|
}
|
56
63
|
raise RuntimeError, "Still duplicates after removing duplicates!" if
|
57
64
|
db[SQL_FIND_DUPLICATES].all.size > 0
|
58
65
|
end
|
59
66
|
|
60
|
-
def initialize(
|
67
|
+
def initialize(fields)
|
61
68
|
raise ArgumentError, "Extension must start with a ." unless fields[:extension] =~ /^\./
|
62
69
|
type = M2Config::MimeType[extension:fields[:extension]]
|
63
70
|
raise ArgumentError, "extension #{fields[:extension]} is already covered by #{type.mimetype} type" if type
|
data/lib/m2config/version.rb
CHANGED
data/m2config.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_dependency "sqlite3"
|
21
21
|
spec.add_dependency "sequel", '~> 3'
|
22
22
|
spec.add_dependency "uuid"
|
23
|
-
spec.add_dependency "mime-types"
|
23
|
+
spec.add_dependency "mime-types", '2.4.3'
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
26
|
spec.add_development_dependency "rake"
|
data/spec/env.rb
CHANGED
@@ -11,7 +11,7 @@ EXISTING_DB_NAME = "empty.sqlite"
|
|
11
11
|
|
12
12
|
RSpec.configure do |config|
|
13
13
|
File.delete DEFAULT_DB_NAME rescue nil
|
14
|
-
CFG = M2Config::Config.new
|
14
|
+
CFG = M2Config::Config.new(DEFAULT_DB_NAME,{ignoreDoubles:true})
|
15
15
|
config.around(:each) do |example|
|
16
16
|
CFG.db.transaction do
|
17
17
|
example.call
|
data/spec/mimetype_spec.rb
CHANGED
@@ -21,13 +21,32 @@ describe M2Config::MimeType do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
describe '::populate_table' do
|
24
|
-
it 'fills up the extension
|
24
|
+
it 'fills up the "extension -> MIME type" mapping table (using the list from https://github.com/halostatue/mime-types)' do
|
25
25
|
# Clear entire table
|
26
26
|
CFG.db[:mimetype].delete
|
27
|
-
M2Config::MimeType.populate_table
|
27
|
+
M2Config::MimeType.populate_table()
|
28
|
+
# M2Config::MimeType.populate_table(nil,ignoreDoubles=true)
|
28
29
|
M2Config::MimeType[extension:'.css'].mimetype.should eq('text/css')
|
29
30
|
end
|
30
31
|
|
32
|
+
it 'checks for doubles unless asked not to' do
|
33
|
+
CFG.db[:mimetype].delete
|
34
|
+
expect {
|
35
|
+
M2Config::MimeType.populate_table([
|
36
|
+
MIME::Type.new(['text/plain', 'zed']),
|
37
|
+
MIME::Type.new(['text/complex', 'zed'])
|
38
|
+
])
|
39
|
+
}.to raise_exception(ArgumentError,
|
40
|
+
/\.zed \(text\/complex\) has multiple content types but no Mongrel2 preference/i)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'accepts an array of MIME::Types if the whole list is too much' do
|
44
|
+
CFG.db[:mimetype].delete
|
45
|
+
M2Config::MimeType.populate_table [MIME::Type.new(['text/plain', 'zed'])]
|
46
|
+
M2Config::MimeType[extension:'.zed'].mimetype.should eq('text/plain')
|
47
|
+
M2Config::MimeType[extension:'.css'].should eq(nil)
|
48
|
+
end
|
49
|
+
|
31
50
|
it 'frowns when asked to populate a non-empty table' do
|
32
51
|
# At this point the table has been filled up on creation
|
33
52
|
expect {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m2config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arnaud Meuret
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sqlite3
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: mime-types
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - '
|
59
|
+
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.4.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - '
|
66
|
+
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.4.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|