|
5 | 5 | class SpecConfig
|
6 | 6 | include Singleton
|
7 | 7 |
|
| 8 | + DEFAULT_MONGODB_URI = "mongodb://127.0.0.1:27017" |
| 9 | + |
8 | 10 | def initialize
|
9 | 11 | if ENV['MONGODB_URI']
|
10 | 12 | @uri_str = ENV['MONGODB_URI']
|
11 |
| - @uri = Mongo::URI.new(@uri_str) |
12 |
| - end |
13 |
| - end |
14 |
| - |
15 |
| - attr_reader :uri_str |
16 |
| - attr_reader :uri |
17 |
| - |
18 |
| - def addresses |
19 |
| - if @uri |
20 |
| - @uri.servers |
21 | 13 | else
|
22 | 14 | STDERR.puts "Environment variable 'MONGODB_URI' is not set, so the default url will be used."
|
23 | 15 | STDERR.puts "This may lead to unexpected test failures because service discovery will raise unexpected warnings."
|
24 | 16 | STDERR.puts "Please consider providing the correct uri via MONGODB_URI environment variable."
|
25 |
| - ['127.0.0.1:27017'] |
| 17 | + @uri_str = DEFAULT_MONGODB_URI |
26 | 18 | end
|
| 19 | + |
| 20 | + @uri = Mongo::URI.new(@uri_str) |
27 | 21 | end
|
28 | 22 |
|
29 |
| - # returns the URI string, or constructs one from the defaults if no URI |
30 |
| - # string was given. |
31 |
| - def safe_uri |
32 |
| - @uri_str || "mongodb://#{addresses.first}" |
| 23 | + attr_reader :uri_str |
| 24 | + attr_reader :uri |
| 25 | + |
| 26 | + def addresses |
| 27 | + @uri.servers |
33 | 28 | end
|
34 | 29 |
|
35 | 30 | def mri?
|
@@ -67,4 +62,19 @@ def rails_version
|
67 | 62 | end
|
68 | 63 | v || '6.1'
|
69 | 64 | end
|
| 65 | + |
| 66 | + # Scrapes the output of `gem list` to find which versions of Rails are |
| 67 | + # installed, and looks for first one that best matches whatever rails version |
| 68 | + # was requested (see `#rails_version`). |
| 69 | + # |
| 70 | + # @return [ String | nil ] the version of the requested Rails install, or |
| 71 | + # nil if nothing matches. |
| 72 | + def installed_rails_version |
| 73 | + output = `gem list --exact rails` |
| 74 | + if output =~ /^rails \((.*)\)/ |
| 75 | + versions = $1.split(/,\s*/) |
| 76 | + rails_version_re = /^#{rails_version}(?:\..*)?$/ |
| 77 | + versions.detect { |v| v =~ rails_version_re } |
| 78 | + end |
| 79 | + end |
70 | 80 | end
|
0 commit comments