m2config 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 30d8a9fa3eccc1534a6cbff481a910190e163332
4
- data.tar.gz: 31d5f71abafec20f678f4fb290e631b231ca475e
3
+ metadata.gz: 409e5df6b21362f88633bc922d489f2c17ec6a46
4
+ data.tar.gz: a97d5200c35196fac07995abc668330bfe8bf9f7
5
5
  SHA512:
6
- metadata.gz: c08369ceb3433048c01f1a49108711dcda9330516ec90753f7937072b404d020e39390dd9e507f87cf0eb5af26da109f6d2b5792ba74d20fb4af897777a6a797
7
- data.tar.gz: 3dd55d203a07f423ed59bde04b17929618559d32a9cb204303394b85452eb4b50c13be6f678115caaba695f7689308fcbf979710a1188fdf1694d85e976dd78d
6
+ metadata.gz: c916730148ca203090fb412222e5f7386bb8c65c51b6b91b63f8d0c9a6f134165d76fc3ee862ff2d0a1df961e9d380af56a638564d22c48ff8cbf208bd52f709
7
+ data.tar.gz: e79f22f6bb17f04321cf68de59bdb33e2c5def72ed632a34cdb59338190e4e87d875c9dc641066aa471725dc4d441c7113dcd8b1ddd50c5a0e2e25c79ba6db41
data/Gemfile CHANGED
@@ -7,5 +7,7 @@ group :dev do
7
7
  gem 'rb-inotify'
8
8
  gem 'rspec'
9
9
  gem 'guard-rspec'
10
- gem "libnotify"
10
+ gem 'libnotify'
11
+ gem 'pry'
12
+ gem 'pry-nav'
11
13
  end
data/lib/m2config/host.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module M2Config
2
2
  class Host < Sequel::Model(:host)
3
- one_to_many :routes
3
+ one_to_many :routes, {class: "M2Config::Route"}
4
4
 
5
5
  def initialize( fields )
6
6
  s = resolveServer fields
@@ -11,7 +11,13 @@ module M2Config
11
11
  end
12
12
 
13
13
  def check_routes
14
- paths = routes.map { |route| route[:path] }
14
+ paths = routes(true).map {
15
+ |route|
16
+ route.path
17
+ }
18
+ # return true if paths.empty?
19
+
20
+ # return "#{paths.uniq.to_s} == #{paths.to_s}"
15
21
  paths.uniq.size == paths.size
16
22
  end
17
23
 
@@ -9,7 +9,13 @@ module M2Config
9
9
  super(fields, false)
10
10
  save
11
11
  end
12
-
12
+
13
+ def self.elect!( route66 )
14
+ toMatch = {path: route66.path, host_id: route66.host_id}
15
+ toExclude = {id: route66.id}
16
+ Route.where(toMatch).exclude(toExclude).delete
17
+ end
18
+
13
19
  def host=( hostOrId )
14
20
  self.host_id = hostOrId.kind_of?(Host) ? hostOrId.id : hostOrId
15
21
  save
@@ -1,3 +1,3 @@
1
1
  module M2Config
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/m2config.rb CHANGED
@@ -7,6 +7,8 @@ module M2Config
7
7
 
8
8
  DEFAULT_CONFIG = "config.sqlite"
9
9
  SCHEMA = File.read("#{File.dirname __FILE__}/m2config/schema.sql")
10
+
11
+ attr_reader :db
10
12
 
11
13
  @@foundTables = []
12
14
 
@@ -28,20 +30,15 @@ module M2Config
28
30
 
29
31
  @db.run SCHEMA if creating
30
32
 
33
+ Sequel::Model.db = @db
34
+
31
35
  require "m2config/server"
32
- M2Config::Server.db = @db
33
36
  require "m2config/host"
34
- M2Config::Host.db = @db
35
37
  require "m2config/dir"
36
- M2Config::Dir.db = @db
37
38
  require "m2config/route"
38
- M2Config::Route.db = @db
39
39
  require "m2config/proxy"
40
- M2Config::Proxy.db = @db
41
40
  require "m2config/handler"
42
- M2Config::Handler.db = @db
43
41
  require "m2config/setting"
44
- M2Config::Setting.db = @db
45
42
  end
46
43
 
47
44
  def add_server( settings = {} )
data/spec/dir_spec.rb CHANGED
@@ -1,36 +1,21 @@
1
1
  require "env"
2
2
 
3
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
4
-
5
3
  describe M2Config::Dir do
6
- before(:each) do
7
- File.delete DEFAULT_DB_NAME rescue nil
8
- @cfg = M2Config::Config.new
9
- @db = SQLite3::Database.new DEFAULT_DB_NAME
10
- @db.results_as_hash = true
11
- end
12
-
13
- after(:each) do
14
- @db.close if @db && !@db.closed?
15
- end
16
4
 
17
5
  describe "::new" do
18
6
  it "needs to know the base path to handle" do
19
7
  M2Config::Dir.new({base:"images/"})
20
- res= @db.get_first_row("SELECT * FROM directory;")
21
- res["base"].should eq("images/")
8
+ CFG.db[:directory].first[:base].should eq("images/")
22
9
  end
23
10
 
24
11
  it "defaults to application/octet-stream for the default content type" do
25
12
  M2Config::Dir.new({base:"images/"})
26
- res= @db.get_first_row("SELECT * FROM directory;")
27
- res["default_ctype"].should eq("application/octet-stream")
13
+ CFG.db[:directory].first[:default_ctype].should eq("application/octet-stream")
28
14
  end
29
15
 
30
16
  it "defaults to index.html for the index file" do
31
17
  dir = M2Config::Dir.new({base:"/"})
32
- res= @db.get_first_row("SELECT * FROM directory;")
33
- res["index_file"].should eq("index.html")
18
+ CFG.db[:directory].first[:index_file].should eq("index.html")
34
19
  end
35
20
 
36
21
  describe "helps you spot common mistakes" do
data/spec/env.rb CHANGED
@@ -2,7 +2,20 @@ require "bundler/setup"
2
2
  require "m2config" # rspec automatically adds ./lib to LOAD_PATH
3
3
  require "sqlite3"
4
4
  require "pp"
5
+ require "pry"
6
+ require "pry-nav"
5
7
 
6
8
  DEFAULT_DB_NAME = "config.sqlite"
7
9
  CUSTOM_DB_NAME = "custom.sqlite"
8
10
  EXISTING_DB_NAME = "empty.sqlite"
11
+
12
+ RSpec.configure do |config|
13
+ File.delete DEFAULT_DB_NAME rescue nil
14
+ CFG = M2Config::Config.new
15
+ config.around(:each) do |example|
16
+ CFG.db.transaction do
17
+ example.call
18
+ raise Sequel::Error::Rollback
19
+ end
20
+ end
21
+ end
data/spec/handler_spec.rb CHANGED
@@ -1,37 +1,25 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require "env"
3
3
 
4
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
5
-
6
4
  describe M2Config::Handler do
7
- before(:each) do
8
- File.delete DEFAULT_DB_NAME rescue nil
9
- @cfg = M2Config::Config.new
10
- @db = SQLite3::Database.new DEFAULT_DB_NAME
11
- @db.results_as_hash = true
12
- end
13
-
14
- after(:each) do
15
- @db.close if @db && !@db.closed?
16
- end
17
5
 
18
6
  describe "::new" do
19
7
  it "needs the ØMQ addresses and a send identifier" do
20
8
  M2Config::Handler.new({ send_spec:"tcp://10.0.0.1:8989",
21
9
  recv_spec:"tcp://10.0.0.1:9898",
22
10
  send_ident: "dev.example.com ID"})
23
- res = @db.get_first_row("SELECT * FROM handler;")
24
- res["send_spec"].should eq("tcp://10.0.0.1:8989")
25
- res["recv_spec"].should eq("tcp://10.0.0.1:9898")
26
- res["send_ident"].should eq("dev.example.com ID")
11
+ res = CFG.db[:handler].first
12
+ res[:send_spec].should eq("tcp://10.0.0.1:8989")
13
+ res[:recv_spec].should eq("tcp://10.0.0.1:9898")
14
+ res[:send_ident].should eq("dev.example.com ID")
27
15
  end
28
16
 
29
17
  it "turns nil into empty string when recv_ident is not set" do
30
18
  M2Config::Handler.new({ send_spec:"tcp://10.0.0.1:8989",
31
19
  recv_spec:"tcp://10.0.0.1:9898",
32
20
  send_ident: "dev.example.com ID"})
33
- res = @db.get_first_row("SELECT * FROM handler;")
34
- res["recv_ident"].should be_empty
21
+ res = CFG.db[:handler].first
22
+ res[:recv_ident].should be_empty
35
23
  end
36
24
 
37
25
  describe "helps you spot common mistakes" do
data/spec/host_spec.rb CHANGED
@@ -1,39 +1,29 @@
1
1
  require "env"
2
2
 
3
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
4
-
5
3
  describe M2Config::Host do
6
4
  before(:each) do
7
- File.delete DEFAULT_DB_NAME rescue nil
8
- @cfg = M2Config::Config.new
9
- @db = SQLite3::Database.new DEFAULT_DB_NAME
10
- @db.results_as_hash = true
11
- @srv = @cfg.add_server
5
+ @srv = CFG.add_server
12
6
  end
13
-
14
- after(:each) do
15
- @db.close if @db && !@db.closed?
16
- end
17
-
7
+
18
8
  describe "::new" do
19
9
  it "needs to know the domain name served" do
20
10
  M2Config::Host.new({matching:"example.com", name: "ex"})
21
- res = @db.get_first_row("SELECT * FROM host;")
22
- res["matching"].should eq("example.com")
11
+ res = CFG.db[:host].first
12
+ res[:matching].should eq("example.com")
23
13
  end
24
14
 
25
15
  it "can use the uuid of a server" do
26
16
  host = M2Config::Host.new({matching:"example.com", name: "ex", srvUuid: @srv.uuid})
27
- res = @db.get_first_row("SELECT * FROM host WHERE id=?;", host.id)
28
- res["server_id"].should eq(@srv.id)
29
- res["matching"].should eq("example.com")
17
+ res = CFG.db[:host].where(id: host.id).first
18
+ res[:server_id].should eq(@srv.id)
19
+ res[:matching].should eq("example.com")
30
20
  end
31
21
 
32
22
  it "can use a server instance" do
33
23
  host = M2Config::Host.new({matching:"example.com", name: "ex", srv: @srv})
34
- res = @db.get_first_row("SELECT * FROM host WHERE id=?;", host.id)
35
- res["server_id"].should eq(@srv.id)
36
- res["matching"].should eq("example.com")
24
+ res = CFG.db[:host].where(id: host.id).first
25
+ res[:server_id].should eq(@srv.id)
26
+ res[:matching].should eq("example.com")
37
27
  end
38
28
 
39
29
  it "enforces mongrel2 constraint about nil name" do
@@ -49,8 +39,8 @@ describe M2Config::Host do
49
39
  dirH = M2Config::Dir.new({base: "static/"})
50
40
  dirR = M2Config::Route.new({path:"/blog", target: dirH})
51
41
  host.add_route dirR
52
- res = @db.get_first_row("SELECT * FROM route;")
53
- res["host_id"].should eq(host.id)
42
+ res = CFG.db[:route].first
43
+ res[:host_id].should eq(host.id)
54
44
  end
55
45
  end
56
46
 
@@ -59,10 +49,26 @@ describe M2Config::Host do
59
49
  host = M2Config::Host.new({matching:"example.com", name: "ex"})
60
50
  dir1 = M2Config::Dir.new({base: "static/"})
61
51
  dir2 = M2Config::Dir.new({base: "images/"})
62
- host.add_route M2Config::Route.new({path:"/blog", target: dir1})
63
- host.add_route M2Config::Route.new({path:"/blog", target: dir2})
52
+ host.add_route M2Config::Route.new({path:"/blog1", target: dir1})
53
+ host.add_route M2Config::Route.new({path:"/blog1", target: dir2})
64
54
  host.check_routes.should be_false
65
55
  end
56
+
57
+ it 'returns true if all routes have different paths' do
58
+ host = M2Config::Host.new({matching:"example2.com", name: "ex"})
59
+ dir1 = M2Config::Dir.new({base: "static/"})
60
+ dir2 = M2Config::Dir.new({base: "images/"})
61
+ r1 = M2Config::Route.new({path:"/blog3", target: dir1})
62
+ r2 = M2Config::Route.new({path:"/images", target: dir2})
63
+ host.add_route r1
64
+ host.add_route r2
65
+ host.check_routes.should be_true
66
+ end
67
+
68
+ it 'withstands the idea of not having any routes' do # , {focus: true}
69
+ host = M2Config::Host.new({matching:"example.com", name: "ex"})
70
+ host.check_routes.should be_true
71
+ end
66
72
  end
67
73
 
68
74
  end
@@ -1,18 +1,12 @@
1
1
  require "env"
2
2
 
3
3
  TABLES = %w(directory handler host log mimetype proxy route server setting statistic filter)
4
-
5
- File.delete EXISTING_DB_NAME rescue nil
6
- emptyDB = SQLite3::Database.new EXISTING_DB_NAME
7
-
4
+
8
5
  describe M2Config do
9
6
 
10
- before(:each) do
11
- File.delete DEFAULT_DB_NAME rescue nil
12
- File.delete CUSTOM_DB_NAME rescue nil
13
- @cfg = M2Config::Config.new
7
+ before(:all) do
14
8
  end
15
-
9
+
16
10
  after(:each) do
17
11
  @db.close if @db && !@db.closed?
18
12
  end
@@ -21,11 +15,6 @@ describe M2Config do
21
15
  File.should exist DEFAULT_DB_NAME
22
16
  end
23
17
 
24
- it 'can create the database in a specific file' do
25
- @cfg = M2Config::Config.new CUSTOM_DB_NAME
26
- File.should exist CUSTOM_DB_NAME
27
- end
28
-
29
18
  it 'learns the DB schema from the official schema dump' do
30
19
  for table in TABLES do
31
20
  M2Config::Config.tables.should include table
@@ -39,23 +28,12 @@ describe M2Config do
39
28
  end
40
29
  end
41
30
 
42
- it 'does not change the schema if the database file pre-exists' do
43
- @cfg = M2Config::Config.new EXISTING_DB_NAME
44
- expect {emptyDB.execute("SELECT * FROM server;")}.to raise_error
45
- end
46
-
47
31
  describe '#[]=' do
48
-
49
32
  it 'creates or modifies the value of a setting' do
50
- db = SQLite3::Database.new DEFAULT_DB_NAME
51
- db.results_as_hash = true
52
- @cfg["zeromq.threads"] = 8
53
- res = db.get_first_row("SELECT * FROM setting WHERE key=?;", "zeromq.threads")
54
- res["value"].should eq("8")
33
+ CFG["zeromq.threads"] = 8
34
+ CFG.db[:setting].where(key:"zeromq.threads").first[:value].should eq("8")
55
35
  end
56
-
57
36
  end
58
-
59
37
 
60
38
  end
61
39
 
data/spec/proxy_spec.rb CHANGED
@@ -3,23 +3,13 @@ require "env"
3
3
  M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
4
4
 
5
5
  describe M2Config::Proxy do
6
- before(:each) do
7
- File.delete DEFAULT_DB_NAME rescue nil
8
- @cfg = M2Config::Config.new
9
- @db = SQLite3::Database.new DEFAULT_DB_NAME
10
- @db.results_as_hash = true
11
- end
12
-
13
- after(:each) do
14
- @db.close if @db && !@db.closed?
15
- end
16
6
 
17
7
  describe "::new" do
18
8
  it "needs an address and a port number" do
19
9
  M2Config::Proxy.new({addr:"legacy.local", port: 8080})
20
- res= @db.get_first_row("SELECT * FROM proxy;")
21
- res["addr"].should eq("legacy.local")
22
- res["port"].should eq(8080)
10
+ res = CFG.db[:proxy].first
11
+ res[:addr].should eq("legacy.local")
12
+ res[:port].should eq(8080)
23
13
  end
24
14
  end
25
15
 
data/spec/route_spec.rb CHANGED
@@ -1,51 +1,57 @@
1
1
  require "env"
2
2
 
3
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
4
-
5
3
  describe M2Config::Route do
6
- before(:each) do
7
- File.delete DEFAULT_DB_NAME rescue nil
8
- @cfg = M2Config::Config.new
9
- @dirH = M2Config::Dir.new({base: "static/"})
10
- @db = SQLite3::Database.new DEFAULT_DB_NAME
11
- @db.results_as_hash = true
12
- end
13
-
14
- after(:each) do
15
- @db.close if @db && !@db.closed?
16
- end
17
4
 
18
5
  describe "::new" do
19
6
  it "needs to know the path pattern and the target handler" do
20
- M2Config::Route.new({path:"/blog", target: @dirH})
21
- res = @db.get_first_row("SELECT * FROM route;")
22
- res["path"].should eq("/blog")
23
- res["target_id"].should eq(@dirH.id)
24
- res["target_type"].should eq(@dirH.type)
7
+ dirH = M2Config::Dir.new({base: "static/"})
8
+ M2Config::Route.new({path:"/blog", target: dirH})
9
+ res = CFG.db[:route].first
10
+ res[:path].should eq("/blog")
11
+ res[:target_id].should eq(dirH.id)
12
+ res[:target_type].should eq(dirH.type)
13
+ end
14
+ end
15
+
16
+ describe "::elect!" do
17
+ it "makes a route the exclusive matcher for its path by deleting all other matching routes (on the same host)" do
18
+ host = M2Config::Host.new({name:"main",matching:"actime.biz"})
19
+ dirH = M2Config::Dir.new({base: "static/"})
20
+ dir2 = M2Config::Dir.new({base: "ManceRayder/"})
21
+ r1 = M2Config::Route.new({path:"/king", target: dirH})
22
+ r2 = M2Config::Route.new({path:"/king", target: dir2})
23
+ r3 = M2Config::Route.new({path:"/king", target: dirH})
24
+ M2Config::Route.elect!(r2)
25
+ host.check_routes.should be_true
26
+ king = M2Config::Route.where(path: "/king").first
27
+ king.target.base.should eq("ManceRayder/")
25
28
  end
26
29
  end
27
30
 
28
31
  describe "#host=" do
29
32
  it "can be used if the host is not known at creation" do
30
33
  host = M2Config::Host.new({matching:"example.com", name: "ex"})
31
- r = M2Config::Route.new({path:"/blog", target: @dirH})
34
+ dirH = M2Config::Dir.new({base: "static/"})
35
+ r = M2Config::Route.new({path:"/blog", target: dirH})
32
36
  r.host = host.id
33
- res = @db.get_first_row("SELECT * FROM route;")
34
- res["host_id"].should eq(host.id)
37
+ res = CFG.db[:route].first
38
+ res[:host_id].should eq(host.id)
35
39
  end
36
40
 
37
41
  it "can take a Host instance" do
38
42
  host = M2Config::Host.new({matching:"example.com", name: "ex"})
39
- r = M2Config::Route.new({path:"/blog", target: @dirH})
43
+ dirH = M2Config::Dir.new({base: "static/"})
44
+ r = M2Config::Route.new({path:"/blog", target: dirH})
40
45
  r.host = host
41
- res = @db.get_first_row("SELECT * FROM route;")
42
- res["host_id"].should eq(host.id)
46
+ res = CFG.db[:route].first
47
+ res[:host_id].should eq(host.id)
43
48
  end
44
49
  end
45
50
 
46
- describe '#host' do # , {focus: true}
51
+ describe '#host' do #
47
52
  it 'returns the associated Host object' do
48
- r = M2Config::Route.new({path:"/blog", target: @dirH})
53
+ dirH = M2Config::Dir.new({base: "static/"})
54
+ r = M2Config::Route.new({path:"/blog", target: dirH})
49
55
  r.host = M2Config::Host.new({matching:"example.com", name: "ex"})
50
56
  r.host.matching.should eq("example.com")
51
57
  end
@@ -53,19 +59,21 @@ describe M2Config::Route do
53
59
 
54
60
  describe '#target=' do
55
61
  it 'reassigns the target object' do
56
- r = M2Config::Route.new({path:"/blog", target: @dirH})
62
+ dirH = M2Config::Dir.new({base: "static/"})
63
+ r = M2Config::Route.new({path:"/blog", target: dirH})
57
64
  newTarget = M2Config::Proxy.new({addr:"127.0.0.1", port: 15970})
58
65
  r.target = newTarget
59
- res = @db.get_first_row("SELECT * FROM route;")
60
- res["target_id"].should eq(newTarget.id)
61
- res["target_type"].should eq(newTarget.type)
66
+ res = CFG.db[:route].first
67
+ res[:target_id].should eq(newTarget.id)
68
+ res[:target_type].should eq(newTarget.type)
62
69
  end
63
70
  end
64
71
 
65
72
  describe '#target' do
66
73
  it 'returns the Target object' do
67
- r = M2Config::Route.new({path:"/blog", target: @dirH})
68
- r.target.base.should eq @dirH.base
74
+ dirH = M2Config::Dir.new({base: "static/"})
75
+ r = M2Config::Route.new({path:"/blog", target: dirH})
76
+ r.target.base.should eq dirH.base
69
77
  end
70
78
  end
71
79
 
data/spec/server_spec.rb CHANGED
@@ -1,33 +1,23 @@
1
1
  require "env"
2
2
 
3
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
4
-
5
3
  describe M2Config::Server do
6
4
  before(:each) do
7
- File.delete DEFAULT_DB_NAME rescue nil
8
- @cfg = M2Config::Config.new
9
- @db = SQLite3::Database.new DEFAULT_DB_NAME
10
- @db.results_as_hash = true
11
5
  @srv = M2Config::Server.new
12
6
  @host = M2Config::Host.new({matching:"example.com", name: "ex", server_id:(rand 42)})
13
7
  end
14
-
15
- after(:each) do
16
- @db.close if @db && !@db.closed?
17
- end
18
8
 
19
9
  describe '::new' do
20
10
  it 'creates a server entry with reasonable default settings' do
21
- res= @db.get_first_row("SELECT * FROM server;")
22
- res["access_log"].should eq(M2Config::Server::ACCESS_LOG)
23
- res["error_log"].should eq(M2Config::Server::ERROR_LOG)
24
- res["pid_file"].should eq(M2Config::Server::PID_FILE)
25
- res["chroot"].should eq(M2Config::Server::CHROOT)
26
- res["default_host"].should eq(M2Config::Server::DEFAULT_HOST)
27
- res["name"].should eq(M2Config::Server::NAME)
28
- res["bind_addr"].should eq(M2Config::Server::BIND_ADDR)
29
- res["port"].should eq(M2Config::Server::PORT)
30
- res["use_ssl"].should eq(M2Config::Server::USE_SSL)
11
+ res = CFG.db[:server].first
12
+ res[:access_log].should eq(M2Config::Server::ACCESS_LOG)
13
+ res[:error_log].should eq(M2Config::Server::ERROR_LOG)
14
+ res[:pid_file].should eq(M2Config::Server::PID_FILE)
15
+ res[:chroot].should eq(M2Config::Server::CHROOT)
16
+ res[:default_host].should eq(M2Config::Server::DEFAULT_HOST)
17
+ res[:name].should eq(M2Config::Server::NAME)
18
+ res[:bind_addr].should eq(M2Config::Server::BIND_ADDR)
19
+ res[:port].should eq(M2Config::Server::PORT)
20
+ res[:use_ssl].should eq(M2Config::Server::USE_SSL)
31
21
  end
32
22
 
33
23
  end
@@ -47,8 +37,8 @@ describe M2Config::Server do
47
37
  describe '#add_host (assigns the given host to the server)' do
48
38
  it 'accepts an existing Host instance' do
49
39
  @srv.add_host @host
50
- res= @db.get_first_row("SELECT * FROM host WHERE id=?;", @host.id)
51
- res["server_id"].should eq(@srv.id)
40
+ res = CFG.db[:host].where(id: @host.id).first
41
+ res[:server_id].should eq(@srv.id)
52
42
  end
53
43
  end
54
44
  end
data/spec/setting_spec.rb CHANGED
@@ -1,32 +1,20 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require "env"
3
3
 
4
- M2Config::Config.new # Dummy call to ensure that model classes are required (cf. M2Config::new)
5
-
6
4
  describe M2Config::Setting do
7
- before(:each) do
8
- File.delete DEFAULT_DB_NAME rescue nil
9
- @cfg = M2Config::Config.new
10
- @db = SQLite3::Database.new DEFAULT_DB_NAME
11
- @db.results_as_hash = true
12
- end
13
-
14
- after(:each) do
15
- @db.close if @db && !@db.closed?
16
- end
17
5
 
18
6
  describe "::new" do
19
7
  it "stores the given value under the given key" do
20
8
  M2Config::Setting.new("answer",42)
21
- res = @db.get_first_row("SELECT * FROM setting;")
22
- res["value"].should eq("42")
9
+ res = CFG.db[:setting].first
10
+ res[:value].should eq("42")
23
11
  end
24
12
 
25
13
  it "updates the existing value if the given key is already present" do
26
14
  M2Config::Setting.new("answer",41)
27
15
  M2Config::Setting.new("answer",42)
28
- res = @db.get_first_row("SELECT * FROM setting;")
29
- res["value"].should eq("42")
16
+ res = CFG.db[:setting].first
17
+ res[:value].should eq("42")
30
18
  end
31
19
  end
32
20
  end
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.3.0
4
+ version: 0.4.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: 2013-03-26 00:00:00.000000000 Z
11
+ date: 2013-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3