slipcover 0.2.3 → 0.2.4

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: 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