jisota 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +5 -0
  4. data/CHANGELOG.md +21 -0
  5. data/README.md +106 -2
  6. data/Rakefile +10 -0
  7. data/jisota.gemspec +1 -0
  8. data/lib/jisota.rb +4 -2
  9. data/lib/jisota/collection.rb +2 -4
  10. data/lib/jisota/command_script.rb +3 -2
  11. data/lib/jisota/composite_script.rb +2 -2
  12. data/lib/jisota/configuration.rb +3 -3
  13. data/lib/jisota/dsl_base.rb +12 -0
  14. data/lib/jisota/file_script.rb +107 -9
  15. data/lib/jisota/nil_output.rb +14 -0
  16. data/lib/jisota/{logger.rb → output.rb} +16 -35
  17. data/lib/jisota/package.rb +2 -2
  18. data/lib/jisota/package_script.rb +28 -20
  19. data/lib/jisota/packages/gem_install.rb +17 -0
  20. data/lib/jisota/packages/nginx_passenger.rb +34 -0
  21. data/lib/jisota/packages/ruby.rb +2 -2
  22. data/lib/jisota/param_parser.rb +30 -19
  23. data/lib/jisota/provisioner.rb +7 -3
  24. data/lib/jisota/script_block.rb +13 -14
  25. data/lib/jisota/script_context.rb +24 -0
  26. data/lib/jisota/server.rb +2 -1
  27. data/lib/jisota/ssh_engine.rb +6 -2
  28. data/lib/jisota/ssh_session.rb +10 -15
  29. data/lib/jisota/version.rb +1 -1
  30. data/package_files/nginx_passenger/nginx_service +65 -0
  31. data/spec/acceptance/ruby_passenger_nginx_spec.rb +24 -0
  32. data/spec/acceptance/simple_script_spec.rb +8 -24
  33. data/spec/acceptance/upload_blocks_spec.rb +34 -0
  34. data/spec/lib/jisota/collection_spec.rb +10 -0
  35. data/spec/lib/jisota/command_script_spec.rb +4 -3
  36. data/spec/lib/jisota/composite_script_spec.rb +8 -6
  37. data/spec/lib/jisota/configuration_spec.rb +1 -3
  38. data/spec/lib/jisota/dsl_base_spec.rb +37 -0
  39. data/spec/lib/jisota/file_script_spec.rb +63 -8
  40. data/spec/lib/jisota/output_spec.rb +84 -0
  41. data/spec/lib/jisota/package_script_spec.rb +20 -8
  42. data/spec/lib/jisota/package_spec.rb +2 -6
  43. data/spec/lib/jisota/packages/apt_spec.rb +7 -4
  44. data/spec/lib/jisota/packages/gem_install_spec.rb +18 -0
  45. data/spec/lib/jisota/packages/nginx_passenger_spec.rb +17 -0
  46. data/spec/lib/jisota/packages/ruby_spec.rb +6 -3
  47. data/spec/lib/jisota/param_parser_spec.rb +105 -0
  48. data/spec/lib/jisota/provisioner_spec.rb +30 -0
  49. data/spec/lib/jisota/role_spec.rb +1 -3
  50. data/spec/lib/jisota/script_block_spec.rb +7 -4
  51. data/spec/lib/jisota/ssh_engine_spec.rb +26 -0
  52. data/spec/lib/jisota/ssh_session_spec.rb +53 -0
  53. data/spec/spec_helper.rb +11 -1
  54. data/spec/support/acceptance_helpers.rb +45 -0
  55. data/spec/test_files/nginx_default.conf +121 -0
  56. data/spec/vagrant/Vagrantfile +118 -0
  57. data/spec/vagrant/ssh_key +27 -0
  58. metadata +55 -7
  59. data/lib/jisota/upload_file.rb +0 -3
  60. data/spec/lib/jisota/logger_spec.rb +0 -34
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ module Jisota
4
+ describe SSHSession do
5
+
6
+ let(:wrapper) { SSHSession.new(session, scp_engine: scp_engine) }
7
+ let(:session) { instance_double(Net::SSH::Connection::Session, loop: nil) }
8
+ let(:channel) { instance_double(Net::SSH::Connection::Channel, on_data: nil, on_extended_data: nil, on_request: nil) }
9
+ let(:logger) { instance_double(Output, system_message: nil, error: nil) }
10
+ let(:scp_engine) { class_double(Net::SCP, new: scp_instance) }
11
+ let(:scp_instance) { instance_double(Net::SCP, upload!: nil) }
12
+ let(:exit_code) { 0 }
13
+ before do
14
+ allow(session).to receive(:open_channel).and_yield(channel)
15
+ allow(channel).to receive(:exec).and_yield
16
+ allow(channel).to receive(:on_request).with("exit-status").and_yield(nil, instance_double(Net::SSH::Buffer, read_long: exit_code))
17
+ end
18
+
19
+ describe "#command" do
20
+ it "executes command through a channel" do
21
+ result = wrapper.command("touch foo", logger)
22
+
23
+ expect(channel).to have_received(:exec).with("touch foo")
24
+ expect(result).to eq(0)
25
+ expect(logger).to have_received(:system_message).with("Executing touch foo")
26
+ end
27
+
28
+ describe "error in executing command" do
29
+ let(:exit_code) { 1 }
30
+ it "logs error" do
31
+ result = wrapper.command("touch foo", logger)
32
+
33
+ expect(channel).to have_received(:exec).with("touch foo")
34
+ expect(result).to eq(1)
35
+ expect(logger).to have_received(:system_message).with("Executing touch foo")
36
+ expect(logger).to have_received(:error).with("Error running touch foo:")
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#upload" do
42
+ it "delegates to scp engine" do
43
+ result = wrapper.upload(from: "spec/test_files/foo", to: "bar")
44
+
45
+ expect(scp_instance).to have_received(:upload!) do |from, to, options|
46
+ expect(from).to eq("spec/test_files/foo")
47
+ expect(to).to eq("bar")
48
+ end
49
+ end
50
+ end
51
+
52
+ end
53
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,19 @@
1
1
  require 'simplecov'
2
- SimpleCov.start
2
+ SimpleCov.start do
3
+ add_filter "/spec/acceptance"
4
+ add_filter "/spec/support/acceptance_helpers"
5
+ end
6
+
7
+ require "codeclimate-test-reporter"
8
+ CodeClimate::TestReporter.start
3
9
 
4
10
  require 'jisota'
5
11
  require 'byebug'
12
+ require './spec/support/acceptance_helpers'
6
13
 
7
14
  RSpec.configure do |config|
8
15
  config.filter_run :focus
16
+ config.filter_run_excluding type: :acceptance unless config.filter_run[:type] == "acceptance"
9
17
  config.run_all_when_everything_filtered = true
10
18
 
11
19
  config.order = :random
@@ -18,4 +26,6 @@ RSpec.configure do |config|
18
26
  mocks.syntax = :expect
19
27
  mocks.verify_partial_doubles = true
20
28
  end
29
+
30
+ config.include Jisota::AcceptanceHelpers, type: :acceptance
21
31
  end
@@ -0,0 +1,45 @@
1
+ module Jisota
2
+ module AcceptanceHelpers
3
+
4
+ class TestOutput < Output
5
+ class TestIO
6
+ def write(message)
7
+ writes << message
8
+ end
9
+ def flush(*); end
10
+ def writes
11
+ @writes ||= []
12
+ end
13
+ end
14
+
15
+ def initialize(options = {})
16
+ super
17
+ @stdout = TestIO.new
18
+ @stderr = TestIO.new
19
+ @verbose = true
20
+ end
21
+ end
22
+
23
+ def key
24
+ "spec/vagrant/ssh_key"
25
+ end
26
+
27
+ def host
28
+ "33.33.33.33"
29
+ end
30
+
31
+ def user
32
+ "vagrant"
33
+ end
34
+
35
+ def logger
36
+ @logger ||= TestOutput.new
37
+ end
38
+
39
+ def create_ssh_session(&block)
40
+ SSHEngine.new.start(user: user, host: host, keys: [key]) do |ssh_session|
41
+ yield(ssh_session)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,121 @@
1
+
2
+ #user nobody;
3
+ worker_processes 1;
4
+
5
+ #error_log logs/error.log;
6
+ #error_log logs/error.log notice;
7
+ #error_log logs/error.log info;
8
+
9
+ #pid logs/nginx.pid;
10
+
11
+
12
+ events {
13
+ worker_connections 1024;
14
+ }
15
+
16
+
17
+ http {
18
+ passenger_root /usr/local/lib/ruby/gems/2.1.0/gems/passenger-4.0.41;
19
+ passenger_ruby /usr/local/bin/ruby;
20
+
21
+ include mime.types;
22
+ default_type application/octet-stream;
23
+
24
+ #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
25
+ # '$status $body_bytes_sent "$http_referer" '
26
+ # '"$http_user_agent" "$http_x_forwarded_for"';
27
+
28
+ #access_log logs/access.log main;
29
+
30
+ sendfile on;
31
+ #tcp_nopush on;
32
+
33
+ #keepalive_timeout 0;
34
+ keepalive_timeout 65;
35
+
36
+ #gzip on;
37
+
38
+ server {
39
+ listen 80;
40
+ server_name localhost;
41
+
42
+ #charset koi8-r;
43
+
44
+ #access_log logs/host.access.log main;
45
+
46
+ location / {
47
+ root html;
48
+ index index.html index.htm;
49
+ }
50
+
51
+ #error_page 404 /404.html;
52
+
53
+ # redirect server error pages to the static page /50x.html
54
+ #
55
+ error_page 500 502 503 504 /50x.html;
56
+ location = /50x.html {
57
+ root html;
58
+ }
59
+
60
+ # proxy the PHP scripts to Apache listening on 127.0.0.1:80
61
+ #
62
+ #location ~ \.php$ {
63
+ # proxy_pass http://127.0.0.1;
64
+ #}
65
+
66
+ # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
67
+ #
68
+ #location ~ \.php$ {
69
+ # root html;
70
+ # fastcgi_pass 127.0.0.1:9000;
71
+ # fastcgi_index index.php;
72
+ # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
73
+ # include fastcgi_params;
74
+ #}
75
+
76
+ # deny access to .htaccess files, if Apache's document root
77
+ # concurs with nginx's one
78
+ #
79
+ #location ~ /\.ht {
80
+ # deny all;
81
+ #}
82
+ }
83
+
84
+
85
+ # another virtual host using mix of IP-, name-, and port-based configuration
86
+ #
87
+ #server {
88
+ # listen 8000;
89
+ # listen somename:8080;
90
+ # server_name somename alias another.alias;
91
+
92
+ # location / {
93
+ # root html;
94
+ # index index.html index.htm;
95
+ # }
96
+ #}
97
+
98
+
99
+ # HTTPS server
100
+ #
101
+ #server {
102
+ # listen 443;
103
+ # server_name localhost;
104
+
105
+ # ssl on;
106
+ # ssl_certificate cert.pem;
107
+ # ssl_certificate_key cert.key;
108
+
109
+ # ssl_session_timeout 5m;
110
+
111
+ # ssl_protocols SSLv2 SSLv3 TLSv1;
112
+ # ssl_ciphers HIGH:!aNULL:!MD5;
113
+ # ssl_prefer_server_ciphers on;
114
+
115
+ # location / {
116
+ # root html;
117
+ # index index.html index.htm;
118
+ # }
119
+ #}
120
+
121
+ }
@@ -0,0 +1,118 @@
1
+ # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
2
+ VAGRANTFILE_API_VERSION = "2"
3
+
4
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
5
+ # All Vagrant configuration is done here. The most common configuration
6
+ # options are documented and commented below. For a complete reference,
7
+ # please see the online documentation at vagrantup.com.
8
+
9
+ # Every Vagrant virtual environment requires a box to build off of.
10
+ config.vm.box = "chef/ubuntu-13.10"
11
+ config.vm.hostname = "jisota"
12
+
13
+ #config.dns.patterns = [/^.*mysite.dev$/, /^.*myothersite.dev$/]
14
+
15
+ # The url from where the 'config.vm.box' box will be fetched if it
16
+ # doesn't already exist on the user's system.
17
+ # config.vm.box_url = "http://domain.com/path/to/above.box"
18
+
19
+ # Create a forwarded port mapping which allows access to a specific port
20
+ # within the machine from a port on the host machine. In the example below,
21
+ # accessing "localhost:8080" will access port 80 on the guest machine.
22
+ # config.vm.network "forwarded_port", guest: 80, host: 8080
23
+
24
+ # Create a private network, which allows host-only access to the machine
25
+ # using a specific IP.
26
+ config.vm.network :private_network, ip: "33.33.33.33"
27
+
28
+ # Create a public network, which generally matched to bridged network.
29
+ # Bridged networks make the machine appear as another physical device on
30
+ # your network.
31
+ # config.vm.network "public_network"
32
+
33
+ # If true, then any SSH connections made will enable agent forwarding.
34
+ # Default value: false
35
+ # config.ssh.forward_agent = true
36
+
37
+ # Share an additional folder to the guest VM. The first argument is
38
+ # the path on the host to the actual folder. The second argument is
39
+ # the path on the guest to mount the folder. And the optional third
40
+ # argument is a set of non-required options.
41
+ # config.vm.synced_folder "../data", "/vagrant_data"
42
+
43
+ # Provider-specific configuration so you can fine-tune various
44
+ # backing providers for Vagrant. These expose provider-specific options.
45
+ # Example for VirtualBox:
46
+ #
47
+ # config.vm.provider "virtualbox" do |vb|
48
+ # # Don't boot with headless mode
49
+ # vb.gui = true
50
+ #
51
+ # # Use VBoxManage to customize the VM. For example to change memory:
52
+ # vb.customize ["modifyvm", :id, "--memory", "1024"]
53
+ # end
54
+ #
55
+ # View the documentation for the provider you're using for more
56
+ # information on available options.
57
+
58
+ # Enable provisioning with Puppet stand alone. Puppet manifests
59
+ # are contained in a directory path relative to this Vagrantfile.
60
+ # You will need to create the manifests directory and a manifest in
61
+ # the file chef/ubuntu-13.10.pp in the manifests_path directory.
62
+ #
63
+ # An example Puppet manifest to provision the message of the day:
64
+ #
65
+ # # group { "puppet":
66
+ # # ensure => "present",
67
+ # # }
68
+ # #
69
+ # # File { owner => 0, group => 0, mode => 0644 }
70
+ # #
71
+ # # file { '/etc/motd':
72
+ # # content => "Welcome to your Vagrant-built virtual machine!
73
+ # # Managed by Puppet.\n"
74
+ # # }
75
+ #
76
+ # config.vm.provision "puppet" do |puppet|
77
+ # puppet.manifests_path = "manifests"
78
+ # puppet.manifest_file = "site.pp"
79
+ # end
80
+
81
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
82
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
83
+ # some recipes and/or roles.
84
+ #
85
+ # config.vm.provision "chef_solo" do |chef|
86
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
87
+ # chef.roles_path = "../my-recipes/roles"
88
+ # chef.data_bags_path = "../my-recipes/data_bags"
89
+ # chef.add_recipe "mysql"
90
+ # chef.add_role "web"
91
+ #
92
+ # # You may also specify custom JSON attributes:
93
+ # chef.json = { :mysql_password => "foo" }
94
+ # end
95
+
96
+ # Enable provisioning with chef server, specifying the chef server URL,
97
+ # and the path to the validation key (relative to this Vagrantfile).
98
+ #
99
+ # The Opscode Platform uses HTTPS. Substitute your organization for
100
+ # ORGNAME in the URL and validation key.
101
+ #
102
+ # If you have your own Chef Server, use the appropriate URL, which may be
103
+ # HTTP instead of HTTPS depending on your configuration. Also change the
104
+ # validation key to validation.pem.
105
+ #
106
+ # config.vm.provision "chef_client" do |chef|
107
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
108
+ # chef.validation_key_path = "ORGNAME-validator.pem"
109
+ # end
110
+ #
111
+ # If you're using the Opscode platform, your validator client is
112
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
113
+ #
114
+ # If you have your own Chef Server, the default validation client name is
115
+ # chef-validator, unless you changed the configuration.
116
+ #
117
+ # chef.validation_client_name = "ORGNAME-validator"
118
+ end
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
3
+ w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
4
+ kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
5
+ hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
6
+ Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
7
+ yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
8
+ ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
9
+ Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
10
+ TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
11
+ iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
12
+ sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
13
+ 4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
14
+ cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
15
+ EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
16
+ CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
17
+ 3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
18
+ YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
19
+ 3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
20
+ dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
21
+ 6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
22
+ P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
23
+ llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
24
+ kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
25
+ +vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
26
+ NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
27
+ -----END RSA PRIVATE KEY-----
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jisota
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lasse Skindstad Ebert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-30 00:00:00.000000000 Z
11
+ date: 2014-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 4.2.8
125
+ - !ruby/object:Gem::Dependency
126
+ name: codeclimate-test-reporter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  description: Easily provision servers using ruby, existing packages, your own packages
126
140
  and a nice DSL
127
141
  email:
@@ -132,6 +146,8 @@ extra_rdoc_files: []
132
146
  files:
133
147
  - ".gitignore"
134
148
  - ".rspec"
149
+ - ".travis.yml"
150
+ - CHANGELOG.md
135
151
  - Gemfile
136
152
  - Guardfile
137
153
  - LICENSE.txt
@@ -143,40 +159,58 @@ files:
143
159
  - lib/jisota/command_script.rb
144
160
  - lib/jisota/composite_script.rb
145
161
  - lib/jisota/configuration.rb
162
+ - lib/jisota/dsl_base.rb
146
163
  - lib/jisota/errors.rb
147
164
  - lib/jisota/file_script.rb
148
- - lib/jisota/logger.rb
165
+ - lib/jisota/nil_output.rb
166
+ - lib/jisota/output.rb
149
167
  - lib/jisota/package.rb
150
168
  - lib/jisota/package_script.rb
151
169
  - lib/jisota/packages/apt.rb
170
+ - lib/jisota/packages/gem_install.rb
171
+ - lib/jisota/packages/nginx_passenger.rb
152
172
  - lib/jisota/packages/ruby.rb
153
173
  - lib/jisota/param.rb
154
174
  - lib/jisota/param_parser.rb
155
175
  - lib/jisota/provisioner.rb
156
176
  - lib/jisota/role.rb
157
177
  - lib/jisota/script_block.rb
178
+ - lib/jisota/script_context.rb
158
179
  - lib/jisota/server.rb
159
180
  - lib/jisota/ssh_engine.rb
160
181
  - lib/jisota/ssh_session.rb
161
- - lib/jisota/upload_file.rb
162
182
  - lib/jisota/version.rb
183
+ - package_files/nginx_passenger/nginx_service
184
+ - spec/acceptance/ruby_passenger_nginx_spec.rb
163
185
  - spec/acceptance/simple_script_spec.rb
186
+ - spec/acceptance/upload_blocks_spec.rb
164
187
  - spec/lib/jisota/collection_spec.rb
165
188
  - spec/lib/jisota/command_script_spec.rb
166
189
  - spec/lib/jisota/composite_script_spec.rb
167
190
  - spec/lib/jisota/configuration_spec.rb
191
+ - spec/lib/jisota/dsl_base_spec.rb
168
192
  - spec/lib/jisota/file_script_spec.rb
169
- - spec/lib/jisota/logger_spec.rb
193
+ - spec/lib/jisota/output_spec.rb
170
194
  - spec/lib/jisota/package_script_spec.rb
171
195
  - spec/lib/jisota/package_spec.rb
172
196
  - spec/lib/jisota/packages/apt_spec.rb
197
+ - spec/lib/jisota/packages/gem_install_spec.rb
198
+ - spec/lib/jisota/packages/nginx_passenger_spec.rb
173
199
  - spec/lib/jisota/packages/ruby_spec.rb
200
+ - spec/lib/jisota/param_parser_spec.rb
201
+ - spec/lib/jisota/provisioner_spec.rb
174
202
  - spec/lib/jisota/role_spec.rb
175
203
  - spec/lib/jisota/script_block_spec.rb
176
204
  - spec/lib/jisota/server_spec.rb
205
+ - spec/lib/jisota/ssh_engine_spec.rb
206
+ - spec/lib/jisota/ssh_session_spec.rb
177
207
  - spec/lib/jisota_spec.rb
178
208
  - spec/spec_helper.rb
209
+ - spec/support/acceptance_helpers.rb
179
210
  - spec/test_files/foo
211
+ - spec/test_files/nginx_default.conf
212
+ - spec/vagrant/Vagrantfile
213
+ - spec/vagrant/ssh_key
180
214
  homepage: https://github.com/lasseebert/jisota
181
215
  licenses:
182
216
  - MIT
@@ -197,25 +231,39 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
231
  version: '0'
198
232
  requirements: []
199
233
  rubyforge_project:
200
- rubygems_version: 2.2.0
234
+ rubygems_version: 2.2.2
201
235
  signing_key:
202
236
  specification_version: 4
203
237
  summary: Easily provision servers
204
238
  test_files:
239
+ - spec/acceptance/ruby_passenger_nginx_spec.rb
205
240
  - spec/acceptance/simple_script_spec.rb
241
+ - spec/acceptance/upload_blocks_spec.rb
206
242
  - spec/lib/jisota/collection_spec.rb
207
243
  - spec/lib/jisota/command_script_spec.rb
208
244
  - spec/lib/jisota/composite_script_spec.rb
209
245
  - spec/lib/jisota/configuration_spec.rb
246
+ - spec/lib/jisota/dsl_base_spec.rb
210
247
  - spec/lib/jisota/file_script_spec.rb
211
- - spec/lib/jisota/logger_spec.rb
248
+ - spec/lib/jisota/output_spec.rb
212
249
  - spec/lib/jisota/package_script_spec.rb
213
250
  - spec/lib/jisota/package_spec.rb
214
251
  - spec/lib/jisota/packages/apt_spec.rb
252
+ - spec/lib/jisota/packages/gem_install_spec.rb
253
+ - spec/lib/jisota/packages/nginx_passenger_spec.rb
215
254
  - spec/lib/jisota/packages/ruby_spec.rb
255
+ - spec/lib/jisota/param_parser_spec.rb
256
+ - spec/lib/jisota/provisioner_spec.rb
216
257
  - spec/lib/jisota/role_spec.rb
217
258
  - spec/lib/jisota/script_block_spec.rb
218
259
  - spec/lib/jisota/server_spec.rb
260
+ - spec/lib/jisota/ssh_engine_spec.rb
261
+ - spec/lib/jisota/ssh_session_spec.rb
219
262
  - spec/lib/jisota_spec.rb
220
263
  - spec/spec_helper.rb
264
+ - spec/support/acceptance_helpers.rb
221
265
  - spec/test_files/foo
266
+ - spec/test_files/nginx_default.conf
267
+ - spec/vagrant/Vagrantfile
268
+ - spec/vagrant/ssh_key
269
+ has_rdoc: