mongomodel 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d006082bc3f5bf2357182fecea49893a06e5994
4
- data.tar.gz: d53384261c1968e770c65c4eb4e8faa32ade2c22
3
+ metadata.gz: 0ecf9f958c03a225872acdf72dca43ff7d6fc52d
4
+ data.tar.gz: fcca66094d1b48857a28792c12364d49ae057593
5
5
  SHA512:
6
- metadata.gz: e97ed321bde11ad2f30311b4e80a8ea853894e720673d2634142b3e29e1f5088286185169d95fa9bd233aab9637a1d28f69c1b3bd9ef726f69d3b5f6f089a2ff
7
- data.tar.gz: b787c2bdaa482398da09028b9093ac4514bc596a446a115d58879ab103fd8c116a078415ba0c85022bd9ca14638421a5dfd4ac4844a42d65b1e4bd59d5e9b1c1
6
+ metadata.gz: a6a69c5fddc9745f8db566ad2931ee0f5069e8047f0ca834eb08c3bb6ac8d1f4201f21ca3f3f5de0267efc86a054330a2586d23adb0a63dbf01b8ed8bf60424f
7
+ data.tar.gz: bfefd11ce4643a8990c315aba9faa422cedbc026b1179e6cc7d4e2c4b69682139b1cb58ba0dd025ec38bf52bcc6d1cc7d043b3164483ae3a903cc17582d35885
@@ -4,7 +4,6 @@ services:
4
4
  - mongodb
5
5
 
6
6
  rvm:
7
- - 1.8.7
8
7
  - 1.9.3
9
8
  - 2.0.0
10
9
  - 2.1.0
@@ -17,15 +16,3 @@ gemfile:
17
16
  - gemfiles/rails-4-observers.gemfile
18
17
  - gemfiles/mongo_mapper.gemfile
19
18
  - gemfiles/mongoid.gemfile
20
-
21
- matrix:
22
- exclude:
23
- - rvm: 1.8.7
24
- gemfile: gemfiles/rails-4.0.gemfile
25
- - rvm: 1.8.7
26
- gemfile: gemfiles/rails-4.1.gemfile
27
- - rvm: 1.8.7
28
- gemfile: gemfiles/rails-4-observers.gemfile
29
- - rvm: 1.8.7
30
- gemfile: gemfiles/mongoid.gemfile
31
-
data/README.md CHANGED
@@ -18,8 +18,8 @@ For performance, you should probably also install the BSON C extensions:
18
18
  gem install bson_ext
19
19
 
20
20
 
21
- Using with Rails 3
22
- ==================
21
+ Using with Rails
22
+ ================
23
23
 
24
24
  Add MongoModel to your Gemfile (and run `bundle install`):
25
25
 
@@ -38,13 +38,9 @@ Generating an embedded document:
38
38
  rails generate model Chapter title:string body:string -E
39
39
 
40
40
 
41
- Sample Usage
41
+ Sample Model
42
42
  ============
43
43
 
44
- require 'mongomodel'
45
-
46
- MongoModel.configuration = { 'host' => 'localhost', 'database' => 'mydb' }
47
-
48
44
  class Article < MongoModel::Document
49
45
  property :title, String, :default => 'Untitled'
50
46
  property :body, String
@@ -59,4 +55,33 @@ Sample Usage
59
55
 
60
56
  scope :published, where(:published_at.ne => nil)
61
57
  end
62
-
58
+
59
+
60
+ Configuration
61
+ =============
62
+
63
+ MongoModel can be configured similarly to ActiveRecord by creating/editing `config/mongomodel.yml`. The most basic configuration might look like:
64
+
65
+ ```yaml
66
+ development:
67
+ database: mymongodbname
68
+ host: localhost
69
+ port: 27017
70
+ ```
71
+
72
+ The config file also supports specifying the username, password, pool_size, password and replicas. Running `rails generate mongo_model:config DATABASENAME` will generate a basic config file for you.
73
+
74
+ Using Replica Sets
75
+ ------------------
76
+
77
+ When working with replica sets, replace the host/port configuration with an array of replicas (`host:port`):
78
+
79
+ ```yaml
80
+ production:
81
+ database: database_name
82
+ replicas:
83
+ - some.host.com:27017
84
+ - another.host.com:27017
85
+ username: username
86
+ password: password
87
+ ```
@@ -49,6 +49,7 @@ module MongoModel
49
49
  autoload :Scope, 'mongomodel/support/scope'
50
50
  autoload :Types, 'mongomodel/support/types'
51
51
  autoload :Configuration, 'mongomodel/support/configuration'
52
+ autoload :URIConfiguration, 'mongomodel/support/configuration'
52
53
  autoload :DynamicFinder, 'mongomodel/support/dynamic_finder'
53
54
  autoload :InstrumentedCollection, 'mongomodel/support/instrumented_collection'
54
55
 
@@ -104,7 +105,12 @@ module MongoModel
104
105
 
105
106
  def self.configuration=(config)
106
107
  @_database = nil
107
- @_configuration = Configuration.new(config)
108
+ @_configuration = case config
109
+ when Hash
110
+ Configuration.new(config)
111
+ when String
112
+ URIConfiguration.new(config)
113
+ end
108
114
  end
109
115
 
110
116
  def self.database
@@ -3,8 +3,18 @@ require 'active_support/core_ext/hash/except'
3
3
 
4
4
  module MongoModel
5
5
  class Configuration
6
+ DEFAULTS = {
7
+ 'host' => 'localhost',
8
+ 'port' => 27017,
9
+ 'database' => 'mongomodel-default',
10
+ 'pool_size' => 5,
11
+ 'pool_timeout' => 5
12
+ }
13
+
14
+ attr_reader :options
15
+
6
16
  def initialize(options)
7
- set_options!(options)
17
+ @options = DEFAULTS.merge(options).stringify_keys
8
18
  end
9
19
 
10
20
  def host
@@ -54,42 +64,38 @@ module MongoModel
54
64
  options.except('host', 'port', 'database', 'username', 'password', 'replicas').symbolize_keys
55
65
  end
56
66
 
57
- def options
58
- @options ||= {}
59
- end
60
-
61
- def set_options!(options)
62
- case options
63
- when Hash
64
- @options = DEFAULTS.merge(options).stringify_keys
65
- when String
66
- set_options!(parse(options))
67
- end
68
- end
69
-
70
- DEFAULTS = {
71
- 'host' => 'localhost',
72
- 'port' => 27017,
73
- 'database' => 'mongomodel-default',
74
- 'pool_size' => 5,
75
- 'pool_timeout' => 5
76
- }
77
-
78
67
  def self.defaults
79
68
  new({})
80
69
  end
81
-
82
- private
83
- def parse(str)
84
- uri = URI.parse(str)
85
-
86
- {
87
- 'host' => uri.host,
88
- 'port' => uri.port,
89
- 'database' => uri.path.gsub(/^\//, ''),
90
- 'username' => uri.user,
91
- 'password' => uri.password
92
- }
70
+ end
71
+
72
+ class URIConfiguration
73
+ def initialize(uri)
74
+ @uri = uri
75
+ end
76
+
77
+ def host
78
+ parser.host
79
+ end
80
+
81
+ def port
82
+ parser.port
83
+ end
84
+
85
+ def database
86
+ parser.connection_options[:db_name]
87
+ end
88
+
89
+ def establish_connection
90
+ @database = connection.db
91
+ end
92
+
93
+ def connection
94
+ @connection ||= parser.connection({})
95
+ end
96
+
97
+ def parser
98
+ @parser ||= Mongo::URIParser.new(@uri)
93
99
  end
94
100
  end
95
101
  end
@@ -1,3 +1,3 @@
1
1
  module MongoModel
2
- VERSION = "0.5.4"
2
+ VERSION = "0.5.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongomodel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Pohlenz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-09 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -301,7 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
301
301
  version: 1.3.6
302
302
  requirements: []
303
303
  rubyforge_project: mongomodel
304
- rubygems_version: 2.2.2
304
+ rubygems_version: 2.4.7
305
305
  signing_key:
306
306
  specification_version: 4
307
307
  summary: MongoDB ORM for Ruby/Rails