quality-measure-engine 1.1.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.gitignore +12 -0
  2. data/.travis.yml +16 -0
  3. data/Gemfile +5 -21
  4. data/Gemfile.lock +126 -0
  5. data/LICENSE.txt +13 -0
  6. data/README.md +23 -44
  7. data/Rakefile +6 -29
  8. data/lib/qme/bundle/bundle.rb +34 -0
  9. data/lib/qme/bundle/importer.rb +69 -0
  10. data/lib/qme/database_access.rb +7 -11
  11. data/lib/qme/map/map_reduce_builder.rb +4 -1
  12. data/lib/qme/map/map_reduce_executor.rb +55 -43
  13. data/lib/qme/map/measure_calculation_job.rb +24 -23
  14. data/lib/qme/quality_measure.rb +5 -5
  15. data/lib/qme/quality_report.rb +37 -19
  16. data/lib/qme/railtie.rb +7 -0
  17. data/lib/qme/tasks/bundle.rake +14 -0
  18. data/lib/qme/version.rb +3 -0
  19. data/lib/quality-measure-engine.rb +13 -25
  20. data/quality-measure-engine.gemspec +28 -0
  21. data/test/fixtures/bundles/just_measure_0002.zip +0 -0
  22. data/test/fixtures/delayed_backend_mongoid_jobs/queued_job.json +9 -0
  23. data/test/fixtures/measures/measure_metadata.json +52 -0
  24. data/test/fixtures/records/barry_berry.json +471 -0
  25. data/test/fixtures/records/billy_jones_ipp.json +78 -0
  26. data/test/fixtures/records/jane_jones_numerator.json +120 -0
  27. data/test/fixtures/records/jill_jones_denominator.json +78 -0
  28. data/test/simplecov_setup.rb +18 -0
  29. data/test/test_helper.rb +26 -0
  30. data/test/unit/qme/map/map_reduce_builder_test.rb +38 -0
  31. data/test/unit/qme/map/map_reduce_executor_test.rb +56 -0
  32. data/test/unit/qme/map/measure_calculation_job_test.rb +22 -0
  33. data/test/unit/qme/quality_measure_test.rb +14 -0
  34. data/{spec/qme/quality_report_spec.rb → test/unit/qme/quality_report_test.rb} +32 -20
  35. metadata +91 -115
  36. data/VERSION +0 -1
  37. data/js/map_reduce_utils.js +0 -173
  38. data/js/underscore_min.js +0 -25
  39. data/lib/qme/ext/record.rb +0 -43
  40. data/lib/qme/importer/entry.rb +0 -126
  41. data/lib/qme/importer/generic_importer.rb +0 -117
  42. data/lib/qme/importer/measure_properties_generator.rb +0 -39
  43. data/lib/qme/importer/property_matcher.rb +0 -110
  44. data/lib/qme/measure/database_loader.rb +0 -83
  45. data/lib/qme/measure/measure_loader.rb +0 -174
  46. data/lib/qme/measure/properties_builder.rb +0 -184
  47. data/lib/qme/measure/properties_converter.rb +0 -27
  48. data/lib/qme/randomizer/patient_randomization_job.rb +0 -47
  49. data/lib/qme/randomizer/patient_randomizer.rb +0 -250
  50. data/lib/qme/randomizer/random_patient_creator.rb +0 -47
  51. data/lib/qme_test.rb +0 -13
  52. data/lib/tasks/fixtures.rake +0 -91
  53. data/lib/tasks/measure.rake +0 -110
  54. data/lib/tasks/mongo.rake +0 -68
  55. data/lib/tasks/patient_random.rake +0 -45
  56. data/spec/qme/bundle_spec.rb +0 -37
  57. data/spec/qme/importer/generic_importer_spec.rb +0 -73
  58. data/spec/qme/importer/measure_properties_generator_spec.rb +0 -15
  59. data/spec/qme/importer/property_matcher_spec.rb +0 -174
  60. data/spec/qme/map/map_reduce_builder_spec.rb +0 -38
  61. data/spec/qme/map/measures_spec.rb +0 -38
  62. data/spec/qme/map/patient_mapper_spec.rb +0 -11
  63. data/spec/qme/measure_loader_spec.rb +0 -12
  64. data/spec/qme/properties_builder_spec.rb +0 -61
  65. data/spec/spec_helper.rb +0 -120
  66. data/spec/validate_measures_spec.rb +0 -21
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ .bundle
2
+ *.DS_Store
3
+ vendor
4
+ nbproject
5
+ pkg
6
+ .redcar
7
+ doc
8
+ .yardoc
9
+ coverage*
10
+ tmp*
11
+ dump.rdb
12
+
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ script: bundle exec rake spec
5
+ services:
6
+ - mongodb
7
+ notifications:
8
+ email:
9
+ recipients:
10
+ - healthcare-ci@googlegroups.com
11
+ on_failure: change
12
+
13
+ branches:
14
+ only:
15
+ - master
16
+ - develop
data/Gemfile CHANGED
@@ -1,23 +1,7 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gemspec :development_group => :test
3
+ # Specify your gem's dependencies in quality-measure-engine.gemspec
4
+ gemspec
4
5
 
5
- gem 'mongo', '1.5.1'
6
- gem 'bson_ext', '1.5.1', :platforms => :mri
7
- gem 'rake'
8
- #gem 'pry', :require => true
9
- #gem 'health-data-standards', :git => 'https://github.com/projectcypress/health-data-standards.git', :branch => 'develop'
10
- gem 'health-data-standards', '1.0.1'
11
-
12
- # does not work with redis 3.0
13
- gem 'redis', '~> 2.2.2'
14
-
15
- group :test do
16
- gem 'cover_me', '>= 1.0.0.rc5', :platforms => :ruby_19
17
- gem 'sinatra'
18
- end
19
-
20
- group :build do
21
- gem 'yard'
22
- gem 'kramdown' # needed by yard
23
- end
6
+ gem 'pry'
7
+ gem 'pry-nav'
data/Gemfile.lock ADDED
@@ -0,0 +1,126 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ quality-measure-engine (2.0.0)
5
+ delayed_job_mongoid (~> 2.0.0)
6
+ mongoid (~> 3.0.9)
7
+ moped (~> 1.2.7)
8
+ rubyzip (~> 0.9.9)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actionmailer (3.2.8)
14
+ actionpack (= 3.2.8)
15
+ mail (~> 2.4.4)
16
+ actionpack (3.2.8)
17
+ activemodel (= 3.2.8)
18
+ activesupport (= 3.2.8)
19
+ builder (~> 3.0.0)
20
+ erubis (~> 2.7.0)
21
+ journey (~> 1.0.4)
22
+ rack (~> 1.4.0)
23
+ rack-cache (~> 1.2)
24
+ rack-test (~> 0.6.1)
25
+ sprockets (~> 2.1.3)
26
+ activemodel (3.2.8)
27
+ activesupport (= 3.2.8)
28
+ builder (~> 3.0.0)
29
+ activerecord (3.2.8)
30
+ activemodel (= 3.2.8)
31
+ activesupport (= 3.2.8)
32
+ arel (~> 3.0.2)
33
+ tzinfo (~> 0.3.29)
34
+ activeresource (3.2.8)
35
+ activemodel (= 3.2.8)
36
+ activesupport (= 3.2.8)
37
+ activesupport (3.2.8)
38
+ i18n (~> 0.6)
39
+ multi_json (~> 1.0)
40
+ arel (3.0.2)
41
+ builder (3.0.4)
42
+ coderay (1.0.8)
43
+ delayed_job (3.0.3)
44
+ activesupport (~> 3.0)
45
+ delayed_job_mongoid (2.0.0)
46
+ delayed_job (~> 3.0)
47
+ mongoid (~> 3.0)
48
+ erubis (2.7.0)
49
+ hike (1.2.1)
50
+ i18n (0.6.1)
51
+ journey (1.0.4)
52
+ json (1.7.5)
53
+ mail (2.4.4)
54
+ i18n (>= 0.4.0)
55
+ mime-types (~> 1.16)
56
+ treetop (~> 1.4.8)
57
+ method_source (0.8.1)
58
+ mime-types (1.19)
59
+ minitest (4.1.0)
60
+ mongoid (3.0.10)
61
+ activemodel (~> 3.1)
62
+ moped (~> 1.1)
63
+ origin (~> 1.0)
64
+ tzinfo (~> 0.3.22)
65
+ moped (1.2.7)
66
+ multi_json (1.3.6)
67
+ origin (1.0.9)
68
+ polyglot (0.3.3)
69
+ pry (0.9.10)
70
+ coderay (~> 1.0.5)
71
+ method_source (~> 0.8)
72
+ slop (~> 3.3.1)
73
+ pry-nav (0.2.2)
74
+ pry (~> 0.9.10)
75
+ rack (1.4.1)
76
+ rack-cache (1.2)
77
+ rack (>= 0.4)
78
+ rack-ssl (1.3.2)
79
+ rack
80
+ rack-test (0.6.2)
81
+ rack (>= 1.0)
82
+ rails (3.2.8)
83
+ actionmailer (= 3.2.8)
84
+ actionpack (= 3.2.8)
85
+ activerecord (= 3.2.8)
86
+ activeresource (= 3.2.8)
87
+ activesupport (= 3.2.8)
88
+ bundler (~> 1.0)
89
+ railties (= 3.2.8)
90
+ railties (3.2.8)
91
+ actionpack (= 3.2.8)
92
+ activesupport (= 3.2.8)
93
+ rack-ssl (~> 1.3.2)
94
+ rake (>= 0.8.7)
95
+ rdoc (~> 3.4)
96
+ thor (>= 0.14.6, < 2.0)
97
+ rake (0.9.2.2)
98
+ rdoc (3.12)
99
+ json (~> 1.4)
100
+ rubyzip (0.9.9)
101
+ simplecov (0.7.1)
102
+ multi_json (~> 1.0)
103
+ simplecov-html (~> 0.7.1)
104
+ simplecov-html (0.7.1)
105
+ slop (3.3.3)
106
+ sprockets (2.1.3)
107
+ hike (~> 1.2)
108
+ rack (~> 1.0)
109
+ tilt (~> 1.1, != 1.3.0)
110
+ thor (0.16.0)
111
+ tilt (1.3.3)
112
+ treetop (1.4.12)
113
+ polyglot
114
+ polyglot (>= 0.3.1)
115
+ tzinfo (0.3.34)
116
+
117
+ PLATFORMS
118
+ ruby
119
+
120
+ DEPENDENCIES
121
+ minitest (~> 4.1.0)
122
+ pry
123
+ pry-nav
124
+ quality-measure-engine!
125
+ rails (~> 3.2.8)
126
+ simplecov (~> 0.7.1)
data/LICENSE.txt ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2012 The MITRE Corporation
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md CHANGED
@@ -1,14 +1,7 @@
1
- This project is a library designed to calculate clinical quality measures over a given population. Quality measures are described via JSON and provide the details on what information is needed from a patient record to calculate a quality measure. The logic of the measure is described in JavaScript using the MapReduce algorithmic framework.
2
-
3
- Usage
4
- =====
5
-
6
- Extracting Measure Data from a HITSP C32
7
- ----------------------------------------
8
-
9
- Each quality measure will need to extract specific information from a HITSP C32 for calculation. First, for each quality measure, a QME::Importer::GenericImporter should be created by passing in the JSON definition of the quality measure.
1
+ Quality Measure Engine
2
+ ----------------------
10
3
 
11
- Next, an instance of QME::Importer::PatientImporter should be obtained by calling instance (it follows the singleton pattern). Add the GenericImporters for each desired measure with the add measure method. Finally, you can get a JSON representation of a patient record with the necessary information extracted by calling parse_c32.
4
+ This project is a library designed to calculate clinical quality measures over a given population. Quality measures are described via JSON and provide the details on what information is needed from a patient record to calculate a quality measure. The logic of the measure is described in JavaScript using the MapReduce algorithmic framework.
12
5
 
13
6
  Calculating Quality Measures
14
7
  ----------------------------
@@ -18,7 +11,7 @@ Results of quality measures are represented by QME::QualityReport. This class pr
18
11
  Environment
19
12
  ===========
20
13
 
21
- This project currently uses Ruby 1.9.2 and is built using [Bundler](http://gembundler.com/). To get all of the dependencies for the project, first install bundler:
14
+ This project currently uses Ruby 1.9.3 and is built using [Bundler](http://gembundler.com/). To get all of the dependencies for the project, first install bundler:
22
15
 
23
16
  gem install bundler
24
17
 
@@ -26,7 +19,7 @@ Then run bundler to grab all of the necessary gems:
26
19
 
27
20
  bundle install
28
21
 
29
- The Quality Measure engine relies on a MongoDB [MongoDB](http://www.mongodb.org/) running a minimum of version 1.8.* or higher. To get and install Mongo refer to:
22
+ The Quality Measure engine relies on a MongoDB [MongoDB](http://www.mongodb.org/) running a minimum of version 2.2.* or higher. To get and install Mongo refer to:
30
23
 
31
24
  http://www.mongodb.org/display/DOCS/Quickstart
32
25
 
@@ -46,44 +39,30 @@ QME::QualityReport will kick off background jobs with Resque. For these jobs to
46
39
  Testing
47
40
  =======
48
41
 
49
- This project uses [RSpec](http://github.com/rspec/rspec-core) for testing. To run the suite, just enter the following:
50
-
51
- bundle exec rake spec
52
-
53
- The coverage of the test suite is monitored with [cover_me](https://github.com/markbates/cover_me) and can be run with:
54
-
55
- bundle exec rake coverage
42
+ This project uses [minitest](https://github.com/seattlerb/minitest) for testing. To run the suite, just enter the following:
56
43
 
57
- Map Reduce Testing
58
- ------------------
44
+ bundle exec rake test
59
45
 
60
- This project used the [MapReduce](http://www.mongodb.org/display/DOCS/MapReduce) functionality of MongoDB pretty heavily.
61
- Debugging JavaScript that is to be run inside of MongoDB can be a bit of a chore, so there is a testing tool that can be run
62
- in your browser to aid in troubleshooting.
46
+ The coverage of the test suite is monitored with [cover_me](https://github.com/markbates/cover_me). You can see the code coverage by looking in the coverage directory after running the test suite
63
47
 
64
- The tool is a very small web application based on the [Sinatra](http://www.sinatrarb.com/) framework. It can be run
65
- by executing the following command:
66
-
67
- bundle exec ruby map_test/map_test.rb
68
-
69
- After running this command, you can open your browser to [http://localhost:4567](http://localhost:4567). This will show you a page
70
- of measures to choose from. Once you have selected a measure, it will take you to a page where you can choose the map function you
71
- want to test and the effective date you want to run the function with. Once that is selected, you will arrive at the map test page.
72
- The map test page provides the ability to load test JSON records from within the project. Once they are loaded, they can be edited
73
- in the textarea on the page. Finally, if you click the "run" button, it will execute the map function on the record in the text area
74
- and output the results. Since this is executing in a web browser, you can use the JavaScript debugging utilities provided to set
75
- breakpoints and inspect variables.
48
+ Project Practices
49
+ =================
76
50
 
77
- Source Code Analysis
78
- --------------------
51
+ Please try to follow our [Coding Style Guides](http://github.com/eedrummer/styleguide). Additionally, we will be using git in a pattern similar to [Vincent Driessen's workflow](http://nvie.com/posts/a-successful-git-branching-model/). While feature branches are encouraged, they are not required to work on the project.
79
52
 
80
- This project uses [metric_fu](http://metric-fu.rubyforge.org/) for source code analysis. Reports can be run with:
53
+ License
54
+ =======
81
55
 
82
- bundle exec rake metrics:all
56
+ Copyright 2012 The MITRE Corporation
83
57
 
84
- The project is currently configured to run Flay, Flog, Churn, Reek and Roodi
58
+ Licensed under the Apache License, Version 2.0 (the "License");
59
+ you may not use this file except in compliance with the License.
60
+ You may obtain a copy of the License at
85
61
 
86
- Project Practices
87
- =================
62
+ http://www.apache.org/licenses/LICENSE-2.0
88
63
 
89
- Please try to follow our [Coding Style Guides](http://github.com/eedrummer/styleguide). Additionally, we will be using git in a pattern similar to [Vincent Driessen's workflow](http://nvie.com/posts/a-successful-git-branching-model/). While feature branches are encouraged, they are not required to work on the project.
64
+ Unless required by applicable law or agreed to in writing, software
65
+ distributed under the License is distributed on an "AS IS" BASIS,
66
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
67
+ See the License for the specific language governing permissions and
68
+ limitations under the License.
data/Rakefile CHANGED
@@ -1,31 +1,8 @@
1
- require 'rspec/core/rake_task'
2
- require 'yard'
3
- require 'resque/tasks'
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
4
3
 
5
- ENV['MEASURE_DIR'] = ENV['MEASURE_DIR'] || File.join('fixtures', 'measure_defs')
6
- ENV['MEASURE_PROPS'] = ENV['MEASURE_PROPS'] || File.join('fixtures', 'measure_props')
7
-
8
- Dir['lib/tasks/*.rake'].sort.each do |ext|
9
- load ext
10
- end
11
-
12
- RSpec::Core::RakeTask.new do |t|
13
- t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
14
- t.pattern = 'spec/**/*_spec.rb'
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ t.verbose = true
15
8
  end
16
-
17
- YARD::Rake::YardocTask.new
18
-
19
- namespace :cover_me do
20
-
21
- task :report do
22
- require 'cover_me'
23
- CoverMe.complete!
24
- end
25
-
26
- end
27
-
28
- task :coverage do
29
- Rake::Task['spec'].invoke
30
- Rake::Task['cover_me:report'].invoke
31
- end
@@ -0,0 +1,34 @@
1
+ module QME
2
+ module Bundle
3
+ # Delete a list of collections. By default, this function drops all of collections related to measures and patients.
4
+ #
5
+ # @param [Array] collection_names Optionally, an array of collection names to be dropped.
6
+ def self.drop_collections(db, collection_names=[])
7
+ collection_names = ["bundles", "records", "measures", "selected_measures", "patient_cache", "query_cache", "system.js"] if collection_names.empty?
8
+ collection_names.each {|collection| db[collection].drop}
9
+ end
10
+
11
+ # Save a javascript function into Mongo's system.js collection for measure execution.
12
+ #
13
+ # @param [String] name The name by which the function will be referred.
14
+ # @param [String] fn The body of the function being saved.
15
+ def self.save_system_js_fn(db, name, fn)
16
+ fn = "function () {\n #{fn} \n }"
17
+ db['system.js'].find('_id' => name).upsert(
18
+ {
19
+ "_id" => name,
20
+ "value" => Moped::BSON::Code.new(fn)
21
+ }
22
+ )
23
+ end
24
+
25
+ # A utility function for finding files in a bundle. Strip a file path of it's extension and just give the filename.
26
+ #
27
+ # @param [String] original A file path.
28
+ # @param [String] extension A file extension.
29
+ # @return The filename at the end of the original String path with the extension removed. e.g. "/boo/urns.html" -> "urns"
30
+ def self.entry_key(original, extension)
31
+ original.split('/').last.gsub(".#{extension}", '')
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,69 @@
1
+ module QME
2
+ module Bundle
3
+ class Importer
4
+ include QME::DatabaseAccess
5
+
6
+ # Create a new Importer.
7
+ # @param [String] db_name the name of the database to use
8
+ def initialize(db_name = nil)
9
+ determine_connection_information(db_name)
10
+ @db = get_db
11
+ end
12
+
13
+ # Import a quality bundle into the database. This includes metadata, measures, test patients, supporting JS libraries, and expected results.
14
+ #
15
+ # @param [File] zip The bundle zip file.
16
+ # @param [Boolean] keep_existing If true, delete all current collections related to patients and measures.
17
+ def import(zip, delete_existing)
18
+ Bundle.drop_collections(@db) if delete_existing
19
+
20
+ # Unpack content from the bundle.
21
+ bundle_contents = { bundle: nil, measures: {}, patients: {}, extensions: {}, results: {} }
22
+ Zip::ZipFile.open(zip.path) do |zipfile|
23
+ zipfile.entries.each do |entry|
24
+ bundle_contents[:bundle] = zipfile.read(entry.name) if entry.name.include? "bundle"
25
+ bundle_contents[:measures][Bundle.entry_key(entry.name, "json")] = zipfile.read(entry.name) if entry.name.match /^measures.*\.json$/
26
+ bundle_contents[:patients][Bundle.entry_key(entry.name, "json")] = zipfile.read(entry.name) if entry.name.match /^patients.*\.json$/ # Only need to import one of the formats
27
+ bundle_contents[:extensions][Bundle.entry_key(entry.name,"js")] = zipfile.read(entry.name) if entry.name.match /^library_functions/
28
+ bundle_contents[:results][Bundle.entry_key(entry.name,"json")] = zipfile.read(entry.name) if entry.name.match /^results/
29
+ end
30
+ end
31
+
32
+ # Store all JS libraries.
33
+ bundle_contents[:extensions].each do |key, contents|
34
+ Bundle.save_system_js_fn(@db, key, contents)
35
+ end
36
+
37
+ # Store the bundle metadata.
38
+ bundle_id = Moped::BSON::ObjectId.new()
39
+ bundle = JSON.parse(bundle_contents[:bundle])
40
+ bundle["_id"] = bundle_id
41
+ @db['bundles'].insert(bundle)
42
+
43
+ # Store all measures.
44
+ bundle_contents[:measures].each do |key, contents|
45
+ measure_id = Moped::BSON::ObjectId.new()
46
+ measure = JSON.parse(contents, {:max_nesting => 100})
47
+ measure['_id'] = measure_id
48
+ measure['bundle'] = bundle_id
49
+ @db['measures'].insert(measure)
50
+ end
51
+
52
+ # Store all patients.
53
+ bundle_id = Moped::BSON::ObjectId(bundle_id.to_s)
54
+ bundle_contents[:patients].each do |key, contents|
55
+ patient = JSON.parse(contents, {:max_nesting => 100})
56
+ patient['bundle'] = bundle_id
57
+ Record.new(patient).save
58
+ end
59
+
60
+ # Store the expected results into the query and patient caches.
61
+ bundle_contents[:results].each do |name, contents|
62
+ collection = name == "by_patient" ? "patient_cache" : "query_cache"
63
+ contents = JSON.parse(contents, {:max_nesting => 100})
64
+ contents.each {|document| @db[collection].insert(document)}
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -10,22 +10,18 @@ module QME
10
10
  @db_host = ENV['TEST_DB_HOST'] || 'localhost'
11
11
  @db_port = ENV['TEST_DB_PORT'] ? ENV['TEST_DB_PORT'].to_i : 27017
12
12
  end
13
-
14
- # Directly inject an instance of a database
15
- # @param [Mongo::Database] db the database that you would like the object to use
16
- def inject_db(db)
17
- @db = db
18
- end
19
13
 
20
14
  # Lazily creates a connection to the database and initializes the
21
15
  # JavaScript environment
22
- # @return [Mongo::Connection]
16
+ # @return [Moped::Session]
23
17
  def get_db
24
18
  if @db == nil
25
- @db = Mongo::Connection.new(@db_host, @db_port).db(@db_name)
26
- end
27
- Mongoid.configure do |config|
28
- config.master = Mongo::Connection.new(@db_host, @db_port).db(@db_name)
19
+ if @db_name==nil || @db_host==nil || @db_port==nil
20
+ determine_connection_information()
21
+ end
22
+
23
+ @db = Moped::Session.new(["#{@db_host}:#{@db_port}"])
24
+ @db.use(@db_name)
29
25
  end
30
26
 
31
27
  @db