mongo_test_server 0.0.3 → 0.0.4
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.
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module MongoTestServer
|
4
|
+
class MongoTestServerRailtie < ::Rails::Railtie #:nodoc:
|
5
|
+
config.before_initialize do
|
6
|
+
if Rails.env.test?
|
7
|
+
$stderr.puts "MongoTestServer: starting..."
|
8
|
+
app_name = ENV['APP_NAME'] || Rails.application.class.to_s.split("::").first.downcase
|
9
|
+
config_file = File.expand_path(File.join(Rails.root, 'config', 'mongoid.yml'))
|
10
|
+
mongoid_options = YAML.load(ERB.new(File.read(config_file)).result)[ENV['RAILS_ENV']]
|
11
|
+
port = mongoid_options['sessions']['default']['hosts'].first.split(':').last.to_i
|
12
|
+
MongoTestServer::Mongod.configure do |server|
|
13
|
+
server.name = app_name
|
14
|
+
server.port = port
|
15
|
+
server.path = `which mongod`.chomp
|
16
|
+
end
|
17
|
+
MongoTestServer::Mongod.server.start
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/mongo_test_server.rb
CHANGED
@@ -10,6 +10,11 @@ require 'yaml'
|
|
10
10
|
require 'tempfile'
|
11
11
|
require "mongo_test_server/version"
|
12
12
|
|
13
|
+
if defined?(Rails)
|
14
|
+
require 'mongo_test_server/railtie'
|
15
|
+
require 'mongo_test_server/engine'
|
16
|
+
end
|
17
|
+
|
13
18
|
module MongoTestServer
|
14
19
|
|
15
20
|
class Mongod
|
@@ -47,6 +52,7 @@ module MongoTestServer
|
|
47
52
|
attr_writer :path
|
48
53
|
attr_writer :name
|
49
54
|
attr_reader :mongo_instance_id
|
55
|
+
attr_reader :use_ram_disk
|
50
56
|
|
51
57
|
def initialize(port=nil, name=nil, path=nil)
|
52
58
|
self.port = port
|
@@ -59,6 +65,38 @@ module MongoTestServer
|
|
59
65
|
self.started = false
|
60
66
|
end
|
61
67
|
|
68
|
+
def use_ram_disk=(bool)
|
69
|
+
if bool && (`which hdiutil`!='')
|
70
|
+
@use_ram_disk = true
|
71
|
+
else
|
72
|
+
$stderr.puts "MongoTestServer: can't use a ram disk on this system"
|
73
|
+
@use_ram_disk = false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def use_ram_disk?
|
78
|
+
@use_ram_disk
|
79
|
+
end
|
80
|
+
|
81
|
+
def ram_disk_name
|
82
|
+
@ram_disk_name ||= "mongodb-ram-#{self.name}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def setup_ram_disk
|
86
|
+
@ram_disk_device = `hdiutil attach -nomount ram://1000000`.chomp
|
87
|
+
`diskutil erasevolume HFS+ #{ram_disk_name} #{@ram_disk_device}`
|
88
|
+
ram_disk_mount
|
89
|
+
end
|
90
|
+
|
91
|
+
def ram_disk_mount
|
92
|
+
"/Volumes/#{ram_disk_name}"
|
93
|
+
end
|
94
|
+
|
95
|
+
def teardown_ram_disk
|
96
|
+
`umount #{ram_disk_mount} 2> /dev/null`
|
97
|
+
`hdiutil detach #{@ram_disk_device} 2> /dev/null`
|
98
|
+
end
|
99
|
+
|
62
100
|
def mongo_log
|
63
101
|
"#{mongo_dir}/mongo_log"
|
64
102
|
end
|
@@ -76,7 +114,22 @@ module MongoTestServer
|
|
76
114
|
end
|
77
115
|
|
78
116
|
def mongo_dir
|
79
|
-
@mongo_dir ||=
|
117
|
+
@mongo_dir ||= lambda {
|
118
|
+
if self.use_ram_disk?
|
119
|
+
$stderr.puts "MongoTestServer: using ramdisk"
|
120
|
+
setup_ram_disk
|
121
|
+
else
|
122
|
+
"/tmp/#{self.name}_mongo_testserver_#{@mongo_instance_id}"
|
123
|
+
end
|
124
|
+
}.call
|
125
|
+
end
|
126
|
+
|
127
|
+
def remove_mongo_dir
|
128
|
+
if self.use_ram_disk?
|
129
|
+
teardown_ram_disk
|
130
|
+
else
|
131
|
+
FileUtils.rm_rf self.mongo_dir
|
132
|
+
end
|
80
133
|
end
|
81
134
|
|
82
135
|
def mongo_cmd_line
|
@@ -84,7 +137,7 @@ module MongoTestServer
|
|
84
137
|
end
|
85
138
|
|
86
139
|
def prepare
|
87
|
-
|
140
|
+
remove_mongo_dir
|
88
141
|
FileUtils.mkdir_p self.mongo_dir
|
89
142
|
end
|
90
143
|
|
@@ -205,7 +258,7 @@ module MongoTestServer
|
|
205
258
|
self.killed = true
|
206
259
|
self.started = false
|
207
260
|
mongo_pids.each { |ppid| `kill -9 #{ppid} 2> /dev/null` }
|
208
|
-
|
261
|
+
remove_mongo_dir
|
209
262
|
self
|
210
263
|
end
|
211
264
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo_test_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongo
|
@@ -89,6 +89,8 @@ files:
|
|
89
89
|
- README.md
|
90
90
|
- Rakefile
|
91
91
|
- lib/mongo_test_server.rb
|
92
|
+
- lib/mongo_test_server/engine.rb
|
93
|
+
- lib/mongo_test_server/railtie.rb
|
92
94
|
- lib/mongo_test_server/version.rb
|
93
95
|
- mongo_test_server.gemspec
|
94
96
|
- spec/mongo_test_server/mongo_test_server_spec.rb
|