hoosegow 1.2.5 → 1.2.6

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
- SHA1:
3
- metadata.gz: 2a18d761dbf6eafb32f8d3fb2b8da10fc21ea59a
4
- data.tar.gz: 9c8756d048de9fd588bddd0ddd880be61c971bb0
2
+ SHA256:
3
+ metadata.gz: e39782e9a5c8b68841412a3c05965f2f1fff65930971832c821f387250e24679
4
+ data.tar.gz: 8dc38e89647af50f078a7a1e14e2e4f8834c13a4ebeafbacb1044ee93fc125db
5
5
  SHA512:
6
- metadata.gz: 8d9bb1c69adf1afc20c383e5c54f33ee2d2205511c5590ec428a204bf8141cccd82406528ed81ddaa052b02a255f3aa51a90eba90f60896ef244f32423e0a3d7
7
- data.tar.gz: 358d6005a41b2b0b50cdd2464af40de18c09480443577313fed645d0a3ec31e79d9a65c183e5ff72dd084dcc0745c22005dcbb51d2442667d26801546fa1c56f
6
+ metadata.gz: 32625371ed542ffec17e775e837bd946db3717aea5f810236c2f1d44614c09469d68ea3073dcc87c035e7d4b7080b1e22727388990283994754b4feb49d3d996
7
+ data.tar.gz: 8404be59505bf62095bba370d4f61dedc2b88ba912c7eb22ae08d5e316a90f201e3f7f8bfb6b05a5901c89fc7dfa2e9f726e60d61febd69a6c7ceddefabc75aa
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'hoosegow'
3
- s.version = '1.2.5'
3
+ s.version = '1.2.6'
4
4
  s.summary = "A Docker jail for ruby code"
5
5
  s.description = "Hoosegow provides an RPC layer on top of Docker containers so that you can isolate unsafe parts of your application."
6
6
  s.authors = ["Ben Toews", "Matt Burke"]
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.required_ruby_version = ">= 1.9.3"
25
25
  s.add_development_dependency 'rake'
26
26
  s.add_development_dependency 'rspec', '>= 2.14.1', '~> 2.14'
27
- s.add_runtime_dependency 'msgpack', '>= 0.5.6', '~> 0.5'
27
+ s.add_runtime_dependency 'msgpack', '~> 1.0.0'
28
28
  s.add_runtime_dependency 'yajl-ruby', '>= 1.1.0', '~> 1.1'
29
29
  s.add_runtime_dependency 'docker-api', '~> 1.19'
30
30
  end
@@ -80,9 +80,11 @@ class Hoosegow
80
80
  # Returns nothing.
81
81
  def create_container(image)
82
82
  @container = ::Docker::Container.create @container_options.merge(
83
- :StdinOnce => true,
84
- :OpenStdin => true,
85
- :Volumes => volumes_for_create,
83
+ :StdinOnce => true,
84
+ :OpenStdin => true,
85
+ :HostConfig => {
86
+ :Binds => volumes_for_bind
87
+ },
86
88
  :Image => image
87
89
  )
88
90
  callback @after_create
@@ -92,7 +94,7 @@ class Hoosegow
92
94
  #
93
95
  # Returns nothing.
94
96
  def start_container
95
- @container.start :Binds => volumes_for_bind
97
+ @container.start
96
98
  callback @after_start
97
99
  end
98
100
 
@@ -200,19 +202,7 @@ class Hoosegow
200
202
  end
201
203
  end
202
204
 
203
- # Private: Generate the `Volumes` argument for creating a container.
204
- #
205
- # Given a hash of container_path => local_path in @volumes, generate a
206
- # hash of container_path => {}.
207
- def volumes_for_create
208
- result = {}
209
- each_volume do |container_path, local_path, permissions|
210
- result[container_path] = {}
211
- end
212
- result
213
- end
214
-
215
- # Private: Generate the `Binds` argument for starting a container.
205
+ # Private: Generate the `Binds` argument for creating a container.
216
206
  #
217
207
  # Given a hash of container_path => local_path in @volumes, generate an
218
208
  # array of "local_path:container_path:rw".
@@ -1,3 +1,4 @@
1
+ require 'fileutils'
1
2
  require_relative '../lib/hoosegow'
2
3
 
3
4
  unless defined?(CONFIG)
@@ -18,13 +19,11 @@ describe Hoosegow::Docker do
18
19
 
19
20
  context 'unspecified' do
20
21
  subject { described_class.new }
21
- its(:volumes_for_create) { should be_empty }
22
22
  its(:volumes_for_bind) { should be_empty }
23
23
  end
24
24
 
25
25
  context 'empty' do
26
26
  let(:volumes) { {} }
27
- its(:volumes_for_create) { should be_empty }
28
27
  its(:volumes_for_bind) { should be_empty }
29
28
  end
30
29
 
@@ -33,10 +32,6 @@ describe Hoosegow::Docker do
33
32
  "/inside/path" => "/home/burke/data-for-container:rw",
34
33
  "/other/path" => "/etc/shared-config",
35
34
  } }
36
- its(:volumes_for_create) { should == {
37
- "/inside/path" => {},
38
- "/other/path" => {},
39
- } }
40
35
  its(:volumes_for_bind) { should == [
41
36
  "/home/burke/data-for-container:/inside/path:rw",
42
37
  "/etc/shared-config:/other/path:ro",
@@ -44,6 +39,32 @@ describe Hoosegow::Docker do
44
39
  end
45
40
  end
46
41
 
42
+ context "volume is writable" do
43
+ it "calls after_create" do
44
+ test_dir = File.join(Dir.pwd, 'volume-test')
45
+ FileUtils.remove_dir(test_dir, true)
46
+ FileUtils.mkpath(test_dir)
47
+
48
+ config = CONFIG.merge(
49
+ :Entrypoint => ['/usr/bin/touch', '/volume-test/test'],
50
+ :volumes => { '/volume-test' => test_dir + ":rw"}
51
+ )
52
+ docker = Hoosegow::Docker.new(config)
53
+ begin
54
+ docker.create_container CONFIG[:image_name]
55
+ docker.start_container
56
+ ensure
57
+ docker.stop_container
58
+ docker.delete_container
59
+ end
60
+
61
+ exists = File.exists?(File.join(test_dir, 'test'))
62
+ expect(exists).to be_truthy
63
+ FileUtils.remove_dir(test_dir, true)
64
+ end
65
+ end
66
+
67
+
47
68
  context 'docker_url' do
48
69
  it "correctly generates TCP urls" do
49
70
  hoosegow = Hoosegow::Docker.new CONFIG.merge(:host => "1.1.1.1", :port => 1234)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoosegow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Toews
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-09-02 00:00:00.000000000 Z
12
+ date: 2018-04-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -49,22 +49,16 @@ dependencies:
49
49
  name: msgpack
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.5.6
55
52
  - - "~>"
56
53
  - !ruby/object:Gem::Version
57
- version: '0.5'
54
+ version: 1.0.0
58
55
  type: :runtime
59
56
  prerelease: false
60
57
  version_requirements: !ruby/object:Gem::Requirement
61
58
  requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 0.5.6
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: '0.5'
61
+ version: 1.0.0
68
62
  - !ruby/object:Gem::Dependency
69
63
  name: yajl-ruby
70
64
  requirement: !ruby/object:Gem::Requirement
@@ -148,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
142
  version: '0'
149
143
  requirements: []
150
144
  rubyforge_project:
151
- rubygems_version: 2.4.5
145
+ rubygems_version: 2.7.6
152
146
  signing_key:
153
147
  specification_version: 4
154
148
  summary: A Docker jail for ruby code