m2config 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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