mongoid-shell 0.2.0 → 0.3.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 64cf2c359ad1afd04b88ccf54613cccc593ea3cc
4
+ data.tar.gz: bd9aaf637391a1ee1eb1775514ac09b7b567f88d
5
+ SHA512:
6
+ metadata.gz: 48dbac68ced2c383aefa39817eac22165073ce1177e4c4ff5dbee81cc867994c005e7559079987a438cb0076077a935e35e8c54be26117e1e3a86f32bd4a6f2f
7
+ data.tar.gz: de542005f6aa6b91ed3630031b46a62d32cd84de2bc3f5c606a56b13bef0e0430fde73742ad3dce1da33e5c9eeb0bbbea2bfac68d1162a5eab2bf4930c2d32a7
data/CHANGELOG.md CHANGED
@@ -1,7 +1,12 @@
1
- Next Release
2
- ============
1
+ 0.3.0 (7/1/2014)
2
+ ================
3
3
 
4
- * Your contribution here.
4
+ * [#3](https://github.com/dblock/mongoid-shell/pull/3): Added Mongoid 4.x support - [@pawelniewie](https://github.com/pawelniewie), [@dblock](https://github.com/dblock).
5
+ * [#2](https://github.com/dblock/mongoid-shell/pull/2): Added support for `--noIndexRestore` to `Mongoid::Shell::Commands::Mongorestore` - [@macreery](https://github.com/macreery).
6
+ * [#1](https://github.com/dblock/mongoid-shell/pull/1): Enforced compatibility with Mongoid 3.x only - [@macreery](https://github.com/macreery).
7
+ * Fix: the `mongorestore` command requires a primary node in a replica set - [@dblock](https://github.com/dblock).
8
+ * Added Rubocop, Ruby style linter - [@dblock](https://github.com/dblock).
9
+ * Upgraded to RSpec 3.x expectation syntax - [@dblock](https://github.com/dblock).
5
10
 
6
11
  0.2.0 (1/29/2013)
7
12
  =================
data/README.md CHANGED
@@ -32,9 +32,9 @@ system mongodump.to_s # mongodump --db another_database --out /tmp/db_backup
32
32
  ```
33
33
 
34
34
  Supported Commands
35
- ==================
35
+ ------------------
36
36
 
37
- ## Mongo
37
+ ### Mongo
38
38
 
39
39
  The mongo shell is an interactive JavaScript shell for MongoDB. The `Mongoid::Shell::Commands::Mongo` class generates a command line to connect to MongoDB. A particularly useful feature is that it will always yield the address of the master node of a MongoDB replica set.
40
40
 
@@ -44,7 +44,7 @@ Mongoid::Shell::Commands::Mongo.new.to_s
44
44
 
45
45
  Supports `--username`, `--password`, `--eval`, `--nodb`, `--norc`, `--quiet` and `--ipv6`.
46
46
 
47
- ## Mongodump
47
+ ### Mongodump
48
48
 
49
49
  Mongodump is a utility for creating a binary export of the contents of a database.
50
50
 
@@ -55,7 +55,7 @@ mongodump.to_s # mongodump --db test --collection test
55
55
 
56
56
  The `Mongoid::Shell::Commands::Mongodump` class supports `--db`, `--host`, `--username`, `--password`, `--query`, `--out`, `--collection`, `--directoryperdb`, `--journal`, `--oplog`, `--repair`, `--forceTableScan`, `--dbpath` and `--ipv6`.
57
57
 
58
- ## Mongorestore
58
+ ### Mongorestore
59
59
 
60
60
  The mongorestore tool imports content from binary database dump, created by mongodump into a specific database.
61
61
 
@@ -64,9 +64,9 @@ mongorestore = Mongoid::Shell::Commands::Mongorestore.new({ collection: 'test',
64
64
  mongorestore.to_s # mongorestore --db test --collection test /tmp/db_backup
65
65
  ```
66
66
 
67
- The `Mongoid::Shell::Commands::Mongorestore` class supports `--db`, `--host`, `--username`, `--password`, `--collection`, `--ipv6, `--dbpath`, `--directoryperdb`, `--journal`, `--objcheck`, `--filter`, `--drop`, `--oplogReplay` and `--keepIndexVersion`.
67
+ The `Mongoid::Shell::Commands::Mongorestore` class supports `--db`, `--host`, `--username`, `--password`, `--collection`, `--ipv6`, `--dbpath`, `--directoryperdb`, `--journal`, `--objcheck`, `--filter`, `--drop`, `--oplogReplay`, `--keepIndexVersion` and `--noIndexRestore`.
68
68
 
69
- ## Mongostat
69
+ ### Mongostat
70
70
 
71
71
  The mongostat utility provides a quick overview of the status of a currently running mongod or mongos instance.
72
72
 
@@ -2,22 +2,19 @@ module Mongoid
2
2
  module Shell
3
3
  module Commands
4
4
  class Base
5
-
6
5
  attr_accessor :session
7
6
 
8
7
  class << self
9
-
10
8
  def command_for(session)
11
- self.new({ session: session })
9
+ new(session: session)
12
10
  end
13
-
14
11
  end
15
12
 
16
13
  def initialize(options = nil)
17
14
  options ||= {}
18
15
  options[:session] ||= Mongoid.default_session
19
16
  options.each do |sym, val|
20
- self.send "#{sym}=", val
17
+ send "#{sym}=", val
21
18
  end
22
19
  raise Mongoid::Shell::Errors::MissingSessionError unless @session
23
20
  end
@@ -28,9 +25,9 @@ module Mongoid
28
25
 
29
26
  def vargs(args = {})
30
27
  args.map do |key, property|
31
- value = self.send(property)
28
+ value = send(property)
32
29
  next unless value
33
- if value.is_a? Boolean
30
+ if value.is_a?(Boolean) || value.is_a?(TrueClass)
34
31
  key
35
32
  else
36
33
  value = value.to_s
@@ -42,9 +39,8 @@ module Mongoid
42
39
  end
43
40
 
44
41
  def to_s
45
- [ self.cmd, vargs ].flatten.compact.join(" ")
42
+ [cmd, vargs].flatten.compact.join(" ")
46
43
  end
47
-
48
44
  end
49
45
  end
50
46
  end
@@ -14,7 +14,7 @@ module Mongoid
14
14
  end
15
15
 
16
16
  def host_port_and_db
17
- [ primary, db ].compact.join("/")
17
+ [primary, db].compact.join("/")
18
18
  end
19
19
 
20
20
  def vargs
@@ -26,10 +26,9 @@ module Mongoid
26
26
  '--nodb' => :nodb,
27
27
  '--norc' => :norc,
28
28
  '--quiet' => :quiet,
29
- '--ipv6' => :ipv6,
29
+ '--ipv6' => :ipv6
30
30
  })
31
31
  end
32
-
33
32
  end
34
33
  end
35
34
  end
@@ -31,7 +31,6 @@ module Mongoid
31
31
  '--ipv6' => :ipv6
32
32
  })
33
33
  end
34
-
35
34
  end
36
35
  end
37
36
  end
@@ -2,17 +2,21 @@ module Mongoid
2
2
  module Shell
3
3
  module Commands
4
4
  class Mongorestore < Mongoid::Shell::Commands::Base
5
- include Mongoid::Shell::Properties::Host
5
+ include Mongoid::Shell::Properties::Primary
6
6
  include Mongoid::Shell::Properties::Database
7
7
  include Mongoid::Shell::Properties::Username
8
8
  include Mongoid::Shell::Properties::Password
9
9
 
10
- attr_accessor :collection, :ipv6, :dbpath, :directoryperdb, :journal, :objcheck, :filter, :drop, :oplogReplay, :keepIndexVersion, :restore
10
+ attr_accessor :host, :collection, :ipv6, :dbpath, :directoryperdb, :journal, :objcheck, :filter, :drop, :oplogReplay, :keepIndexVersion, :noIndexRestore, :restore
11
11
 
12
12
  def initialize(attrs = {})
13
13
  super
14
14
  end
15
15
 
16
+ def host
17
+ @host || primary
18
+ end
19
+
16
20
  def vargs
17
21
  super({
18
22
  '--host' => :host,
@@ -29,10 +33,10 @@ module Mongoid
29
33
  '--drop' => :drop,
30
34
  '--oplogReplay' => :oplogReplay,
31
35
  '--keepIndexVersion' => :keepIndexVersion,
36
+ '--noIndexRestore' => :noIndexRestore,
32
37
  'directory or filename to restore from' => :restore
33
38
  })
34
39
  end
35
-
36
40
  end
37
41
  end
38
42
  end
@@ -3,6 +3,7 @@ module Mongoid
3
3
  module Commands
4
4
  class Mongostat < Mongoid::Shell::Commands::Base
5
5
  include Mongoid::Shell::Properties::Host
6
+ include Mongoid::Shell::Properties::Database
6
7
  include Mongoid::Shell::Properties::Username
7
8
  include Mongoid::Shell::Properties::Password
8
9
 
@@ -24,7 +25,6 @@ module Mongoid
24
25
  '--all' => :all
25
26
  })
26
27
  end
27
-
28
28
  end
29
29
  end
30
30
  end
@@ -2,7 +2,6 @@ module Mongoid
2
2
  module Shell
3
3
  module Errors
4
4
  class Base < StandardError
5
-
6
5
  # Problem occurred.
7
6
  attr_reader :problem
8
7
 
@@ -21,60 +20,59 @@ module Mongoid
21
20
  @summary = create_summary(key, attributes)
22
21
  @resolution = create_resolution(key, attributes)
23
22
 
24
- "\nProblem:\n #{@problem}"+
25
- "\nSummary:\n #{@summary}"+
23
+ "\nProblem:\n #{@problem}" \
24
+ "\nSummary:\n #{@summary}" \
26
25
  "\nResolution:\n #{@resolution}"
27
26
  end
28
27
 
29
28
  private
30
29
 
31
- BASE_KEY = "mongoid.shell.errors.messages" #:nodoc:
32
-
33
- # Given the key of the specific error and the options hash, translate the
34
- # message.
35
- #
36
- # === Parameters
37
- # [key] The key of the error in the locales.
38
- # [options] The objects to pass to create the message.
39
- #
40
- # Returns a localized error message string.
41
- def translate(key, options)
42
- ::I18n.translate("#{BASE_KEY}.#{key}", { :locale => :en }.merge(options)).strip
43
- end
30
+ BASE_KEY = "mongoid.shell.errors.messages" #:nodoc:
44
31
 
45
- # Create the problem.
46
- #
47
- # === Parameters
48
- # [key] The error key.
49
- # [attributes] The attributes to interpolate.
50
- #
51
- # Returns the problem.
52
- def create_problem(key, attributes)
53
- translate("#{key}.message", attributes)
54
- end
32
+ # Given the key of the specific error and the options hash, translate the
33
+ # message.
34
+ #
35
+ # === Parameters
36
+ # [key] The key of the error in the locales.
37
+ # [options] The objects to pass to create the message.
38
+ #
39
+ # Returns a localized error message string.
40
+ def translate(key, options)
41
+ ::I18n.translate("#{BASE_KEY}.#{key}", { locale: :en }.merge(options)).strip
42
+ end
55
43
 
56
- # Create the summary.
57
- #
58
- # === Parameters
59
- # [key] The error key.
60
- # [attributes] The attributes to interpolate.
61
- #
62
- # Returns the summary.
63
- def create_summary(key, attributes)
64
- translate("#{key}.summary", attributes)
65
- end
44
+ # Create the problem.
45
+ #
46
+ # === Parameters
47
+ # [key] The error key.
48
+ # [attributes] The attributes to interpolate.
49
+ #
50
+ # Returns the problem.
51
+ def create_problem(key, attributes)
52
+ translate("#{key}.message", attributes)
53
+ end
66
54
 
67
- # Create the resolution.
68
- #
69
- # === Parameters
70
- # [key] The error key.
71
- # [attributes] The attributes to interpolate.
72
- #
73
- # Returns the resolution.
74
- def create_resolution(key, attributes)
75
- translate("#{key}.resolution", attributes)
76
- end
55
+ # Create the summary.
56
+ #
57
+ # === Parameters
58
+ # [key] The error key.
59
+ # [attributes] The attributes to interpolate.
60
+ #
61
+ # Returns the summary.
62
+ def create_summary(key, attributes)
63
+ translate("#{key}.summary", attributes)
64
+ end
77
65
 
66
+ # Create the resolution.
67
+ #
68
+ # === Parameters
69
+ # [key] The error key.
70
+ # [attributes] The attributes to interpolate.
71
+ #
72
+ # Returns the resolution.
73
+ def create_resolution(key, attributes)
74
+ translate("#{key}.resolution", attributes)
75
+ end
78
76
  end
79
77
  end
80
78
  end
@@ -0,0 +1,7 @@
1
+ module Mongoid
2
+ module Shell
3
+ def self.mongoid3?
4
+ ::Mongoid.const_defined? :Observer # deprecated in Mongoid 4.x
5
+ end
6
+ end
7
+ end
@@ -2,14 +2,12 @@ module Mongoid
2
2
  module Shell
3
3
  module Properties
4
4
  module Database
5
-
6
5
  attr_accessor :db
7
6
 
8
7
  # current database name
9
8
  def db
10
9
  @db || session.send(:current_database).name
11
10
  end
12
-
13
11
  end
14
12
  end
15
13
  end
@@ -2,7 +2,6 @@ module Mongoid
2
2
  module Shell
3
3
  module Properties
4
4
  module Host
5
-
6
5
  attr_accessor :host
7
6
 
8
7
  # database host
@@ -10,10 +9,13 @@ module Mongoid
10
9
  @host || begin
11
10
  node = session.cluster.nodes.first
12
11
  raise Mongoid::Shell::Errors::SessionNotConnectedError unless node
13
- node.address == "localhost:27017" ? nil : node.address
12
+ if Mongoid::Shell.mongoid3?
13
+ node.address == "localhost:27017" ? nil : node.address
14
+ else
15
+ node.address.original == "localhost:27017" ? nil : node.address.original
16
+ end
14
17
  end
15
18
  end
16
-
17
19
  end
18
20
  end
19
21
  end
@@ -2,17 +2,22 @@ module Mongoid
2
2
  module Shell
3
3
  module Properties
4
4
  module Password
5
-
6
5
  attr_accessor :password
7
6
 
8
7
  # current password
9
8
  def password
10
9
  @password || begin
11
- return nil unless session.context.cluster.auth && session.context.cluster.auth.first
12
- session.context.cluster.auth.first[1][1]
10
+ if Mongoid::Shell.mongoid3?
11
+ return nil unless session.context.cluster.auth && session.context.cluster.auth.first
12
+ session.context.cluster.auth.first[1][1]
13
+ else
14
+ node = session.cluster.nodes.first
15
+ raise Mongoid::Shell::Errors::SessionNotConnectedError unless node
16
+ return nil if !node.credentials.key?(db) || node.credentials[db].empty?
17
+ node.credentials[db][1]
18
+ end
13
19
  end
14
20
  end
15
-
16
21
  end
17
22
  end
18
23
  end
@@ -2,7 +2,6 @@ module Mongoid
2
2
  module Shell
3
3
  module Properties
4
4
  module Primary
5
-
6
5
  attr_accessor :primary
7
6
 
8
7
  # primary database host
@@ -11,10 +10,13 @@ module Mongoid
11
10
  raise Mongoid::Shell::Errors::SessionNotConnectedError unless session.cluster.nodes.any?
12
11
  node = session.cluster.nodes.find(&:primary?)
13
12
  raise Mongoid::Shell::Errors::MissingPrimaryNodeError unless node
14
- node.address == "localhost:27017" ? nil : node.address
13
+ if Mongoid::Shell.mongoid3?
14
+ node.address == "localhost:27017" ? nil : node.address
15
+ else
16
+ node.address.original == "localhost:27017" ? nil : node.address.original
17
+ end
15
18
  end
16
19
  end
17
-
18
20
  end
19
21
  end
20
22
  end
@@ -2,17 +2,22 @@ module Mongoid
2
2
  module Shell
3
3
  module Properties
4
4
  module Username
5
-
6
5
  attr_accessor :username
7
6
 
8
7
  # current username
9
8
  def username
10
9
  @username || begin
11
- return nil unless session.context.cluster.auth && session.context.cluster.auth.first
12
- session.context.cluster.auth.first[1][0]
10
+ if Mongoid::Shell.mongoid3?
11
+ return nil unless session.context.cluster.auth && session.context.cluster.auth.first
12
+ session.context.cluster.auth.first[1][0]
13
+ else
14
+ node = session.cluster.nodes.first
15
+ raise Mongoid::Shell::Errors::SessionNotConnectedError unless node
16
+ return nil if !node.credentials.key?(db) || node.credentials[db].empty?
17
+ node.credentials[db][0]
18
+ end
13
19
  end
14
20
  end
15
-
16
21
  end
17
22
  end
18
23
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Shell
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
data/lib/mongoid-shell.rb CHANGED
@@ -3,6 +3,7 @@ require 'i18n'
3
3
  I18n.load_path << File.join(File.dirname(__FILE__), "config", "locales", "en.yml")
4
4
 
5
5
  require 'mongoid/shell/version'
6
+ require 'mongoid/shell/mongoid'
6
7
  require 'mongoid/shell/errors'
7
8
  require 'mongoid/shell/properties'
8
9
  require 'mongoid/shell/commands'
data/lib/mongoid_shell.rb CHANGED
@@ -1,2 +1 @@
1
1
  require 'mongoid-shell'
2
-
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Doubrovkine
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-29 00:00:00.000000000 Z
11
+ date: 2014-07-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: mongoid
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 3.0.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 3.0.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: i18n
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description:
@@ -49,73 +44,53 @@ executables: []
49
44
  extensions: []
50
45
  extra_rdoc_files: []
51
46
  files:
52
- - .gitignore
53
- - .rspec
54
- - .travis.yml
55
- - CHANGELOG.md
56
- - Gemfile
57
47
  - LICENSE.md
58
48
  - README.md
59
- - Rakefile
49
+ - CHANGELOG.md
60
50
  - lib/config/locales/en.yml
61
- - lib/mongoid-shell.rb
62
- - lib/mongoid/shell/commands.rb
63
51
  - lib/mongoid/shell/commands/base.rb
64
52
  - lib/mongoid/shell/commands/mongo.rb
65
53
  - lib/mongoid/shell/commands/mongodump.rb
66
54
  - lib/mongoid/shell/commands/mongorestore.rb
67
55
  - lib/mongoid/shell/commands/mongostat.rb
68
- - lib/mongoid/shell/errors.rb
56
+ - lib/mongoid/shell/commands.rb
69
57
  - lib/mongoid/shell/errors/base.rb
70
58
  - lib/mongoid/shell/errors/missing_primary_node_error.rb
71
59
  - lib/mongoid/shell/errors/missing_session_error.rb
72
60
  - lib/mongoid/shell/errors/session_not_connected_error.rb
73
- - lib/mongoid/shell/properties.rb
61
+ - lib/mongoid/shell/errors.rb
62
+ - lib/mongoid/shell/mongoid.rb
74
63
  - lib/mongoid/shell/properties/database.rb
75
64
  - lib/mongoid/shell/properties/host.rb
76
65
  - lib/mongoid/shell/properties/password.rb
77
66
  - lib/mongoid/shell/properties/primary.rb
78
67
  - lib/mongoid/shell/properties/username.rb
68
+ - lib/mongoid/shell/properties.rb
79
69
  - lib/mongoid/shell/version.rb
70
+ - lib/mongoid-shell.rb
80
71
  - lib/mongoid_shell.rb
81
- - mongoid-shell.gemspec
82
- - spec/mongoid/commands/base_spec.rb
83
- - spec/mongoid/commands/mongo_spec.rb
84
- - spec/mongoid/commands/mongodump_spec.rb
85
- - spec/mongoid/commands/mongorestore_spec.rb
86
- - spec/mongoid/commands/mongostat_spec.rb
87
- - spec/mongoid/mongoid_shell_spec.rb
88
- - spec/mongoid/properties/host_spec.rb
89
- - spec/mongoid/properties/primary_spec.rb
90
- - spec/spec_helper.rb
91
- - spec/support/config/mongoid.yml
92
- - spec/support/helpers/moped_session_helper.rb
93
72
  homepage: http://github.com/dblock/mongoid-shell
94
73
  licenses:
95
74
  - MIT
75
+ metadata: {}
96
76
  post_install_message:
97
77
  rdoc_options: []
98
78
  require_paths:
99
79
  - lib
100
80
  required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
81
  requirements:
103
- - - ! '>='
82
+ - - '>='
104
83
  - !ruby/object:Gem::Version
105
84
  version: '0'
106
- segments:
107
- - 0
108
- hash: 4237627171487641625
109
85
  required_rubygems_version: !ruby/object:Gem::Requirement
110
- none: false
111
86
  requirements:
112
- - - ! '>='
87
+ - - '>='
113
88
  - !ruby/object:Gem::Version
114
89
  version: 1.3.6
115
90
  requirements: []
116
91
  rubyforge_project:
117
- rubygems_version: 1.8.24
92
+ rubygems_version: 2.1.11
118
93
  signing_key:
119
- specification_version: 3
94
+ specification_version: 4
120
95
  summary: Derive shell commands from Mongoid configuration options.
121
96
  test_files: []
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --format=documentation
3
-
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- services:
2
- - mongodb
3
-
4
- rvm:
5
- - 1.9.3
6
-
7
- notifications:
8
- email:
9
- - dblock@dblock.org
data/Gemfile DELETED
@@ -1,9 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
4
-
5
- group :development, :test do
6
- gem "rake"
7
- gem "bundler"
8
- gem "rspec"
9
- end
data/Rakefile DELETED
@@ -1,24 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/gem_tasks'
3
-
4
- require File.expand_path('../lib/mongoid/shell/version', __FILE__)
5
-
6
- begin
7
- Bundler.setup(:default, :development)
8
- rescue Bundler::BundlerError => e
9
- $stderr.puts e.message
10
- $stderr.puts "Run `bundle install` to install missing gems"
11
- exit e.status_code
12
- end
13
-
14
- require 'rake'
15
-
16
- require 'rspec/core'
17
- require 'rspec/core/rake_task'
18
-
19
- RSpec::Core::RakeTask.new(:spec) do |spec|
20
- spec.pattern = FileList['spec/**/*_spec.rb']
21
- end
22
-
23
- task :default => :spec
24
-
@@ -1,20 +0,0 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require "mongoid/shell/version"
3
-
4
- Gem::Specification.new do |s|
5
- s.name = "mongoid-shell"
6
- s.version = Mongoid::Shell::VERSION
7
- s.authors = [ "Daniel Doubrovkine" ]
8
- s.email = "dblock@dblock.org"
9
- s.platform = Gem::Platform::RUBY
10
- s.required_rubygems_version = '>= 1.3.6'
11
- s.files = `git ls-files`.split("\n")
12
- s.require_paths = [ "lib" ]
13
- s.homepage = "http://github.com/dblock/mongoid-shell"
14
- s.licenses = [ "MIT" ]
15
- s.summary = "Derive shell commands from Mongoid configuration options."
16
- s.add_dependency "mongoid"
17
- s.add_dependency "i18n"
18
- end
19
-
20
-
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Commands::Base do
4
- context "without a default session" do
5
- before :each do
6
- Mongoid.stub(:default_session).and_return(nil)
7
- end
8
- it "raises an exception when a session is missing" do
9
- expect {
10
- Mongoid::Shell::Commands::Base.new({})
11
- }.to raise_error Mongoid::Shell::Errors::MissingSessionError, /Missing session./
12
- end
13
- it "raises an exception when options are missing" do
14
- expect {
15
- Mongoid::Shell::Commands::Base.new(nil)
16
- }.to raise_error Mongoid::Shell::Errors::MissingSessionError, /Missing session./
17
- end
18
- end
19
- it "creates a command using the default session" do
20
- command = Mongoid::Shell::Commands::Base.new
21
- command.session.should eq Mongoid.default_session
22
- end
23
- it "creates a command using the session provided" do
24
- session = Moped::Session.new([ "127.0.0.1:27017" ])
25
- command = Mongoid::Shell::Commands::Base.new(session: session)
26
- command.session.should eq session
27
- end
28
- it "command_for" do
29
- command = Mongoid::Shell::Commands::Base.command_for(Mongoid.default_session)
30
- command.session.should eq Mongoid.default_session
31
- end
32
- end
@@ -1,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Commands::Mongo do
4
- include MopedSessionHelper
5
- context "local" do
6
- it "defaults to local" do
7
- Mongoid::Shell::Commands::Mongo.new.to_s.should == "mongo mongoid_shell_tests"
8
- end
9
- it "includes eval" do
10
- Mongoid::Shell::Commands::Mongo.new({
11
- eval: 'find x'
12
- }).to_s.should == 'mongo mongoid_shell_tests --eval "find x"'
13
- end
14
- it "overrides primary" do
15
- Mongoid::Shell::Commands::Mongo.new({
16
- eval: 'find x',
17
- primary: 'my_primary'
18
- }).to_s.should == 'mongo my_primary/mongoid_shell_tests --eval "find x"'
19
- end
20
- [ :nodb, :norc, :quiet, :ipv6 ].each do |option|
21
- it "includes #{option}" do
22
- Mongoid::Shell::Commands::Mongo.new({
23
- option => true
24
- }).to_s.should == "mongo mongoid_shell_tests --#{option}"
25
- end
26
- end
27
-
28
- end
29
- context "sessions" do
30
- context "default" do
31
- before :each do
32
- @session = Mongoid::Sessions.with_name(:default)
33
- end
34
- it "includes username and password" do
35
- Mongoid::Shell::Commands::Mongo.new({
36
- session: @session
37
- }).to_s.should == "mongo mongoid_shell_tests"
38
- end
39
- end
40
- context "a replica set" do
41
- before :each do
42
- @session = moped_session(:replica_set)
43
- end
44
- it "includes username and password" do
45
- Mongoid::Shell::Commands::Mongo.new({
46
- session: @session
47
- }).to_s.should == "mongo dedicated1.myapp.com:27017/mongoid --username user --password password"
48
- end
49
- end
50
- context "url" do
51
- before :each do
52
- @session = moped_session(:url)
53
- end
54
- it "includes username and password" do
55
- Mongoid::Shell::Commands::Mongo.new({
56
- session: @session
57
- }).to_s.should == "mongo 59.1.22.1:27017/mongoid --username user --password password"
58
- end
59
- end
60
- end
61
- end
@@ -1,66 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Commands::Mongodump do
4
- include MopedSessionHelper
5
- context "local" do
6
- it "defaults to local" do
7
- Mongoid::Shell::Commands::Mongodump.new.to_s.should == "mongodump --db mongoid_shell_tests"
8
- end
9
- it "includes collection" do
10
- Mongoid::Shell::Commands::Mongodump.new({
11
- collection: 'test'
12
- }).to_s.should == "mongodump --db mongoid_shell_tests --collection test"
13
- end
14
- it "includes query" do
15
- Mongoid::Shell::Commands::Mongodump.new({
16
- query: 'find x'
17
- }).to_s.should == 'mongodump --db mongoid_shell_tests --query "find x"'
18
- end
19
- [ :out, :dbpath ].each do |option|
20
- it "includes #{option}" do
21
- Mongoid::Shell::Commands::Mongodump.new({
22
- option => '/this is a folder'
23
- }).to_s.should == "mongodump --db mongoid_shell_tests --#{option} \"/this is a folder\""
24
- end
25
- end
26
- [ :directoryperdb, :journal, :oplog, :repair, :forceTableScan, :dbpath, :ipv6 ].each do |option|
27
- it "includes #{option}" do
28
- Mongoid::Shell::Commands::Mongodump.new({
29
- option => true
30
- }).to_s.should == "mongodump --db mongoid_shell_tests --#{option}"
31
- end
32
- end
33
- end
34
- context "sessions" do
35
- context "default" do
36
- before :each do
37
- @session = moped_session(:default)
38
- end
39
- it "includes username and password" do
40
- Mongoid::Shell::Commands::Mongodump.new({
41
- session: @session
42
- }).to_s.should == "mongodump --db mongoid_shell_tests"
43
- end
44
- end
45
- context "a replica set" do
46
- before :each do
47
- @session = moped_session(:replica_set)
48
- end
49
- it "includes username and password" do
50
- Mongoid::Shell::Commands::Mongodump.new({
51
- session: @session
52
- }).to_s.should == "mongodump --host dedicated1.myapp.com:27017 --db mongoid --username user --password password"
53
- end
54
- end
55
- context "url" do
56
- before :each do
57
- @session = moped_session(:url)
58
- end
59
- it "includes username and password" do
60
- Mongoid::Shell::Commands::Mongodump.new({
61
- session: @session
62
- }).to_s.should == "mongodump --host 59.1.22.1:27017 --db mongoid --username user --password password"
63
- end
64
- end
65
- end
66
- end
@@ -1,76 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Commands::Mongorestore do
4
- include MopedSessionHelper
5
- context "local" do
6
- it "defaults to local" do
7
- Mongoid::Shell::Commands::Mongorestore.new.to_s.should == "mongorestore --db mongoid_shell_tests"
8
- end
9
- it "includes collection" do
10
- Mongoid::Shell::Commands::Mongorestore.new({
11
- collection: 'test',
12
- restore: 'folder'
13
- }).to_s.should == "mongorestore --db mongoid_shell_tests --collection test folder"
14
- end
15
- it "can override the database, username, password and host" do
16
- Mongoid::Shell::Commands::Mongorestore.new({
17
- host: 'my_host',
18
- username: 'my_username',
19
- password: 'my_password',
20
- collection: 'test',
21
- db: 'my_db',
22
- restore: 'folder'
23
- }).to_s.should == "mongorestore --host my_host --db my_db --username my_username --password my_password --collection test folder"
24
- end
25
- [ :collection, :dbpath, :filter ].each do |option|
26
- it "includes #{option}" do
27
- Mongoid::Shell::Commands::Mongorestore.new({
28
- option => 'var arg',
29
- restore: 'a folder'
30
- }).to_s.should == "mongorestore --db mongoid_shell_tests --#{option} \"var arg\" \"a folder\""
31
- end
32
- end
33
- [ :ipv6, :directoryperdb, :journal, :objcheck, :drop, :oplogReplay, :keepIndexVersion ].each do |option|
34
- it "includes #{option}" do
35
- Mongoid::Shell::Commands::Mongorestore.new({
36
- option => true
37
- }).to_s.should == "mongorestore --db mongoid_shell_tests --#{option}"
38
- end
39
- end
40
- end
41
- context "sessions" do
42
- context "default" do
43
- before :each do
44
- @session = moped_session(:default)
45
- end
46
- it "includes username and password" do
47
- Mongoid::Shell::Commands::Mongorestore.new({
48
- session: @session,
49
- restore: "a folder"
50
- }).to_s.should == "mongorestore --db mongoid_shell_tests \"a folder\""
51
- end
52
- end
53
- context "a replica set" do
54
- before :each do
55
- @session = moped_session(:replica_set)
56
- end
57
- it "includes username and password" do
58
- Mongoid::Shell::Commands::Mongorestore.new({
59
- session: @session,
60
- restore: "a folder"
61
- }).to_s.should == "mongorestore --host dedicated1.myapp.com:27017 --db mongoid --username user --password password \"a folder\""
62
- end
63
- end
64
- context "url" do
65
- before :each do
66
- @session = moped_session(:url)
67
- end
68
- it "includes username and password" do
69
- Mongoid::Shell::Commands::Mongorestore.new({
70
- session: @session,
71
- restore: "a folder"
72
- }).to_s.should == "mongorestore --host 59.1.22.1:27017 --db mongoid --username user --password password \"a folder\""
73
- end
74
- end
75
- end
76
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Commands::Mongostat do
4
- include MopedSessionHelper
5
- context "local" do
6
- it "defaults to local" do
7
- Mongoid::Shell::Commands::Mongostat.new.to_s.should == "mongostat"
8
- end
9
- it "rowcount" do
10
- Mongoid::Shell::Commands::Mongostat.new({
11
- :rowcount => 10
12
- }).to_s.should == "mongostat --rowcount 10"
13
- end
14
- [ :http, :discover, :all, :noheaders ].each do |option|
15
- it "includes #{option}" do
16
- Mongoid::Shell::Commands::Mongostat.new({
17
- option => true
18
- }).to_s.should == "mongostat --#{option}"
19
- end
20
- end
21
- end
22
- context "sessions" do
23
- context "default" do
24
- before :each do
25
- @session = Mongoid::Sessions.with_name(:default)
26
- end
27
- it "includes username and password" do
28
- Mongoid::Shell::Commands::Mongostat.new({
29
- session: @session
30
- }).to_s.should == "mongostat"
31
- end
32
- end
33
- context "a replica set" do
34
- before :each do
35
- @session = moped_session(:replica_set)
36
- end
37
- it "includes username and password" do
38
- Mongoid::Shell::Commands::Mongostat.new({
39
- session: @session
40
- }).to_s.should == "mongostat --host dedicated1.myapp.com:27017 --username user --password password"
41
- end
42
- end
43
- context "url" do
44
- before :each do
45
- @session = moped_session(:url)
46
- end
47
- it "includes username and password" do
48
- Mongoid::Shell::Commands::Mongostat.new({
49
- session: @session
50
- }).to_s.should == "mongostat --host 59.1.22.1:27017 --username user --password password"
51
- end
52
- end
53
- end
54
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell do
4
- it "has a version" do
5
- Mongoid::Shell::VERSION.should_not be_nil
6
- end
7
- end
8
-
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Properties::Host do
4
- subject do
5
- klass = Class.new do
6
- include Mongoid::Shell::Properties::Host
7
-
8
- def session
9
- Mongoid.default_session
10
- end
11
- end
12
- klass.new
13
- end
14
- it "raises an exception when the session is not connected" do
15
- Mongoid.default_session.cluster.stub(:nodes).and_return([])
16
- expect {
17
- subject.host
18
- }.to raise_error Mongoid::Shell::Errors::SessionNotConnectedError, /Session is not connected./
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Mongoid::Shell::Properties::Primary do
4
- subject do
5
- klass = Class.new do
6
- include Mongoid::Shell::Properties::Primary
7
-
8
- def session
9
- Mongoid.default_session
10
- end
11
- end
12
- klass.new
13
- end
14
- it "raises an exception when the session is not connected" do
15
- Mongoid.default_session.cluster.nodes.first.stub(:primary?).and_return(false)
16
- expect {
17
- subject.primary
18
- }.to raise_error Mongoid::Shell::Errors::MissingPrimaryNodeError, /Session does not have a primary node./
19
- end
20
- end
data/spec/spec_helper.rb DELETED
@@ -1,17 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
-
4
- require 'rubygems'
5
- require 'rspec'
6
- require 'mongoid'
7
- require 'mongoid-shell'
8
-
9
- [ "support/helpers/*.rb" ].each do |path|
10
- Dir["#{File.dirname(__FILE__)}/#{path}"].each do |file|
11
- require file
12
- end
13
- end
14
-
15
- Mongoid.configure do |config|
16
- config.connect_to('mongoid_shell_tests')
17
- end
@@ -1,37 +0,0 @@
1
- # Tell Mongoid which environment this configuration is for.
2
- production:
3
- # This starts the session configuration settings. You may have as
4
- # many sessions as you like, but you must have at least 1 named
5
- # 'default'.
6
- sessions:
7
- # Define the default session.
8
- default:
9
- # A session can have any number of hosts. Usually 1 for a single
10
- # server setup, and at least 3 for a replica set. Hosts must be
11
- # an array of host:port pairs. This session is single server.
12
- hosts:
13
- - flame.mongohq.com:27017
14
- # Define the default database name.
15
- database: mongoid
16
- # Since this database points at a session connected to MongoHQ, we must
17
- # provide the authentication details.
18
- username: user
19
- password: password
20
- # This defines a secondary session at a replica set.
21
- replica_set:
22
- # This configuration is a 3 node replica set.
23
- hosts:
24
- - dedicated1.myapp.com:27017
25
- - dedicated2.myapp.com:27017
26
- - dedicated3.myapp.com:27017
27
- database: mongoid
28
- # We can set session specific options, like reads executing
29
- # on secondary nodes, and defaulting the session to safe mode.
30
- options:
31
- consistency: :eventual
32
- safe: true
33
- username: user
34
- password: password
35
- # This configuration shows an authenticated replica set via a uri.
36
- url:
37
- uri: mongodb://user:password@59.1.22.1:27017,59.1.22.2:27017/mongoid
@@ -1,11 +0,0 @@
1
- module MopedSessionHelper
2
- # returns a Moped session with stubbed address resolution
3
- def moped_session(name)
4
- config = File.join(File.dirname(__FILE__), "../../support/config/mongoid.yml")
5
- Mongoid.load! config, :production
6
- Moped::Node.any_instance.stub(:resolve_address)
7
- session = Mongoid::Sessions.with_name(name)
8
- session.cluster.nodes.last.stub(:primary?).and_return(true)
9
- session
10
- end
11
- end