content_server 1.1.0 → 1.2.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/bin/backup_server +8 -20
- data/bin/content_server +8 -20
- data/bin/testing_memory +60 -0
- data/bin/testing_server +57 -0
- data/ext/run_in_background/mkrf_conf.rb +34 -0
- data/lib/content_data/content_data.rb +613 -0
- data/lib/content_data/version.rb +3 -0
- data/lib/content_data.rb +6 -0
- data/lib/content_server/backup_server.rb +65 -86
- data/lib/content_server/content_server.rb +47 -77
- data/lib/content_server/file_streamer.rb +27 -33
- data/lib/content_server/queue_copy.rb +154 -49
- data/lib/content_server/queue_indexer.rb +19 -11
- data/lib/content_server/remote_content.rb +41 -23
- data/lib/content_server/server.rb +91 -0
- data/lib/content_server/version.rb +1 -1
- data/lib/content_server.rb +0 -15
- data/lib/email/email.rb +87 -0
- data/lib/email/version.rb +3 -0
- data/lib/email.rb +4 -0
- data/lib/file_copy/copy.rb +68 -0
- data/lib/file_copy/version.rb +4 -0
- data/lib/file_copy.rb +4 -0
- data/lib/file_indexing/index_agent.rb +170 -0
- data/lib/file_indexing/indexer_patterns.rb +72 -0
- data/lib/file_indexing/version.rb +3 -0
- data/lib/file_indexing.rb +9 -0
- data/lib/file_monitoring/file_monitoring.rb +105 -0
- data/lib/file_monitoring/monitor_path.rb +304 -0
- data/lib/file_monitoring/version.rb +3 -0
- data/lib/file_monitoring.rb +29 -0
- data/lib/file_utils/file_generator/README +97 -0
- data/lib/file_utils/file_generator/file_generator.rb +156 -0
- data/lib/file_utils/file_utils.rb +260 -0
- data/lib/file_utils/version.rb +3 -0
- data/lib/file_utils.rb +4 -0
- data/lib/log/version.rb +3 -0
- data/lib/log.rb +188 -0
- data/lib/networking/tcp.rb +213 -0
- data/lib/networking/version.rb +3 -0
- data/lib/networking.rb +4 -0
- data/lib/params/version.rb +3 -0
- data/lib/params.rb +419 -0
- data/lib/process_monitoring/monitoring.rb +85 -0
- data/lib/process_monitoring/monitoring_info.rb +79 -0
- data/lib/process_monitoring/send_email.rb +40 -0
- data/lib/process_monitoring/thread_safe_hash.rb +77 -0
- data/lib/process_monitoring/version.rb +3 -0
- data/lib/process_monitoring.rb +6 -0
- data/lib/run_in_background/version.rb +3 -0
- data/lib/run_in_background.rb +432 -0
- data/lib/testing_memory/testing_memory.rb +187 -0
- data/lib/testing_server/testing_server.rb +236 -0
- data/lib/testing_server/version.rb +3 -0
- data/lib/testing_server.rb +12 -0
- data/lib/validations/index_validations.rb +106 -0
- data/lib/validations/version.rb +3 -0
- data/lib/validations.rb +4 -0
- data/spec/content_data/validations_spec.rb +113 -0
- data/spec/file_copy/copy_spec.rb +54 -0
- data/spec/file_indexing/index_agent_spec.rb +53 -0
- data/spec/networking/tcp_spec.rb +95 -0
- data/spec/validations/index_validations_spec.rb +77 -0
- data/test/content_data/content_data_test.rb +290 -0
- data/test/file_generator/file_generator_spec.rb +84 -0
- data/test/file_indexing/index_agent_test/New.txt +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libexslt.dll +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/libxslt.dll +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/bin/xsltproc.exe +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exslt.h +102 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltconfig.h +73 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/exsltexports.h +140 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libexslt/libexslt.h +29 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/attributes.h +38 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/documents.h +93 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extensions.h +262 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/extra.h +80 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/functions.h +78 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/imports.h +75 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/keys.h +53 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/libxslt.h +30 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/namespaces.h +68 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/numbersInternals.h +69 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/pattern.h +81 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/preproc.h +43 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/security.h +104 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/templates.h +77 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/transform.h +207 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/trio.h +216 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/triodef.h +220 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/variables.h +91 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/win32config.h +101 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xslt.h +103 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltInternals.h +1967 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltconfig.h +172 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltexports.h +142 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltlocale.h +57 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltutils.h +309 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/include/libxslt/xsltwin32config.h +105 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt.lib +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libexslt_a.lib +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt.lib +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/lib/libxslt_a.lib +0 -0
- data/test/file_indexing/index_agent_test/libxslt-1.1.26.win32/readme.txt +22 -0
- data/test/file_indexing/index_agent_test/patterns.input +3 -0
- data/test/file_indexing/index_agent_test.rb +51 -0
- data/test/file_monitoring/file_monitoring_test/conf.yml +4 -0
- data/test/file_monitoring/file_monitoring_test/conf_win32.yml +5 -0
- data/test/file_monitoring/file_monitoring_test/log +56 -0
- data/test/file_monitoring/file_monitoring_test.rb +0 -0
- data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000 +1000 -0
- data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.0 +1000 -0
- data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.1 +1000 -0
- data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500 +1500 -0
- data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.0 +1500 -0
- data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.1 +1500 -0
- data/test/file_monitoring/monitor_path_test/test_file.500 +500 -0
- data/test/file_monitoring/monitor_path_test/test_file.500.0 +500 -0
- data/test/file_monitoring/monitor_path_test/test_file.500.1 +500 -0
- data/test/file_monitoring/monitor_path_test.rb +153 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500 +1500 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.0 +1500 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.1 +1500 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000 +1000 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.0 +1000 -0
- data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.1 +1000 -0
- data/test/file_utils/fileutil_mksymlink_test/test_file.500 +500 -0
- data/test/file_utils/fileutil_mksymlink_test/test_file.500.0 +500 -0
- data/test/file_utils/fileutil_mksymlink_test/test_file.500.1 +500 -0
- data/test/file_utils/fileutil_mksymlink_test.rb +125 -0
- data/test/file_utils/time_modification_test.rb +132 -0
- data/test/params/params_spec.rb +280 -0
- data/test/params/params_test.rb +43 -0
- data/test/run_in_background/run_in_background_test.rb +122 -0
- data/test/run_in_background/test_app +57 -0
- metadata +272 -132
- data/lib/content_server/globals.rb +0 -10
data/bin/backup_server
CHANGED
|
@@ -7,13 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
# NOTE this file mainly is a copy of content_server
|
|
9
9
|
|
|
10
|
+
require 'content_server' #todo: yarondbb need it?
|
|
11
|
+
require 'content_server/backup_server' # specific backup server impl
|
|
12
|
+
require 'content_server/server' # shared file between content\backup
|
|
10
13
|
require 'log'
|
|
11
14
|
require 'params'
|
|
12
15
|
require 'run_in_background'
|
|
13
|
-
require 'content_server'
|
|
14
16
|
|
|
15
17
|
Params.init ARGV
|
|
16
18
|
Log.init
|
|
19
|
+
ContentServer.init_globals
|
|
17
20
|
|
|
18
21
|
Thread.abort_on_exception = true # TODO (genadyp) should be treated globally? by param for example.
|
|
19
22
|
|
|
@@ -21,28 +24,13 @@ retries = 0 # number of retries to run a server
|
|
|
21
24
|
|
|
22
25
|
begin
|
|
23
26
|
RunInBackground.run { ContentServer.run_backup_server }
|
|
24
|
-
rescue SystemExit, SignalException =>
|
|
27
|
+
rescue SystemExit, SignalException => exception
|
|
25
28
|
# TODO (genadyp) do we need to trap signals by types?
|
|
26
|
-
|
|
27
|
-
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
28
|
-
puts("Force writing local content data to #{Params['local_content_data_path']}.")
|
|
29
|
-
ContentServer::local_dynamic_content_data.last_content_data.to_file(ContentServer::tmp_content_data_file)
|
|
30
|
-
sleep(0.1) # Added to prevent mv access issue
|
|
31
|
-
::FileUtils.mv(ContentServer::tmp_content_data_file, Params['local_content_data_path'])
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Log.error("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
35
|
-
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
29
|
+
ContentServer.handle_program_termination(exception)
|
|
36
30
|
Log.flush
|
|
37
31
|
exit
|
|
38
|
-
rescue Exception =>
|
|
39
|
-
|
|
40
|
-
puts("Force writing local content data to #{Params['local_content_data_path']}.")
|
|
41
|
-
ContentServer::local_dynamic_content_data.last_content_data.to_file(ContentServer::tmp_content_data_file)
|
|
42
|
-
sleep(0.1) # Added to prevent mv access issue
|
|
43
|
-
::FileUtils.mv(ContentServer::tmp_content_data_file, Params['local_content_data_path'])
|
|
44
|
-
|
|
45
|
-
Log.error("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
32
|
+
rescue Exception => exception
|
|
33
|
+
ContentServer.handle_program_termination(exception)
|
|
46
34
|
if retries > 0
|
|
47
35
|
Log.debug1("Restarting (retries:#{retries}).")
|
|
48
36
|
else
|
data/bin/content_server
CHANGED
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
# The files in those directories are indexed (calculating their SHA1).
|
|
5
5
|
# Each unique content is backed up to the remote (backup) server.
|
|
6
6
|
|
|
7
|
+
require 'content_server' #todo: yarondbb need it?
|
|
8
|
+
require 'content_server/content_server' # specific content server impl
|
|
9
|
+
require 'content_server/server' # shared file between content\backup
|
|
7
10
|
require 'log'
|
|
8
11
|
require 'params'
|
|
9
12
|
require 'run_in_background'
|
|
10
|
-
require 'content_server'
|
|
11
13
|
|
|
12
14
|
Params.init ARGV
|
|
13
15
|
Log.init
|
|
16
|
+
ContentServer.init_globals
|
|
14
17
|
|
|
15
18
|
Thread.abort_on_exception = true # TODO (genadyp) should be treated globally? by param for example.
|
|
16
19
|
|
|
@@ -18,28 +21,13 @@ retries = 0 # number of retries to run a server
|
|
|
18
21
|
|
|
19
22
|
begin
|
|
20
23
|
RunInBackground.run { ContentServer.run_content_server }
|
|
21
|
-
rescue SystemExit, SignalException =>
|
|
24
|
+
rescue SystemExit, SignalException => exception
|
|
22
25
|
# TODO (genadyp) do we need to trap signals by types?
|
|
23
|
-
|
|
24
|
-
puts("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
25
|
-
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
26
|
-
puts("Force writing local content data to #{Params['local_content_data_path']}.")
|
|
27
|
-
ContentServer::local_dynamic_content_data.last_content_data.to_file(ContentServer::tmp_content_data_file)
|
|
28
|
-
sleep(0.1) # Added to prevent mv access issue
|
|
29
|
-
::FileUtils.mv(ContentServer::tmp_content_data_file, Params['local_content_data_path'])
|
|
30
|
-
|
|
31
|
-
Log.error("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
32
|
-
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
26
|
+
ContentServer.handle_program_termination(exception)
|
|
33
27
|
Log.flush
|
|
34
28
|
exit
|
|
35
|
-
rescue Exception =>
|
|
36
|
-
|
|
37
|
-
puts("Force writing local content data to #{Params['local_content_data_path']}.")
|
|
38
|
-
ContentServer::local_dynamic_content_data.last_content_data.to_file(ContentServer::tmp_content_data_file)
|
|
39
|
-
sleep(0.1) # Added to prevent mv access issue
|
|
40
|
-
::FileUtils.mv(ContentServer::tmp_content_data_file, Params['local_content_data_path'])
|
|
41
|
-
|
|
42
|
-
Log.error("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
29
|
+
rescue Exception => exception
|
|
30
|
+
ContentServer.handle_program_termination(exception)
|
|
43
31
|
if retries > 0
|
|
44
32
|
Log.debug1("Restarting (retries:#{retries}).")
|
|
45
33
|
else
|
data/bin/testing_memory
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Runs a memory test:
|
|
4
|
+
# 1. Run content server or backup server
|
|
5
|
+
# 2. Generate files.
|
|
6
|
+
# 3. Monitor files.
|
|
7
|
+
# 4. Index files.
|
|
8
|
+
# 5. Report memory of process at different phases\times
|
|
9
|
+
# Examples:
|
|
10
|
+
# testing_server --conf_file=~/.bbfs/etc/backup_testing_memory.yml --server_to_test=backup
|
|
11
|
+
# testing_server --conf_file=~/.bbfs/etc/content_testing_memory.yml --server_to_test=content
|
|
12
|
+
|
|
13
|
+
# TODO add command line help/usage
|
|
14
|
+
|
|
15
|
+
require 'params'
|
|
16
|
+
require 'run_in_background'
|
|
17
|
+
require 'testing_memory/testing_memory'
|
|
18
|
+
|
|
19
|
+
Params.string('server_to_test', nil, 'Server that will be run under test_server. Values are: content, backup')
|
|
20
|
+
|
|
21
|
+
Params.init ARGV
|
|
22
|
+
Log.init
|
|
23
|
+
ContentServer.init_globals
|
|
24
|
+
|
|
25
|
+
Thread.abort_on_exception = true
|
|
26
|
+
|
|
27
|
+
retries = 0 # number of retries to run a server
|
|
28
|
+
|
|
29
|
+
begin
|
|
30
|
+
case Params['server_to_test']
|
|
31
|
+
when 'content'
|
|
32
|
+
RunInBackground.run { TestingMemory.run_content_memory_server }
|
|
33
|
+
when 'backup'
|
|
34
|
+
RunInBackground.run { TestingMemory.run_backup_memory_server }
|
|
35
|
+
else
|
|
36
|
+
raise ArgumentError.new "Incorrect server_to_test parameter value: #{Params['server_to_test']}"
|
|
37
|
+
end
|
|
38
|
+
retries -=1
|
|
39
|
+
|
|
40
|
+
rescue SystemExit, SignalException => exc
|
|
41
|
+
# TODO (genadyp) do we need to trap signals by types?
|
|
42
|
+
puts("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
43
|
+
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
44
|
+
Log.error("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
45
|
+
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
46
|
+
Log.flush
|
|
47
|
+
exit
|
|
48
|
+
rescue Exception => exc
|
|
49
|
+
puts("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n" +
|
|
50
|
+
"#{exc.backtrace.join("\n")}")
|
|
51
|
+
Log.error("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n" +
|
|
52
|
+
"#{exc.backtrace.join("\n")}")
|
|
53
|
+
if retries > 0
|
|
54
|
+
Log.debug1("Restarting (retries:#{retries}).")
|
|
55
|
+
else
|
|
56
|
+
Log.debug1("Exiting...")
|
|
57
|
+
Log.flush
|
|
58
|
+
end
|
|
59
|
+
retries -= 1
|
|
60
|
+
end while retries >= 0
|
data/bin/testing_server
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# Runs content server. This server monitors a set of directories (blobs/patterns).
|
|
4
|
+
# The files in those directories are indexed (calculating their SHA1).
|
|
5
|
+
# Each unique content is backed up to the remote (backup) server.
|
|
6
|
+
# How to run on content side:
|
|
7
|
+
# testing_server --conf_file=~/.bbfs/etc/content_testing_server.yml --server_to_test=content
|
|
8
|
+
# How to run on backup side:
|
|
9
|
+
# testing_server --conf_file=~/.bbfs/etc/backup_testing_server.yml --server_to_test=backup
|
|
10
|
+
|
|
11
|
+
# TODO add command line help/usage
|
|
12
|
+
|
|
13
|
+
require 'params'
|
|
14
|
+
require 'run_in_background'
|
|
15
|
+
require 'testing_server'
|
|
16
|
+
|
|
17
|
+
Params.string('server_to_test', nil, 'Server that will be run under test_server. Values are: content, backup')
|
|
18
|
+
|
|
19
|
+
Params.init ARGV
|
|
20
|
+
Log.init
|
|
21
|
+
ContentServer.init_globals
|
|
22
|
+
|
|
23
|
+
Thread.abort_on_exception = true
|
|
24
|
+
|
|
25
|
+
retries = 0 # number of retries to run a server
|
|
26
|
+
|
|
27
|
+
begin
|
|
28
|
+
case Params['server_to_test']
|
|
29
|
+
when 'content'
|
|
30
|
+
RunInBackground.run { TestingServer.run_content_testing_server }
|
|
31
|
+
when 'backup'
|
|
32
|
+
RunInBackground.run { TestingServer.run_backup_testing_server }
|
|
33
|
+
else
|
|
34
|
+
raise ArgumentError.new "Incorrect server_to_test parameter value: #{Params['server_to_test']}"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
rescue SystemExit, SignalException => exc
|
|
38
|
+
# TODO (genadyp) do we need to trap signals by types?
|
|
39
|
+
puts("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
40
|
+
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
41
|
+
Log.error("Interrupt or Exit happened in #{Params['service_name']} server: #{exc.class}, " +
|
|
42
|
+
"stopping process.\nBacktrace:\n#{exc.backtrace.join("\n")}")
|
|
43
|
+
Log.flush
|
|
44
|
+
exit
|
|
45
|
+
rescue Exception => exc
|
|
46
|
+
puts("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n" +
|
|
47
|
+
"#{exc.backtrace.join("\n")}")
|
|
48
|
+
Log.error("Exception happened in #{Params['service_name']} server: #{exc.class}:#{exc.message}\nBacktrace:\n" +
|
|
49
|
+
"#{exc.backtrace.join("\n")}")
|
|
50
|
+
if retries > 0
|
|
51
|
+
Log.debug1("Restarting (retries:#{retries}).")
|
|
52
|
+
else
|
|
53
|
+
Log.debug1("Exiting...")
|
|
54
|
+
Log.flush
|
|
55
|
+
end
|
|
56
|
+
retries -= 1
|
|
57
|
+
end while retries >= 0
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# This extension used to install platform specific gem dependencies
|
|
2
|
+
# for more information:
|
|
3
|
+
# http://stackoverflow.com/questions/4596606/rubygems-how-do-i-add-platform-specific-dependency/10249133#10249133
|
|
4
|
+
# https://github.com/openshift/os-client-tools/blob/master/express/ext/mkrf_conf.rb
|
|
5
|
+
|
|
6
|
+
require 'rubygems'
|
|
7
|
+
require 'rubygems/command.rb'
|
|
8
|
+
require 'rubygems/dependency_installer.rb'
|
|
9
|
+
#begin
|
|
10
|
+
#Gem::Command.build_args = ARGV
|
|
11
|
+
#rescue NoMethodError
|
|
12
|
+
#end
|
|
13
|
+
inst = Gem::DependencyInstaller.new
|
|
14
|
+
begin
|
|
15
|
+
if Gem::win_platform?
|
|
16
|
+
if Gem::Specification.find_all_by_name('sys-uname').empty?
|
|
17
|
+
inst.install 'sys-uname'
|
|
18
|
+
end
|
|
19
|
+
if Gem::Specification.find_all_by_name('win32-service').empty?
|
|
20
|
+
inst.install 'win32-service'
|
|
21
|
+
end
|
|
22
|
+
else
|
|
23
|
+
if Gem::Specification.find_all_by_name('daemons').empty?
|
|
24
|
+
inst.install 'daemons'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
rescue Exception => e
|
|
28
|
+
puts e.to_s
|
|
29
|
+
exit(1)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
|
|
33
|
+
f.write("task :default\n")
|
|
34
|
+
f.close
|