slipcover 0.2.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ced59e9a5789c91f034b55b574a55ae57440c3f
4
- data.tar.gz: bd722f1f98e0b9b05350377018edd78eaefe3cb0
3
+ metadata.gz: 33f61adeec32ffbd814244eaba5f712525d3c4a4
4
+ data.tar.gz: e7610533acb5be319cbba167b35ad032fff5a102
5
5
  SHA512:
6
- metadata.gz: 069cfef5b41f9f73f5b8387229e96b4c92d1234bc503b23284e226975a939d29a2a248ad254cbeb0f07eab85b6217f34a67c2da184a44473e863b4c828cf7738
7
- data.tar.gz: 21a9ec7275ef8e34889fe3607b527be22aef838a43c6ac055ce4959c426f4c657e62fc976de175ba1e6ee2317e87e8c60e9c54d5f1e98ce2ac5f591c79b0ac7a
6
+ metadata.gz: 09bf73b24123beab8e6182d51fcc73a38f1dd33fa437c59bfe6c6de9b4058c902d83958e6f4d62328df8d6d3febc0148c1ff966b16cfed6403b1f4a4e6fb5826
7
+ data.tar.gz: e5223c6b82b23fd0f0c22c5fb9bc5e5b628d5581c6709c70bce726d9e79a8ceb7bf4bf1c769bf75a5ee1e1823054f3a18733a2eb2636ca17f6ee4ca786df6d35
@@ -9,21 +9,22 @@ module Slipcover
9
9
  class Replicator
10
10
  attr_reader :source_environment, :source_server
11
11
  attr_reader :target_environment, :target_server
12
- attr_reader :logger, :http
12
+ attr_reader :database_name, :logger, :http
13
13
 
14
- def initialize(source_environment = "staging", target_environment = "development", logger = Logger.new("/dev/null"))
15
- @source_environment = source_environment
16
- @source_server = Slipcover::Server.new(Slipcover::Config.yaml_path, source_environment)
14
+ def initialize(opts)
15
+ @source_environment = opts[:source_environment] || "staging"
16
+ @target_environment = opts[:target_environment] || "development"
17
+ @database_name = opts[:database_name]
18
+ @logger = opts[:logger] || Logger.new("/dev/null")
17
19
 
18
- @target_environment = target_environment
20
+ @source_server = Slipcover::Server.new(Slipcover::Config.yaml_path, source_environment)
19
21
  @target_server = Slipcover::Server.new(Slipcover::Config.yaml_path, target_environment)
20
22
 
21
- @logger = logger
22
23
  @http = HttpAdapter.new
23
24
  end
24
25
 
25
26
  def perform
26
- logger.info "Fetching list of #{source_environment} databases..."
27
+ logger.info "Fetching list of #{source_environment} databases#{" containing string \"" + database_name + "\"" if database_name}..."
27
28
  logger.info "Replicating these dbs: #{dbs_to_replicate.join(",")}"
28
29
 
29
30
  dbs_to_replicate.each_with_index.map do |db, i|
@@ -31,14 +32,23 @@ module Slipcover
31
32
  end.map(&:join)
32
33
  end
33
34
 
35
+
36
+ private
37
+
34
38
  def dbs_to_replicate
35
39
  @dbs_to_replicate ||= begin
36
40
  require 'slipcover/http_adapter'
37
41
  dbs = http.get(source_server.url + "/_all_dbs")
38
- dbs.select { |db| db.end_with?(source_environment) }
42
+ dbs.select { |db| db_matches?(db) }
39
43
  end
40
44
  end
41
45
 
46
+ def db_matches?(db)
47
+ matches = db.end_with?(source_environment)
48
+ matches &&= db.include?(database_name) if database_name
49
+ matches
50
+ end
51
+
42
52
  def replicate(source_db_name, th_id)
43
53
  target_db_name = infer_target_db_name(source_db_name)
44
54
  source_url = db_url(source_server, source_db_name)
@@ -1,12 +1,18 @@
1
1
  namespace :slipcover do
2
2
  namespace :db do
3
3
  desc "Pull all CouchDB databases from the target environment into the local CouchDB"
4
- task :pull, [:stage_name] => (:environment if defined?(Rails)) do |t, args|
4
+ task :pull, [:stage_name, :query] => (:environment if defined?(Rails)) do |t, args|
5
5
  require 'slipcover/dev_tools'
6
6
  logger = Logger.new(STDOUT)
7
7
  logger.level = ENV["DEBUG"] ? Logger::DEBUG : Logger::INFO
8
8
  stage = args[:stage_name] || "staging"
9
- Slipcover::DevTools::Replicator.new(stage, "development", logger).perform
9
+ query = args[:query] || ""
10
+ Slipcover::DevTools::Replicator.new(
11
+ source_environment: stage,
12
+ target_environment: 'development',
13
+ database_name: query,
14
+ logger: logger
15
+ ).perform
10
16
  end
11
17
  end
12
18
  end
@@ -1,3 +1,3 @@
1
1
  module Slipcover
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slipcover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kane Baccigalupi
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-06-10 00:00:00.000000000 Z
14
+ date: 2014-06-24 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  requirements: []
145
145
  rubyforge_project:
146
- rubygems_version: 2.2.1
146
+ rubygems_version: 2.2.2
147
147
  signing_key:
148
148
  specification_version: 4
149
149
  summary: Lite wrapper for CouchDB