boned 0.2.6 → 0.3.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.
data/lib/boned/cli.rb DELETED
@@ -1,62 +0,0 @@
1
- require 'boned/server'
2
- require 'pp'
3
-
4
- class Boned::CLI < Drydock::Command
5
- attr_accessor :exit_code
6
-
7
-
8
- def start
9
- Boned.connect
10
- if Boned.service_available?('127.0.0.1', server_opts[:port])
11
- raise Boned::Server::ServerRunning, server_opts[:port]
12
- end
13
- Boned::Controllers::Controller.new(server_opts).start
14
- end
15
-
16
- def stop
17
- Boned.connect(false)
18
- Boned.stop_redis
19
- if not Boned.service_available?('127.0.0.1', server_opts[:port])
20
- raise Boned::Server::ServerNotRunning, server_opts[:port]
21
- end
22
- Boned::Controllers::Controller.new(server_opts).stop
23
- end
24
-
25
- def stop_redis
26
- Boned.connect(false)
27
- Boned.stop_redis
28
- end
29
-
30
- def info
31
- require 'yaml'
32
- if Boned.service_available?('127.0.0.1', server_opts[:port])
33
- puts "boned is running on port #{server_opts[:port]}"
34
- else
35
- puts "No boned"
36
- end
37
- puts "Options:", server_opts.to_yaml if @global.verbose > 0
38
- end
39
-
40
- private
41
-
42
- def server_opts
43
- port = @global.port || Boned::Server::DEFAULT_PORT
44
- config = @global.rackup || File.join(BONED_HOME, "config.ru")
45
- @server_opts ||= {
46
- :chdir => Dir.pwd,
47
- :environment => @global.environment || 'development',
48
- :address => '0.0.0.0',
49
- :port => port,
50
- :timeout => 30,
51
- :log => "/tmp/boned-#{port}.log",
52
- :pid => "/tmp/boned-#{port}.pid",
53
- :max_conns => Thin::Server::DEFAULT_MAXIMUM_CONNECTIONS,
54
- :max_persistent_conns => Thin::Server::DEFAULT_MAXIMUM_PERSISTENT_CONNECTIONS,
55
- :require => [],
56
- :wait => Thin::Controllers::Cluster::DEFAULT_WAIT_TIME,
57
- :backend => "Boned::Server",
58
- :rackup => config,
59
- :daemonize => @global.daemon || false
60
- }
61
- end
62
- end
@@ -1,112 +0,0 @@
1
-
2
- # Bone:a462b9ebda71f16cb1567ba8704695ae8dba9999:simple
3
- # Bone:a462b9ebda71f16cb1567ba8704695ae8dba9999:us-east-1a-dev-fe:simple
4
- # Bone:a462b9ebda71f16cb1567ba8704695ae8dba9999:dev-fe:simple
5
- # Bone:a462b9ebda71f16cb1567ba8704695ae8dba9999:us-east-1a:simple
6
-
7
- class Bone < Boned::Model
8
-
9
- primarykey :boneid
10
-
11
- field :token
12
- field :name
13
- field :value
14
- field :prop
15
-
16
- def initialize(token, name, value, prop={})
17
- @prop ||= {}
18
- prop ||= {}
19
- prop.each_pair { |n,v| @prop[n.to_sym] ||= v }
20
- @token, @name = token, name
21
- @new = refresh!.nil?
22
- @value = value unless value.nil? # use the new value if provided
23
- @prop[:created] = Time.now.utc.to_i if new? || @prop[:created].nil?
24
- # resolve string/symbol ambiguity for properties
25
- def @prop.[](k) super(k.to_s.to_sym) || super(k.to_s) end
26
- def @prop.[]=(k,v) super(k.to_s.to_sym,v) end
27
- end
28
-
29
- def [](k)
30
- self.respond_to?(k) ? self.send : self.prop[k]
31
- end
32
-
33
- def new?() @new == true end
34
-
35
- def file?
36
- !prop[:file].nil?
37
- end
38
-
39
- def region() prop[:region] end
40
- def env() prop[:env] end
41
- def role() prop[:role] end
42
- def num() prop[:num] end
43
- def path() prop[:path] end
44
-
45
- def boneid
46
- loc = [region, env, role, num].compact.join('-')
47
- parts = loc.empty? ? [token] : [token, loc]
48
- parts << path.gsub(/\A\//, '').tr('/', '-') unless path.nil? # TODO: support windows
49
- parts << name
50
- parts.collect { |p| p.to_s.tr(':', '-') }.join(':')
51
- end
52
-
53
- def key(*parts)
54
- parts.unshift boneid
55
- self.class.key *parts
56
- end
57
-
58
- def save
59
- redis.set(key, value)
60
- prop[:modified] = Time.now.utc.to_i
61
- redis.set(key(:prop), prop.to_json)
62
- end
63
-
64
- def refresh!
65
- Boned.ld "REFRESH: #{key}"
66
- @value = redis.get key
67
- prop = redis.get key(:prop)
68
- prop &&= JSON.parse(prop) rescue {}
69
- # Merge the stored props with the current ones. Enforce symbols!
70
- prop.each_pair { |n,v| @prop[n.to_sym] ||= v }
71
- Boned.ld " -> #{@value} #{@prop.inspect}"
72
- self
73
- rescue
74
- nil
75
- end
76
-
77
- def destroy!
78
- Boned.ld "DESTROY: #{key}"
79
- redis.del key
80
- redis.del key(:prop)
81
- end
82
-
83
- class << self
84
-
85
- def del(token, name, opts={})
86
- bone = get(token, name, opts)
87
- bone.destroy!
88
- bone
89
- end
90
-
91
- def get(token, name, opts={})
92
- bone = Bone.new token, name, nil, opts
93
- raise Boned::BadBone, bone.name if bone.value.nil?
94
- bone
95
- end
96
-
97
- def keys(token, k=nil, opts={})
98
- search = key(token) << '*'
99
- search << k unless k.nil?
100
- Boned.ld "SEARCHING: #{search}"
101
- dirty = redis.keys search # contains :prop when no keyname specified
102
- clean = []
103
- dirty.each { |k|
104
- next if k.match(/prop\z/);
105
- clean << k.split(':')[4..-1].join(':')
106
- }
107
- clean
108
- end
109
-
110
- end
111
-
112
- end
data/lib/boned/models.rb DELETED
@@ -1,34 +0,0 @@
1
-
2
-
3
- module Boned
4
- class Model < Storable
5
- def self.key(*el)
6
- raise "#{self}: nil keypart: #{el.inspect}" if el.size != el.compact.size
7
- a = "v1::#{self}"
8
- a << ':' << el.join(':') unless el.empty?
9
- a
10
- end
11
- def self.redis
12
- Boned.redis
13
- end
14
- def self.primarykey(v=nil)
15
- unless v.nil?
16
- @primarykey = v
17
- class_eval do
18
- def primarykey() send(self.class.primarykey) end
19
- end
20
- end
21
- @primarykey
22
- end
23
- def redis
24
- self.class.redis
25
- end
26
- def save
27
- redis.sadd(self.class.key(kind, :all), self.primarykey) &&
28
- redis.set(key(:created), self.time.to_i) &&
29
- redis.set(key(:object), to_json)
30
- end
31
- end
32
- end
33
-
34
- Boned.require_glob 'boned', 'models', '*.rb'
data/lib/boned/server.rb DELETED
@@ -1,67 +0,0 @@
1
- require 'thin'
2
- require 'logging'
3
- require 'forwardable'
4
-
5
- module Boned
6
- class Server < Thin::Backends::Base
7
- DEFAULT_PORT = 6043.freeze
8
-
9
- class ServerRunning < Boned::Problem
10
- def message() "Server already running on port: #{super}" end
11
- end
12
-
13
- class ServerNotRunning < Boned::Problem
14
- def message() "Server not running on port: #{super}" end
15
- end
16
-
17
- class << self
18
- end
19
-
20
- # Address and port on which the server is listening for connections.
21
- attr_accessor :host, :port
22
-
23
- def initialize(host, port, options)
24
- @host = host
25
- @port = port
26
- super()
27
- end
28
-
29
- # Connect the server
30
- def connect
31
- @signature = EventMachine.start_server(@host, @port, Thin::Connection, &method(:initialize_connection))
32
- rescue => ex
33
- puts ex.message
34
- puts ex.backtrace if Boned.debug
35
- stop!
36
- end
37
-
38
- # Stops the server
39
- def disconnect
40
- EventMachine.stop_server(@signature)
41
- end
42
-
43
- def to_s
44
- "#{@host}:#{@port}"
45
- end
46
-
47
- end
48
- module Controllers
49
- class Controller < Thin::Controllers::Controller
50
- end
51
- class Service < Thin::Controllers::Service
52
- end
53
- class Cluster < Thin::Controllers::Cluster
54
- end
55
- end
56
- end
57
-
58
-
59
-
60
-
61
- #controller = case
62
- #when cluster? then Thin::Controllers::Cluster.new(options)
63
- #when service? then Thin::Controllers::Service.new(options)
64
- #else Thin::Controllers::Controller.new(options)
65
- #end
66
-
67
-
data/try/10_bone_model.rb DELETED
@@ -1,21 +0,0 @@
1
- # ruby -rubygems -Ilib try/10_bone_model.rb
2
- require 'boned'
3
- Boned.load_config
4
- Boned.connect
5
- Boned.enable_debug
6
-
7
- token = Digest::SHA256.hexdigest('1901484c41b8752d61863e323c743')
8
- key = 'simple'
9
-
10
- puts Bone.keys(token)
11
-
12
- __END__
13
- opts = { :env => 'dev', :region => 'us-east-1a', :num => '01', :role => 'fe', :path => Dir.pwd }
14
- bone = Bone.new token, key, rand(100000).to_i, opts
15
- #puts "BONE: " << bone.inspect, $/
16
- bone.save
17
- #puts "KEYS: " << Bone.keys( token, key).inspect, $/
18
-
19
- bone = Bone.get( token, key, opts)
20
- puts "GET: " << bone.inspect, $/
21
- puts bone.to_json