pawnee 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -1
- data/README.md +4 -1
- data/Rakefile +21 -1
- data/lib/pawnee/pawnee/base.rb +2 -0
- data/lib/pawnee/pawnee/cli.rb +4 -1
- data/lib/pawnee/pawnee/modified.rb +59 -0
- data/lib/pawnee/pawnee/templates/newgem/README.md.tt +26 -0
- data/lib/pawnee/pawnee/templates/newgem/newgem.gemspec.tt +10 -0
- data/lib/pawnee/pawnee/templates/newgem/spec/spec_helper.rb.tt +18 -0
- data/lib/pawnee/pawnee/templates/newgem/spec/vagrant/Vagrantfile.tt +99 -0
- data/lib/pawnee/pawnee/templates/newgem/spec/vagrant/vagrant.rb.tt +30 -0
- data/lib/pawnee/pawnee/version.rb +1 -1
- data/spec/actions/file_spec.rb +27 -0
- data/spec/base_spec.rb +1 -0
- data/spec/modified_spec.rb +34 -0
- data/spec/spec_helper.rb +5 -3
- metadata +12 -4
data/.travis.yml
CHANGED
@@ -2,6 +2,7 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 1.9.2
|
4
4
|
- 1.9.3
|
5
|
-
|
5
|
+
# # we can't run in jruby right now due to open-ssl lib
|
6
|
+
# - jruby-19mode # JRuby in 1.9 mode
|
6
7
|
# uncomment this line if your project needs to run something other than `rake`:
|
7
8
|
# script: bundle exec rspec spec
|
data/README.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
[![Build Status](https://secure.travis-ci.org/ryanstout/pawnee.png?branch=master)](http://travis-ci.org/ryanstout/pawnee)
|
2
|
+
|
3
|
+
|
1
4
|
# Pawnee - making server provisioning easier
|
2
5
|
|
3
6
|
[NOTE: This is still a work in progress and not ready for use yet]
|
@@ -111,7 +114,7 @@ standard config options:
|
|
111
114
|
- aws...
|
112
115
|
- s3...
|
113
116
|
|
114
|
-
|
117
|
+
### exposed by unicorn for example
|
115
118
|
app_server_locations ['localhost:3000', 'localhost:3001'] - gets picked up on by nginx maybe?
|
116
119
|
|
117
120
|
|
data/Rakefile
CHANGED
@@ -8,4 +8,24 @@ Rake::TestTask.new do |t|
|
|
8
8
|
t.verbose = true
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
|
12
|
+
require 'rspec/core/rake_task'
|
13
|
+
|
14
|
+
desc 'Default: run specs.'
|
15
|
+
task :default => :spec
|
16
|
+
|
17
|
+
desc "Run specs"
|
18
|
+
RSpec::Core::RakeTask.new do |t|
|
19
|
+
if ENV['TRAVIS']
|
20
|
+
# Unfortunately we can't run vagrant on travis,
|
21
|
+
# so this limits us quite a bit on what tests
|
22
|
+
# we can run
|
23
|
+
t.pattern = "./spec/base_spec.rb"
|
24
|
+
else
|
25
|
+
t.pattern = "./spec/**/*_spec.rb"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# ENV['TRAVIS']
|
30
|
+
|
31
|
+
# task :default => :test
|
data/lib/pawnee/pawnee/base.rb
CHANGED
@@ -8,6 +8,7 @@ require 'pawnee/parser/options'
|
|
8
8
|
require 'active_support/core_ext/hash/deep_merge'
|
9
9
|
require 'pawnee/roles'
|
10
10
|
require 'pawnee/invocation'
|
11
|
+
require 'pawnee/modified'
|
11
12
|
|
12
13
|
module Pawnee
|
13
14
|
# The pawnee gem provides the Pawnee::Base class, which includes actions
|
@@ -19,6 +20,7 @@ module Pawnee
|
|
19
20
|
include ThorSsh::Actions
|
20
21
|
include Pawnee::Actions
|
21
22
|
include Pawnee::Invocation
|
23
|
+
include Pawnee::Modified
|
22
24
|
include Roles
|
23
25
|
|
24
26
|
attr_accessor :server
|
data/lib/pawnee/pawnee/cli.rb
CHANGED
@@ -55,9 +55,12 @@ module Pawnee
|
|
55
55
|
template(File.join("newgem/README.md.tt"), File.join(target, "README.md"), opts)
|
56
56
|
template(File.join("newgem/gitignore.tt"), File.join(target, ".gitignore"), opts)
|
57
57
|
template(File.join("newgem/newgem.gemspec.tt"), File.join(target, "#{name}.gemspec"), opts)
|
58
|
-
template(File.join("newgem/lib/pawnee/newgem.rb.tt"),
|
58
|
+
template(File.join("newgem/lib/pawnee/newgem.rb.tt"), File.join(target, "lib/pawnee/#{name}.rb"), opts)
|
59
59
|
template(File.join("newgem/lib/pawnee/newgem/version.rb.tt"), File.join(target, "lib/#{folder_name}/version.rb"), opts)
|
60
60
|
template(File.join("newgem/lib/pawnee/newgem/base.rb.tt"), File.join(target, "lib/#{folder_name}/base.rb"), opts)
|
61
|
+
template(File.join("newgem/spec/spec_helper.rb.tt"), File.join(target, "spec/spec_helper.rb"), opts)
|
62
|
+
template(File.join("newgem/spec/vagrant/Vagrantfile.tt"), File.join(target, "spec/vagrant/Vagrantfile"), opts)
|
63
|
+
template(File.join("newgem/spec/vagrant/vagrant.rb.tt"), File.join(target, "spec/vagrant/vagrant.rb"), opts)
|
61
64
|
if options[:bin]
|
62
65
|
template(File.join("newgem/bin/newgem.tt"), File.join(target, 'bin', name), opts)
|
63
66
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Pawnee
|
2
|
+
module Modified
|
3
|
+
def self.included(base)
|
4
|
+
# Extend EmptyDirectory to track modifiations
|
5
|
+
Thor::Actions::EmptyDirectory.class_eval do
|
6
|
+
alias :old_invoke_with_conflict_check :invoke_with_conflict_check
|
7
|
+
|
8
|
+
# Change invoke with conflict check to track changes
|
9
|
+
# when the block is invoked.
|
10
|
+
def invoke_with_conflict_check(*args, &block)
|
11
|
+
if block_given?
|
12
|
+
old_invoke_with_conflict_check(*args) do
|
13
|
+
results = yield
|
14
|
+
base.track_modification!
|
15
|
+
return results
|
16
|
+
end
|
17
|
+
else
|
18
|
+
return old_invoke_with_conflict_check(*args)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
# Actions track if they modify something, or if it is
|
26
|
+
# already in the desired state. If they modify, they
|
27
|
+
# call the track_modification! method on the base class.
|
28
|
+
#
|
29
|
+
# modified? returns true if there has been a tracked
|
30
|
+
# modification within the current modify_block block
|
31
|
+
# or within the current task.
|
32
|
+
def modified?
|
33
|
+
(@modifications && @modifications.first) || false
|
34
|
+
end
|
35
|
+
|
36
|
+
# Track a modification within the current modification
|
37
|
+
# block.
|
38
|
+
def track_modification!
|
39
|
+
@modifications ||= [false]
|
40
|
+
@modifications[@modifications.size-1] = true
|
41
|
+
end
|
42
|
+
|
43
|
+
# Allows you to track modifications within a block. During
|
44
|
+
# the block any call to modified? will return the value for
|
45
|
+
# only during the block.
|
46
|
+
def modify_block(&block)
|
47
|
+
@modifications ||= [false]
|
48
|
+
|
49
|
+
# Add a modification value to the stack
|
50
|
+
@modifications << false
|
51
|
+
|
52
|
+
yield
|
53
|
+
|
54
|
+
# Return the modification value (can also be retrieved
|
55
|
+
# with modified?)
|
56
|
+
return @modifications.pop
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -20,6 +20,32 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
TODO: Write usage instructions here
|
22
22
|
|
23
|
+
|
24
|
+
## Running Tests
|
25
|
+
|
26
|
+
The test run through vagrant, which seemed logical since we want to test ssh stuff.
|
27
|
+
|
28
|
+
### Install a box (first time only)
|
29
|
+
cd spec/vagrant
|
30
|
+
bundle exec vagrant box add ubuntu11 http://timhuegdon.com/vagrant-boxes/ubuntu-11.10.box
|
31
|
+
bundle exec vagrant init ubuntu11
|
32
|
+
|
33
|
+
# enable the sandbox and create a commit we can rollback to
|
34
|
+
bundle exec vagrant sandbox on
|
35
|
+
bundle exec vagrant sandbox commit
|
36
|
+
|
37
|
+
### Start box
|
38
|
+
vagrant up
|
39
|
+
|
40
|
+
### Run the tests
|
41
|
+
cd ../..
|
42
|
+
bundle exec rspec
|
43
|
+
|
44
|
+
### When you're done
|
45
|
+
cd spec/vagrant
|
46
|
+
vagrant halt
|
47
|
+
|
48
|
+
|
23
49
|
## Contributing
|
24
50
|
|
25
51
|
1. Fork it
|
@@ -14,5 +14,15 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = "pawnee-<%=config[:name]%>"
|
15
15
|
gem.require_paths = ["lib/pawnee"]
|
16
16
|
gem.add_runtime_dependency 'pawnee'
|
17
|
+
|
18
|
+
# Pawnee development dependencies - versions for these will
|
19
|
+
# be pulled from the main pawnee gem
|
20
|
+
gem.add_development_dependency 'turn'
|
21
|
+
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'vagrant'
|
23
|
+
gem.add_development_dependency 'sahara'
|
24
|
+
gem.add_development_dependency 'rake'
|
25
|
+
gem.add_development_dependency 'rdoc'
|
26
|
+
|
17
27
|
gem.version = <%=config[:constant_name]%>::VERSION
|
18
28
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
|
3
|
+
libdir = File.expand_path(File.dirname(__FILE__) + "/../lib/pawnee")
|
4
|
+
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
5
|
+
|
6
|
+
require 'pawnee/<%= config[:name] %>/base'
|
7
|
+
require 'vagrant/vagrant'
|
8
|
+
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.after(:suite) do
|
12
|
+
unless ENV['TRAVIS']
|
13
|
+
# Rollback the server
|
14
|
+
puts "Roll back test server"
|
15
|
+
`cd spec/vagrant/ ; BUNDLE_GEMFILE=../../Gemfile bundle exec vagrant sandbox rollback`
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant::Config.run 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 = "ubuntu11"
|
11
|
+
|
12
|
+
# The url from where the 'config.vm.box' box will be fetched if it
|
13
|
+
# doesn't already exist on the user's system.
|
14
|
+
# config.vm.box_url = "http://domain.com/path/to/above.box"
|
15
|
+
|
16
|
+
# Boot with a GUI so you can see the screen. (Default is headless)
|
17
|
+
# config.vm.boot_mode = :gui
|
18
|
+
|
19
|
+
# Assign this VM to a host-only network IP, allowing you to access it
|
20
|
+
# via the IP. Host-only networks can talk to the host machine as well as
|
21
|
+
# any other machines on the same network, but cannot be accessed (through this
|
22
|
+
# network interface) by any external networks.
|
23
|
+
# config.vm.network :hostonly, "192.168.33.10"
|
24
|
+
|
25
|
+
# Assign this VM to a bridged network, allowing you to connect directly to a
|
26
|
+
# network using the host's network device. This makes the VM appear as another
|
27
|
+
# physical device on your network.
|
28
|
+
# config.vm.network :bridged
|
29
|
+
|
30
|
+
# Forward a port from the guest to the host, which allows for outside
|
31
|
+
# computers to access the VM, whereas host only networking does not.
|
32
|
+
# config.vm.forward_port 80, 8080
|
33
|
+
|
34
|
+
# Share an additional folder to the guest VM. The first argument is
|
35
|
+
# an identifier, the second is the path on the guest to mount the
|
36
|
+
# folder, and the third is the path on the host to the actual folder.
|
37
|
+
# config.vm.share_folder "v-data", "/vagrant_data", "../data"
|
38
|
+
|
39
|
+
# Enable provisioning with Puppet stand alone. Puppet manifests
|
40
|
+
# are contained in a directory path relative to this Vagrantfile.
|
41
|
+
# You will need to create the manifests directory and a manifest in
|
42
|
+
# the file ubuntu11.pp in the manifests_path directory.
|
43
|
+
#
|
44
|
+
# An example Puppet manifest to provision the message of the day:
|
45
|
+
#
|
46
|
+
# # group { "puppet":
|
47
|
+
# # ensure => "present",
|
48
|
+
# # }
|
49
|
+
# #
|
50
|
+
# # File { owner => 0, group => 0, mode => 0644 }
|
51
|
+
# #
|
52
|
+
# # file { '/etc/motd':
|
53
|
+
# # content => "Welcome to your Vagrant-built virtual machine!
|
54
|
+
# # Managed by Puppet.\n"
|
55
|
+
# # }
|
56
|
+
#
|
57
|
+
# config.vm.provision :puppet do |puppet|
|
58
|
+
# puppet.manifests_path = "manifests"
|
59
|
+
# puppet.manifest_file = "ubuntu11.pp"
|
60
|
+
# end
|
61
|
+
|
62
|
+
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
63
|
+
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
64
|
+
# some recipes and/or roles.
|
65
|
+
#
|
66
|
+
# config.vm.provision :chef_solo do |chef|
|
67
|
+
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
68
|
+
# chef.roles_path = "../my-recipes/roles"
|
69
|
+
# chef.data_bags_path = "../my-recipes/data_bags"
|
70
|
+
# chef.add_recipe "mysql"
|
71
|
+
# chef.add_role "web"
|
72
|
+
#
|
73
|
+
# # You may also specify custom JSON attributes:
|
74
|
+
# chef.json = { :mysql_password => "foo" }
|
75
|
+
# end
|
76
|
+
|
77
|
+
# Enable provisioning with chef server, specifying the chef server URL,
|
78
|
+
# and the path to the validation key (relative to this Vagrantfile).
|
79
|
+
#
|
80
|
+
# The Opscode Platform uses HTTPS. Substitute your organization for
|
81
|
+
# ORGNAME in the URL and validation key.
|
82
|
+
#
|
83
|
+
# If you have your own Chef Server, use the appropriate URL, which may be
|
84
|
+
# HTTP instead of HTTPS depending on your configuration. Also change the
|
85
|
+
# validation key to validation.pem.
|
86
|
+
#
|
87
|
+
# config.vm.provision :chef_client do |chef|
|
88
|
+
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
89
|
+
# chef.validation_key_path = "ORGNAME-validator.pem"
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
# If you're using the Opscode platform, your validator client is
|
93
|
+
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
94
|
+
#
|
95
|
+
# IF you have your own Chef Server, the default validation client name is
|
96
|
+
# chef-validator, unless you changed the configuration.
|
97
|
+
#
|
98
|
+
# chef.validation_client_name = "ORGNAME-validator"
|
99
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
require 'net/ssh'
|
3
|
+
|
4
|
+
# Return an ssh connection to the vagrant server
|
5
|
+
class VagrantManager
|
6
|
+
# Returns a connected Net::SSH connection
|
7
|
+
def self.connect
|
8
|
+
@vm = Vagrant::Environment.new(:cwd => File.dirname(__FILE__)).primary_vm
|
9
|
+
|
10
|
+
ssh_info = @vm.ssh.info
|
11
|
+
|
12
|
+
# Build the options we'll use to initiate the connection via Net::SSH
|
13
|
+
opts = {
|
14
|
+
:port => ssh_info[:port],
|
15
|
+
:keys => [ssh_info[:private_key_path]],
|
16
|
+
:keys_only => true,
|
17
|
+
:user_known_hosts_file => [],
|
18
|
+
:paranoid => false,
|
19
|
+
:config => false,
|
20
|
+
:forward_agent => ssh_info[:forward_agent]
|
21
|
+
}
|
22
|
+
|
23
|
+
# Check that the private key permissions are valid
|
24
|
+
@vm.ssh.check_key_permissions(ssh_info[:private_key_path])
|
25
|
+
|
26
|
+
# Connect to SSH, giving it a few tries
|
27
|
+
return Net::SSH.start(ssh_info[:host], ssh_info[:username], opts)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Pawnee::Base do
|
4
|
+
class PawneeTest < Pawnee::Base
|
5
|
+
def self.source_root
|
6
|
+
File.dirname(__FILE__)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
before(:all) do
|
11
|
+
@remote_base_path = '/home/vagrant/thortest'
|
12
|
+
@remote_test = PawneeTest.new
|
13
|
+
@remote_test.destination_connection = VagrantManager.connect
|
14
|
+
@remote_test.destination_files.rm_rf(@remote_base_path)
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:all) do
|
18
|
+
# Close the remote connection
|
19
|
+
@remote_test.destination_connection.close
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should create an empty directory remotely' do
|
23
|
+
@remote_test.empty_directory(@remote_base_path)
|
24
|
+
@remote_test.empty_directory(@remote_base_path + '2')
|
25
|
+
@remote_test.destination_files.exists?(@remote_base_path)
|
26
|
+
end
|
27
|
+
end
|
data/spec/base_spec.rb
CHANGED
@@ -42,6 +42,7 @@ describe Pawnee::Base do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should have no recipes before they are defined, but should add them after they are defined" do
|
45
|
+
Pawnee::Base.instance_variable_set('@recipes', nil)
|
45
46
|
Pawnee::Base.recipes.should == nil
|
46
47
|
|
47
48
|
# These will persist between tests
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Pawnee::Base do
|
4
|
+
before do
|
5
|
+
@base = Pawnee::Base.new
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should track modifications" do
|
9
|
+
@base.modified?.should == false
|
10
|
+
@base.track_modification!
|
11
|
+
@base.modified?.should == true
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "when changing files" do
|
15
|
+
|
16
|
+
before(:all) do
|
17
|
+
@remote_base_path = '/home/vagrant/thortest'
|
18
|
+
@remote_test = Pawnee::Base.new
|
19
|
+
@remote_test.destination_connection = VagrantManager.connect
|
20
|
+
@remote_test.destination_files.rm_rf(@remote_base_path)
|
21
|
+
end
|
22
|
+
|
23
|
+
after(:all) do
|
24
|
+
# Close the remote connection
|
25
|
+
@remote_test.destination_connection.close
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should track modifications when a file changes" do
|
29
|
+
@remote_test.should_receive(:track_modification!).once
|
30
|
+
@remote_test.empty_directory(@remote_base_path + '/test1')
|
31
|
+
@remote_test.empty_directory(@remote_base_path + '/test1')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -17,8 +17,10 @@ require 'vagrant/vagrant'
|
|
17
17
|
|
18
18
|
RSpec.configure do |config|
|
19
19
|
config.after(:suite) do
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
unless ENV['TRAVIS']
|
21
|
+
# Rollback the server
|
22
|
+
puts "Roll back test server"
|
23
|
+
`cd spec/vagrant/ ; BUNDLE_GEMFILE=../../Gemfile bundle exec vagrant sandbox rollback`
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pawnee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -263,6 +263,7 @@ files:
|
|
263
263
|
- lib/pawnee/pawnee/base.rb
|
264
264
|
- lib/pawnee/pawnee/cli.rb
|
265
265
|
- lib/pawnee/pawnee/invocation.rb
|
266
|
+
- lib/pawnee/pawnee/modified.rb
|
266
267
|
- lib/pawnee/pawnee/parser/options.rb
|
267
268
|
- lib/pawnee/pawnee/railtie.rb
|
268
269
|
- lib/pawnee/pawnee/roles.rb
|
@@ -277,12 +278,17 @@ files:
|
|
277
278
|
- lib/pawnee/pawnee/templates/newgem/lib/pawnee/newgem/base.rb.tt
|
278
279
|
- lib/pawnee/pawnee/templates/newgem/lib/pawnee/newgem/version.rb.tt
|
279
280
|
- lib/pawnee/pawnee/templates/newgem/newgem.gemspec.tt
|
281
|
+
- lib/pawnee/pawnee/templates/newgem/spec/spec_helper.rb.tt
|
282
|
+
- lib/pawnee/pawnee/templates/newgem/spec/vagrant/Vagrantfile.tt
|
283
|
+
- lib/pawnee/pawnee/templates/newgem/spec/vagrant/vagrant.rb.tt
|
280
284
|
- lib/pawnee/pawnee/version.rb
|
281
285
|
- pawnee.gemspec
|
282
286
|
- spec/actions/compile_spec.rb
|
287
|
+
- spec/actions/file_spec.rb
|
283
288
|
- spec/actions/package_spec.rb
|
284
289
|
- spec/actions/user_spec.rb
|
285
290
|
- spec/base_spec.rb
|
291
|
+
- spec/modified_spec.rb
|
286
292
|
- spec/spec_helper.rb
|
287
293
|
- spec/vagrant/.vagrant
|
288
294
|
- spec/vagrant/Vagrantfile
|
@@ -301,7 +307,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
301
307
|
version: '0'
|
302
308
|
segments:
|
303
309
|
- 0
|
304
|
-
hash: -
|
310
|
+
hash: -1028839069221412909
|
305
311
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
312
|
none: false
|
307
313
|
requirements:
|
@@ -310,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
310
316
|
version: '0'
|
311
317
|
segments:
|
312
318
|
- 0
|
313
|
-
hash: -
|
319
|
+
hash: -1028839069221412909
|
314
320
|
requirements: []
|
315
321
|
rubyforge_project:
|
316
322
|
rubygems_version: 1.8.22
|
@@ -319,9 +325,11 @@ specification_version: 3
|
|
319
325
|
summary: Better server provisioing
|
320
326
|
test_files:
|
321
327
|
- spec/actions/compile_spec.rb
|
328
|
+
- spec/actions/file_spec.rb
|
322
329
|
- spec/actions/package_spec.rb
|
323
330
|
- spec/actions/user_spec.rb
|
324
331
|
- spec/base_spec.rb
|
332
|
+
- spec/modified_spec.rb
|
325
333
|
- spec/spec_helper.rb
|
326
334
|
- spec/vagrant/.vagrant
|
327
335
|
- spec/vagrant/Vagrantfile
|