librr 0.0.1 → 0.0.2
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 +19 -3
- data/lib/librr/cmd_client.rb +3 -2
- data/lib/librr/cmd_parser.rb +42 -18
- data/lib/librr/cmd_server.rb +15 -3
- data/lib/librr/dir_monitor.rb +9 -9
- data/lib/librr/indexer.rb +16 -15
- data/lib/librr/lib.rb +10 -0
- data/lib/librr/logger.rb +22 -7
- data/lib/librr/my_thor.rb +36 -0
- data/lib/librr/runner.rb +6 -2
- data/lib/librr/server_starter.rb +16 -5
- data/lib/librr/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 155602bd5086e0f8111e9a7e2d4d2cf9ab48c7b0
|
4
|
+
data.tar.gz: 70b707affb6b7c5871f9d02f0913eb35e9806838
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64bd8d2c2ad5fa9456b3f2f19887485f76baef67e12626df9bc037da5f2b2c0c8df19d2f6e51d78aa794192069a0f76084bfb337afa4ff4a1a67a50e42c325fa
|
7
|
+
data.tar.gz: b6fff23648956acbd98166c2377c8ad5f680d11dabd1c2dc223d69936becfcf9277b14a4b995ce8ee9a2306fc96fa6c5ccbc6129cd76d36fbd230a18f8648572
|
data/README.md
CHANGED
@@ -26,13 +26,12 @@ gem install librr
|
|
26
26
|
Start and stop background monitor process:
|
27
27
|
|
28
28
|
```sh
|
29
|
-
librr start
|
30
|
-
librr stop
|
29
|
+
librr daemon start
|
30
|
+
librr daemon stop
|
31
31
|
```
|
32
32
|
|
33
33
|
It will start up automatically after first call to `librr search`,
|
34
34
|
You don't need to start it manually.
|
35
|
-
The background process name is: `librrd` and also start solr process.
|
36
35
|
|
37
36
|
|
38
37
|
Config search directories:
|
@@ -50,10 +49,16 @@ Using search:
|
|
50
49
|
librr search emacs
|
51
50
|
~/Dropbox/sync/docs/emacs.org:26: xxx emacs
|
52
51
|
~/Dropbox/sync/docs/gtd.org:230: bbb emacs
|
52
|
+
|
53
53
|
# or using sortcut:
|
54
54
|
librr s emacs
|
55
|
+
|
55
56
|
# set return result rows(default 30):
|
56
57
|
librr search emacs --rows 100
|
58
|
+
|
59
|
+
# under directory:
|
60
|
+
librr search emacs --location ./gtd
|
61
|
+
librr search emacs -l ./gtd
|
57
62
|
```
|
58
63
|
|
59
64
|
Schecdule reindex:
|
@@ -61,3 +66,14 @@ Schecdule reindex:
|
|
61
66
|
```sh
|
62
67
|
librr reindex [dir]
|
63
68
|
```
|
69
|
+
|
70
|
+
## development
|
71
|
+
|
72
|
+
You can add `--debug` or `-d` argument to see what was happened under the hood: `librr add -d`.
|
73
|
+
|
74
|
+
And for debugging, you can run daemon sync with a terminal, and check the debug information on the stdout:
|
75
|
+
|
76
|
+
```
|
77
|
+
librr daemon start --sync -d
|
78
|
+
```
|
79
|
+
|
data/lib/librr/cmd_client.rb
CHANGED
@@ -6,6 +6,7 @@ require 'librr/server_starter'
|
|
6
6
|
|
7
7
|
|
8
8
|
class Librr::CmdClient
|
9
|
+
include Librr::Logger::ClassLogger
|
9
10
|
|
10
11
|
def initialize host, port
|
11
12
|
@host = host
|
@@ -29,7 +30,7 @@ class Librr::CmdClient
|
|
29
30
|
rescue Errno::ECONNREFUSED => e
|
30
31
|
end
|
31
32
|
|
32
|
-
puts "
|
33
|
+
puts "daemon not start, starting.."
|
33
34
|
ServerStarter.start_server(false)
|
34
35
|
ServerStarter.wait_for_server_started do
|
35
36
|
self.run_cmd cmd, **params
|
@@ -39,7 +40,7 @@ class Librr::CmdClient
|
|
39
40
|
def run_cmd cmd, params={}
|
40
41
|
params[:cmd] = cmd
|
41
42
|
url = '/cmd'
|
42
|
-
|
43
|
+
self.debug("sending: #{params}")
|
43
44
|
result = Net::HTTP.post_form(URI.parse("http://#{@host}:#{@port}#{url}"), params)
|
44
45
|
JSON.load(result.body)
|
45
46
|
end
|
data/lib/librr/cmd_parser.rb
CHANGED
@@ -1,52 +1,76 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'librr/cmd_client'
|
3
3
|
require 'librr/settings'
|
4
|
+
require 'librr/my_thor'
|
4
5
|
|
5
6
|
|
6
|
-
class Librr::CmdParser <
|
7
|
+
class Librr::CmdParser < MyThor
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
def start
|
11
|
-
if @@client.check_start(options[:sync])
|
12
|
-
puts 'server already started..'
|
13
|
-
end
|
9
|
+
class << self
|
10
|
+
attr_accessor :client
|
14
11
|
end
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
class Daemon < MyThor
|
14
|
+
option :sync, type: :boolean, aliases: "-s"
|
15
|
+
desc 'start [--sync]', 'start background daemon process'
|
16
|
+
def start
|
17
|
+
if Librr::CmdParser.client.check_start(options[:sync])
|
18
|
+
puts 'daemon already started..'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'stop', 'stop background daemon process'
|
23
|
+
def stop
|
24
|
+
puts 'stopping daemon..'
|
25
|
+
Librr::CmdParser.client.cmd(:stop) rescue nil
|
26
|
+
end
|
27
|
+
|
28
|
+
# desc 'restart', 'restart background daemon process'
|
29
|
+
# def restart
|
30
|
+
# puts 'daemon restarting..'
|
31
|
+
# Librr::CmdParser.client.cmd(:restart) rescue nil
|
32
|
+
# end
|
20
33
|
end
|
21
34
|
|
35
|
+
desc "daemon SUBCOMMAND ...ARGS", "manage background daemon process"
|
36
|
+
subcommand "daemon", Daemon
|
37
|
+
|
38
|
+
|
22
39
|
desc 'add DIR', 'add directory for indexing'
|
23
40
|
def add(dir)
|
24
41
|
puts "indexing: #{dir}"
|
25
|
-
|
42
|
+
self.class.client.cmd(:add, dir: File.expand_path(dir))
|
26
43
|
end
|
27
44
|
|
28
45
|
desc 'remove DIR', 'remove directory from indexing'
|
29
46
|
def remove(dir)
|
30
47
|
puts "removing: #{dir}"
|
31
|
-
|
48
|
+
self.class.client.cmd(:remove, dir: File.expand_path(dir))
|
32
49
|
end
|
33
50
|
|
34
51
|
desc 'list', 'list all indexed directories'
|
35
52
|
def list
|
36
|
-
puts
|
53
|
+
puts self.class.client.cmd(:list)
|
37
54
|
end
|
38
55
|
|
39
56
|
desc "reindex", "reindex files"
|
40
57
|
def reindex
|
41
|
-
|
58
|
+
self.class.client.cmd(:reindex)
|
42
59
|
end
|
43
60
|
|
44
61
|
option :rows, type: :numeric, default: 20
|
45
62
|
option :all, type: :boolean
|
46
|
-
|
63
|
+
option :location, type: :string, aliases: "-l"
|
64
|
+
desc 'search STRING [--location DIR]', 'search string'
|
47
65
|
def search(text)
|
66
|
+
location = (File.expand_path(options[:location]) if options[:location])
|
48
67
|
puts "searching: #{text}"
|
49
|
-
results =
|
68
|
+
results = self.class.client.cmd(:search,
|
69
|
+
text: text,
|
70
|
+
all: options[:all],
|
71
|
+
rows: options[:rows],
|
72
|
+
location: location,
|
73
|
+
)
|
50
74
|
if results.empty?
|
51
75
|
puts "find no result"
|
52
76
|
else
|
@@ -55,7 +79,7 @@ class Librr::CmdParser < Thor
|
|
55
79
|
end
|
56
80
|
|
57
81
|
def self.run!
|
58
|
-
|
82
|
+
self.client = Librr::CmdClient.new('localhost', Settings.runner_port)
|
59
83
|
self.start(ARGV)
|
60
84
|
end
|
61
85
|
|
data/lib/librr/cmd_server.rb
CHANGED
@@ -39,17 +39,24 @@ class Librr::CmdServer
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def handle_cmd(params)
|
42
|
-
self.
|
42
|
+
self.debug "on receive: #{params.to_s}"
|
43
43
|
case params['cmd']
|
44
44
|
when 'ping'
|
45
45
|
'pong'
|
46
46
|
|
47
47
|
when 'stop'
|
48
|
-
|
48
|
+
self.info "daemon stopping.."
|
49
49
|
EM.next_tick{
|
50
50
|
EM.stop
|
51
51
|
}
|
52
52
|
|
53
|
+
when 'restart'
|
54
|
+
self.info "daemon restarting.."
|
55
|
+
EM.next_tick{
|
56
|
+
EM.stop
|
57
|
+
# todo
|
58
|
+
}
|
59
|
+
|
53
60
|
when 'add'
|
54
61
|
EM.next_tick{
|
55
62
|
@@server.monitor.add_directory(params['dir'])
|
@@ -69,7 +76,12 @@ class Librr::CmdServer
|
|
69
76
|
}
|
70
77
|
|
71
78
|
when 'search'
|
72
|
-
@@server.indexer.search(
|
79
|
+
@@server.indexer.search(
|
80
|
+
params['text'],
|
81
|
+
rows: params['rows'],
|
82
|
+
all: params['all'],
|
83
|
+
location: params['location'],
|
84
|
+
)
|
73
85
|
|
74
86
|
else
|
75
87
|
raise Exception, "cmd unknown: #{params['cmd']}"
|
data/lib/librr/dir_monitor.rb
CHANGED
@@ -17,11 +17,11 @@ class Librr::DirMonitor
|
|
17
17
|
@indexer = opts[:indexer]
|
18
18
|
|
19
19
|
self.dirs = Configer.load_dir_config
|
20
|
-
self.
|
20
|
+
self.debug "init dirs: #{self.dirs.to_a.to_s}"
|
21
21
|
end
|
22
22
|
|
23
23
|
def reindex
|
24
|
-
self.
|
24
|
+
self.debug "reindex"
|
25
25
|
@indexer.cleanup
|
26
26
|
self.dirs.each do |dir|
|
27
27
|
@indexer.index_directory(dir)
|
@@ -29,16 +29,16 @@ class Librr::DirMonitor
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def add_directory(dir)
|
32
|
-
self.
|
32
|
+
self.debug "add dir: #{dir}"
|
33
33
|
@indexer.index_directory(dir)
|
34
34
|
self.dirs.add(dir)
|
35
35
|
Configer.save_dir_config(self.dirs)
|
36
|
-
self.
|
36
|
+
self.debug "save dir: #{self.dirs.to_a.to_s}"
|
37
37
|
self.start
|
38
38
|
end
|
39
39
|
|
40
40
|
def remove_directory(dir)
|
41
|
-
self.
|
41
|
+
self.debug "remove dir: #{dir}"
|
42
42
|
@indexer.remove_index_directory(dir)
|
43
43
|
self.dirs.delete(dir)
|
44
44
|
Configer.save_dir_config(self.dirs)
|
@@ -58,7 +58,7 @@ class Librr::DirMonitor
|
|
58
58
|
@after_block = after_block
|
59
59
|
|
60
60
|
if self.dirs.empty?
|
61
|
-
self.
|
61
|
+
self.debug "DIR empty, not start process."
|
62
62
|
self.post_init
|
63
63
|
return
|
64
64
|
end
|
@@ -79,7 +79,7 @@ class Librr::DirMonitor
|
|
79
79
|
kill_process_by_file(self.class.pid_file)
|
80
80
|
|
81
81
|
cmd = [FSEvent.watcher_path] + ["--file-events"] + self.dirs.to_a
|
82
|
-
self.
|
82
|
+
self.debug "start process: #{cmd}"
|
83
83
|
@pipe = EM.popen(cmd, DirWatcher, self)
|
84
84
|
# TODO: write pid file
|
85
85
|
end
|
@@ -97,7 +97,7 @@ class Librr::DirMonitor
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def receive_data data
|
100
|
-
self.
|
100
|
+
self.debug "on receive data: #{data}"
|
101
101
|
changes = data.strip.split(':').map(&:strip).reject{|s| s == ''}
|
102
102
|
changes.each do |file|
|
103
103
|
@monitor.indexer.index_file(file)
|
@@ -105,7 +105,7 @@ class Librr::DirMonitor
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def unbind
|
108
|
-
self.
|
108
|
+
self.debug "dir monitor process stopped."
|
109
109
|
@monitor.after_process_stop
|
110
110
|
File.delete Librr::DirMonitor.pid_file rescue nil
|
111
111
|
end
|
data/lib/librr/indexer.rb
CHANGED
@@ -38,15 +38,15 @@ class Librr::Indexer
|
|
38
38
|
include Librr::Logger::ClassLogger
|
39
39
|
|
40
40
|
def post_init
|
41
|
-
self.
|
41
|
+
self.debug "start solr"
|
42
42
|
end
|
43
43
|
|
44
44
|
def receive_data data
|
45
|
-
self.
|
45
|
+
self.debug "receiving solr: #{data}"
|
46
46
|
end
|
47
47
|
|
48
48
|
def unbind
|
49
|
-
self.
|
49
|
+
self.debug "stop solr"
|
50
50
|
File.delete Librr::Indexer.pid_file rescue nil
|
51
51
|
end
|
52
52
|
|
@@ -71,7 +71,7 @@ class Librr::Indexer
|
|
71
71
|
|
72
72
|
def after_start
|
73
73
|
@solr_started = true
|
74
|
-
self.
|
74
|
+
self.debug 'after solr start'
|
75
75
|
|
76
76
|
@solr = RSolr.connect(
|
77
77
|
url: "http://localhost:#{Settings.solr_port}/solr",
|
@@ -90,7 +90,7 @@ class Librr::Indexer
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def cleanup
|
93
|
-
self.
|
93
|
+
self.debug 'cleanup'
|
94
94
|
self.run_solr {
|
95
95
|
@solr.delete_by_query '*:*'
|
96
96
|
@solr.commit
|
@@ -98,7 +98,7 @@ class Librr::Indexer
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def index_directory(dir)
|
101
|
-
self.
|
101
|
+
self.debug "index dir: #{dir}"
|
102
102
|
files = Dir.glob(File.join(dir, "**/*"))
|
103
103
|
EM::Iterator.new(files)
|
104
104
|
.each(
|
@@ -109,12 +109,12 @@ class Librr::Indexer
|
|
109
109
|
iter.next
|
110
110
|
end
|
111
111
|
},
|
112
|
-
proc { self.
|
112
|
+
proc { self.debug "index dir finished: #{dir}" }
|
113
113
|
)
|
114
114
|
end
|
115
115
|
|
116
116
|
def remove_index_directory(dir)
|
117
|
-
self.
|
117
|
+
self.debug "remove dir: #{dir}"
|
118
118
|
self.run_solr {
|
119
119
|
@solr.delete_by_query "filename:#{dir}*"
|
120
120
|
@solr.commit
|
@@ -130,20 +130,19 @@ class Librr::Indexer
|
|
130
130
|
}
|
131
131
|
|
132
132
|
unless File.exists?(file)
|
133
|
-
self.
|
133
|
+
self.debug "remove index file: #{file}"
|
134
134
|
block.call if block
|
135
135
|
return
|
136
136
|
end
|
137
137
|
|
138
|
-
self.
|
138
|
+
self.debug "index file: #{file}"
|
139
139
|
f = File.open(file)
|
140
140
|
enum = f.each.each_slice(SLICE_NUM).each_with_index
|
141
|
-
self.info "file indexing...."
|
142
141
|
DelayIterator.new(enum)
|
143
142
|
.each(
|
144
143
|
proc { |lines, i|
|
145
144
|
data = lines.each_with_index.map do |line, j|
|
146
|
-
num = SLICE_NUM * i + j
|
145
|
+
num = SLICE_NUM * i + j + 1
|
147
146
|
line = fix_encoding(line).rstrip
|
148
147
|
{id: SecureRandom.uuid, filename: file, linenum: num, line: line}
|
149
148
|
end
|
@@ -153,7 +152,7 @@ class Librr::Indexer
|
|
153
152
|
@solr.commit
|
154
153
|
}
|
155
154
|
|
156
|
-
self.
|
155
|
+
self.debug "working on lines: #{i*SLICE_NUM}"
|
157
156
|
},
|
158
157
|
proc {
|
159
158
|
f.close
|
@@ -163,13 +162,15 @@ class Librr::Indexer
|
|
163
162
|
end
|
164
163
|
|
165
164
|
def search(str, opts={})
|
166
|
-
self.
|
165
|
+
self.debug "search: #{str}"
|
167
166
|
|
168
167
|
rows = opts[:rows] || 30
|
169
168
|
rows = (2 ** 31 - 1) if opts[:all]
|
169
|
+
query = "line:#{str}"
|
170
|
+
query += " filename:#{opts[:location]}*" if opts[:location]
|
170
171
|
|
171
172
|
result = self.run_solr {
|
172
|
-
@solr.get 'select', params: {q:
|
173
|
+
@solr.get 'select', params: {q: query, rows: rows}
|
173
174
|
}
|
174
175
|
|
175
176
|
result['response']['docs'].map do |row|
|
data/lib/librr/lib.rb
CHANGED
@@ -19,6 +19,16 @@ def redirect_std
|
|
19
19
|
[wi, ro, re]
|
20
20
|
end
|
21
21
|
|
22
|
+
def redirect_std_to_file(filename)
|
23
|
+
f = File.open(filename, 'a+')
|
24
|
+
f.sync = true
|
25
|
+
|
26
|
+
$stdout.reopen f
|
27
|
+
$stderr.reopen f
|
28
|
+
|
29
|
+
yield
|
30
|
+
end
|
31
|
+
|
22
32
|
|
23
33
|
def fix_encoding text
|
24
34
|
# solution copy from:
|
data/lib/librr/logger.rb
CHANGED
@@ -1,21 +1,36 @@
|
|
1
1
|
require 'logger'
|
2
|
+
require 'singleton'
|
3
|
+
|
2
4
|
|
3
5
|
class Librr::Logger
|
6
|
+
include Singleton
|
4
7
|
|
5
8
|
module ClassLogger
|
9
|
+
def logger
|
10
|
+
Librr::Logger.instance.logger
|
11
|
+
end
|
12
|
+
|
6
13
|
def info(text)
|
7
|
-
|
14
|
+
self.logger.info(self.class.name){ text }
|
15
|
+
end
|
16
|
+
|
17
|
+
def debug(text)
|
18
|
+
self.logger.debug(self.class.name){ text }
|
8
19
|
end
|
9
20
|
end
|
10
21
|
|
11
|
-
def
|
22
|
+
def logger
|
23
|
+
@logger ||= self.create_logger
|
24
|
+
end
|
25
|
+
|
26
|
+
def logger=(logger)
|
27
|
+
@logger = logger
|
28
|
+
end
|
29
|
+
|
30
|
+
def create_logger
|
12
31
|
logger = Logger.new(STDOUT)
|
13
|
-
|
14
|
-
logger.level = Logger::DEBUG
|
32
|
+
logger.level = Logger::WARN
|
15
33
|
logger
|
16
34
|
end
|
17
35
|
|
18
36
|
end
|
19
|
-
|
20
|
-
$logger ||= Librr::Logger.create_logger
|
21
|
-
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
class MyThor < Thor
|
4
|
+
class_option :debug, type: :boolean, aliases: "-d"
|
5
|
+
|
6
|
+
class << self
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
def method_added(meth)
|
11
|
+
meth = meth.to_s
|
12
|
+
@my_defined_methods ||= {}
|
13
|
+
return if @my_defined_methods[meth] or meth =~ /_old_/
|
14
|
+
@my_defined_methods[meth] = true
|
15
|
+
my_wrap_methods(meth)
|
16
|
+
|
17
|
+
super(meth)
|
18
|
+
end
|
19
|
+
|
20
|
+
def my_wrap_methods(meth)
|
21
|
+
old_meth = "_old_#{meth}"
|
22
|
+
alias_method old_meth, meth
|
23
|
+
|
24
|
+
define_method meth do |*args|
|
25
|
+
# set logger
|
26
|
+
if options[:debug]
|
27
|
+
Librr::Logger.instance.logger.level = Logger::DEBUG
|
28
|
+
end
|
29
|
+
|
30
|
+
self.send(old_meth, *args)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/librr/runner.rb
CHANGED
@@ -10,6 +10,8 @@ EventMachine.kqueue = true if EventMachine.kqueue?
|
|
10
10
|
|
11
11
|
|
12
12
|
class Librr::Runner
|
13
|
+
include Librr::Logger::ClassLogger
|
14
|
+
|
13
15
|
def run!
|
14
16
|
self.clear_pid
|
15
17
|
@stoping = false
|
@@ -20,7 +22,7 @@ class Librr::Runner
|
|
20
22
|
@stoping = true
|
21
23
|
|
22
24
|
EM.stop
|
23
|
-
|
25
|
+
self.info "eventmachine stopping.."
|
24
26
|
# todo commandline still show ^C?
|
25
27
|
self.clear_pid
|
26
28
|
end
|
@@ -35,13 +37,15 @@ class Librr::Runner
|
|
35
37
|
indexer.start do
|
36
38
|
monitor.start do
|
37
39
|
server.start do
|
38
|
-
|
40
|
+
self.info "daemon started"
|
39
41
|
self.write_pid
|
40
42
|
end
|
41
43
|
end
|
42
44
|
end
|
43
45
|
|
44
46
|
end
|
47
|
+
|
48
|
+
self.info "eventmachine stopped."
|
45
49
|
end
|
46
50
|
|
47
51
|
def write_pid
|
data/lib/librr/server_starter.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# copy from gem daemons file: daemonize.rb
|
2
2
|
# todo: may has secruity risk
|
3
3
|
require 'librr/lib'
|
4
|
+
require 'librr/logger'
|
5
|
+
require 'librr/settings'
|
4
6
|
|
5
7
|
module ServerStarter
|
8
|
+
include Librr::Logger::ClassLogger
|
9
|
+
|
6
10
|
extend self
|
7
11
|
|
8
12
|
def run
|
@@ -13,14 +17,21 @@ module ServerStarter
|
|
13
17
|
end
|
14
18
|
|
15
19
|
def start_server(sync)
|
16
|
-
puts '
|
17
|
-
|
20
|
+
puts 'daemon starting..'
|
21
|
+
if sync
|
22
|
+
Librr::Logger.instance.logger.level = Logger::DEBUG
|
23
|
+
return self.run
|
24
|
+
end
|
18
25
|
|
19
26
|
Process.fork do
|
20
27
|
sess_id = Process.setsid
|
21
28
|
Process.fork do
|
22
29
|
redirect_std do
|
23
|
-
|
30
|
+
# for daemon, logger all information to log file
|
31
|
+
logger = Logger.new(Settings.in_dir('daemon.log'), 10, 1024000)
|
32
|
+
logger.level = Logger::DEBUG
|
33
|
+
Librr::Logger.instance.logger = logger
|
34
|
+
self.debug "daemon started."
|
24
35
|
self.run
|
25
36
|
end
|
26
37
|
exit
|
@@ -32,13 +43,13 @@ module ServerStarter
|
|
32
43
|
def wait_for_server_started &block
|
33
44
|
5.times.each do
|
34
45
|
sleep(2)
|
35
|
-
puts 'waiting for
|
46
|
+
puts 'waiting for daemon starting..'
|
36
47
|
|
37
48
|
if File.exists?(Settings::PID_FILE)
|
38
49
|
return block.call if block
|
39
50
|
end
|
40
51
|
end
|
41
|
-
puts "
|
52
|
+
puts "daemon not starting, something is wrong."
|
42
53
|
exit
|
43
54
|
end
|
44
55
|
end
|
data/lib/librr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: librr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linjunhalida
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- lib/librr/indexer.rb
|
163
163
|
- lib/librr/lib.rb
|
164
164
|
- lib/librr/logger.rb
|
165
|
+
- lib/librr/my_thor.rb
|
165
166
|
- lib/librr/runner.rb
|
166
167
|
- lib/librr/server_starter.rb
|
167
168
|
- lib/librr/settings.rb
|