railshoster 0.0.2 → 0.0.3

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.
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ gemfile: gemfiles/Gemfile.ci
2
+ rvm:
3
+ - 1.8.7 # (current default)
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - ree
data/CHANGELOG.markdown CHANGED
@@ -11,3 +11,10 @@ h2. 0.0.2
11
11
 
12
12
  * deploy.rb now creates a symlink to database.yml with -f (force) and overwrites an eventually existing database.yml from the customer's repository.
13
13
 
14
+ h3. 0.0.3
15
+
16
+ * Added travis testing meta data.
17
+ * Added RSpec tests for basic functionality.
18
+ * Fixed a Ruby 1.9.x issue.
19
+ * Enhanced error messages for invalid application tokens.
20
+ * Initial README.
data/README.markdown CHANGED
@@ -1,11 +1,41 @@
1
1
  h1. RailsHoster Deployment Suite
2
2
 
3
- INTRDUCTON TEXT. TO BE DONE.
3
+ The RailsHoster Deployment gem helps you to easily get your Rails app runing at RailsHoster.com. Check it out.
4
+
5
+ h2. Travis Status of the current dev branch
6
+
7
+ [![Build Status](https://secure.travis-ci.org/[railshoster]/[railshoster].png)](http://travis-ci.org/[railshoster]/[railshoster])
8
+
9
+ h2. Requirements
10
+
11
+ This is what you need on your client to run the RailsHoster gem to deploy your app:
12
+
13
+ * Ruby
14
+ * Ruby gems
15
+ * Shell (e.g. Bash)
16
+ * SSH Shell
17
+ * Git
4
18
 
5
19
  h2. Installation
6
20
 
7
- TO BE DONE.
21
+ gem install railshoster
8
22
 
9
23
  h2. Usage
24
+
25
+ Simply go to your project's git folder and invoke the following command to initialize your app and *make it deployment ready*.
26
+
27
+ railshoster init -a 'your application token' .
28
+
29
+ Regarding to your *application token* please refer to your account information you have received after signing up at [RailsHoster.com](http://www.railshoster.com/).
30
+
31
+ You can then either use *capistrano* to deploy or invoke
32
+
33
+ railshoster deploy
34
+
35
+ It's as easy as this. Refer to the RailsHoster.com Support if any problems raise. We are happy to help you.
36
+
37
+ h2. Debug
38
+
39
+ In order to receive full stack traces when exceptions occure just pass a environment variable like this
10
40
 
11
- TO BE DONE.
41
+ RAILSHOSTER_DEV=1 railshoster
data/ROADMAP.markdown CHANGED
@@ -11,4 +11,5 @@ h2. 2.0.0
11
11
 
12
12
  h3. General TODOs
13
13
 
14
- * Railshoster::InitCommand - Check wether it is possible to replace "system" call with a pure ruby version possibly by using the capistrano gem directly via ruby.
14
+ * Railshoster::InitCommand - Check wether it is possible to replace "system" call with a pure ruby version possibly by using the capistrano gem directly via ruby.
15
+ * Test bin/railshoster
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/railshoster CHANGED
@@ -7,10 +7,10 @@ gem "json"
7
7
  gem "git"
8
8
  gem 'erubis'
9
9
  gem "gli"
10
-
11
- require File.join(File.dirname(__FILE__), '..', 'lib', 'railshoster')
12
10
  require 'fileutils'
13
11
 
12
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'railshoster'))
13
+
14
14
  require 'gli'
15
15
  include GLI
16
16
 
@@ -26,14 +26,15 @@ command [:init] do |c|
26
26
  c.desc "Use the RailsHoster application_token pass your account credentials."
27
27
  c.flag [:a, :apptoken]
28
28
 
29
- c.action do |global_options,options,args|
30
-
31
- raise "Argument 'dir_name' is required for the 'init' command." if args.empty?
32
- raise "Option '-a' or '--apptoken' is require for the 'init' comannd" unless options[:a]
33
-
34
- project_git_dir_name = args[0]
29
+ c.action do |global_options,options,args|
30
+
31
+ raise "Option '-a' or '--apptoken' is require for the 'init' command. How else should I know where you want to deploy to?" unless options[:a]
32
+
33
+ cwd = FileUtils.pwd
34
+ ask_for_project_dir(cwd) if args.empty?
35
+ project_git_dir_name = args[0] || cwd
35
36
 
36
- init_command = RailsHoster::InitCommand.new(project_git_dir_name)
37
+ init_command = Railshoster::InitCommand.new(project_git_dir_name)
37
38
  init_command.run_by_application_token(options[:a])
38
39
  end
39
40
  end
@@ -44,7 +45,7 @@ long_desc "Use this command to deploy your application to RailsHoster.com after
44
45
  command [:deploy] do |c|
45
46
  c.action do |global_options,options,args|
46
47
  project_git_dir_name = args[0] || FileUtils.pwd
47
- RailsHoster::DeployCommand.new(project_git_dir_name).deploy
48
+ Railshoster::DeployCommand.new(project_git_dir_name).deploy
48
49
  end
49
50
  end
50
51
 
@@ -59,7 +60,18 @@ post do |global,command,options,args|
59
60
  # Post logic here
60
61
  end
61
62
 
62
- on_error do |exception|
63
+ # Invoke the app like this RAILSHOSTER_DEV=1 ~/git/railshoster/bin/railshoster
64
+ # in order to receive a full stack trace in case of errors.
65
+ on_error do |exception|
66
+ ret = true
67
+ ret = print_error(exception) if ENV["RAILSHOSTER_DEV"]
68
+ ret
69
+ end
70
+
71
+ #### Helper methods
72
+
73
+ def print_error(exception)
74
+
63
75
  puts "\n"
64
76
  puts "-" * 50
65
77
  puts "Sorry. An Exception has occured. Don't worry I try to explain what happened:"
@@ -73,10 +85,17 @@ on_error do |exception|
73
85
  puts "-" * 50
74
86
  puts "If this does not help write to support@railshoster.com."
75
87
  puts "Please provide the command you invoked, in which directory as well as information about your runtime environment (Ruby Version, OS, ...)."
76
-
77
- # Error logic here
78
- # return false to skip default error handling
79
88
  false
80
89
  end
81
90
 
91
+ def ask_for_project_dir(current_working_dir)
92
+ puts "You have not specified your local project folder to be deployed.\n" +
93
+ "I assume you want to use your current working directory: #{current_working_dir}.\n"
94
+ print "Correct? (y/n) [n]: "
95
+ decision = STDIN.getc
96
+ if decision !~ /y/i then
97
+ exit_now!("Initialization aborted.", -1)
98
+ end
99
+ end
100
+
82
101
  exit GLI.run(ARGV)
@@ -0,0 +1,14 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem "rake"
4
+ gem "capistrano"
5
+ gem "capistrano-ext"
6
+ gem "gli", ">= 1.2.5"
7
+ gem "json"
8
+ gem "git"
9
+ gem 'erubis'
10
+
11
+ group :test do
12
+ gem 'rspec'
13
+ gem 'fakefs'
14
+ end
@@ -0,0 +1,5 @@
1
+ module Railshoster
2
+ class BadApplicationJSONHashError < ArgumentError
3
+ include Railshoster::Error
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Railshoster
2
+ class BadApplicationTokenError < ArgumentError
3
+ include Railshoster::Error
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Railshoster
2
+ class CapifyProjectFailedError < StandardError
3
+ include Railshoster::Error
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
- module RailsHoster
1
+ module Railshoster
2
2
 
3
3
  # This action class helps to setup a new rails applicaton
4
4
  class Command
@@ -1,4 +1,4 @@
1
- module RailsHoster
1
+ module Railshoster
2
2
 
3
3
  # This action class helps to setup a new rails applicaton
4
4
  class DeployCommand < Command
@@ -0,0 +1,7 @@
1
+ module Railshoster
2
+
3
+ # This module will be included in all custom railshoster error classes.
4
+ # Using a module we don't enforce a certain superclass.
5
+ module Error
6
+ end
7
+ end
@@ -3,9 +3,9 @@ require 'json'
3
3
  require 'git'
4
4
  require 'fileutils'
5
5
 
6
- require File.join(File.dirname(__FILE__), '/capistrano/h')
6
+ require File.expand_path(File.join(File.dirname(__FILE__), '/capistrano/h'))
7
7
 
8
- module RailsHoster
8
+ module Railshoster
9
9
 
10
10
  # This action class helps to setup a new rails applicaton
11
11
  class InitCommand < Command
@@ -16,7 +16,16 @@ module RailsHoster
16
16
 
17
17
  def run_by_application_token(application_token)
18
18
  decoded_token = decode_token(application_token)
19
- run_by_application_hash(decoded_token)
19
+
20
+ begin
21
+ run_by_application_hash(decoded_token)
22
+ rescue BadApplicationJSONHashError => e
23
+ msg = "Please verify your application_token. It did not decode to a valid application hash.\n" +
24
+ "This is how your application token looked like:\n\n#{application_token.inspect}\n\n" +
25
+ "Please compare your application token char by char with your account information mail and try again!\n" +
26
+ "Here is what the application hash parser said:\n\n"
27
+ raise BadApplicationTokenError.new(msg + e.message)
28
+ end
20
29
  end
21
30
 
22
31
  def run_by_application_hash(application_hash_as_json_string)
@@ -47,18 +56,23 @@ module RailsHoster
47
56
 
48
57
  # Decodoes token to get the JSON hash back.
49
58
  # gQkUSMakKRPhm0EIaer => {"key":"value"}
50
- def decode_token(token)
59
+ def decode_token(token)
51
60
  Base64.decode64(token)
52
61
  end
53
62
 
54
63
  def parse_application_json_hash(app_hash_as_json_string)
55
- ruby_app_hash = ::JSON.parse(app_hash_as_json_string)
64
+ begin
65
+ ruby_app_hash = ::JSON.parse(app_hash_as_json_string)
66
+ rescue JSON::ParserError => e
67
+ msg = "The application hash you have passed is malformed. It could not be parsed as regular JSON. It looked like this:\n\n #{app_hash_as_json_string.inspect}\n"
68
+ raise BadApplicationJSONHashError.new(msg + "\nHere is what the JSON parse said:\n\n" + e.message)
69
+ end
56
70
  end
57
71
 
58
72
  def get_git_remote_url_from_git_config
59
73
 
60
74
  #TODO Error management: what if there is not remote url (local repo)?
61
- @git.config('remote.origin.url')
75
+ @git.config['remote.origin.url']
62
76
  end
63
77
 
64
78
  def write_deploy_rb(deployrb_str)
@@ -66,26 +80,12 @@ module RailsHoster
66
80
  FileUtils.mkdir_p(deployrb_basepath)
67
81
 
68
82
  deployrb_path = File.join(deployrb_basepath, "deploy.rb")
69
- backup_file(deployrb_path) if File.exists?(deployrb_path)
83
+ Railshoster::Utilities.backup_file(deployrb_path) if File.exists?(deployrb_path)
70
84
 
71
85
  File.open(deployrb_path, "w+") do |f|
72
86
  f << deployrb_str
73
87
  end
74
- end
75
-
76
- # Creates a backup of a file.
77
- # If there is already a backup
78
- #TODO Test
79
- def backup_file(path)
80
- backup_path = path + ".bak"
81
-
82
- if File.exists?(backup_path) then
83
- # There is already a backup, so we need to backup the backup first.
84
- backup_file(backup_path)
85
- end
86
-
87
- FileUtils.cp(path, backup_path)
88
- end
88
+ end
89
89
 
90
90
  def capify_project
91
91
  puts "\n\tWarning: You are initializing a project with an existing Capfile.\n" if capfile_exists?
@@ -99,13 +99,4 @@ module RailsHoster
99
99
  puts "Alternatively, you can use capistrano commands such as 'cap deploy' and 'cap shell'."
100
100
  end
101
101
  end
102
-
103
- class PossiblyNotAGitRepoError < ArgumentError
104
- end
105
-
106
- class UnsupportedApplicationTypeError < StandardError
107
- end
108
-
109
- class CapifyProjectFailedError < StandardError
110
- end
111
102
  end
@@ -0,0 +1,5 @@
1
+ module Railshoster
2
+ class PossiblyNotAGitRepoError < ArgumentError
3
+ include Railshoster::Error
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Railshoster
2
+ class UnsupportedApplicationTypeError < StandardError
3
+ include Railshoster::Error
4
+ end
5
+ end
@@ -0,0 +1,25 @@
1
+ require 'fileutils'
2
+
3
+ module Railshoster
4
+ class Utilities
5
+
6
+ # Creates a backup of a file.
7
+ # Since this is a recursive method you'll never loose a file. it also creates backups of backups of ...
8
+ # == Examples
9
+ # myfile -> myfile.bak
10
+ # if there is already a myfile.bak:
11
+ # myfile.bak -> myfile.bak.bak
12
+ # myfile -> myfile.bak
13
+ # ...
14
+ def self.backup_file(path)
15
+ backup_path = path + ".bak"
16
+
17
+ if File.exists?(backup_path) then
18
+ # There is already a backup, so we need to backup the backup first.
19
+ backup_file(backup_path)
20
+ end
21
+
22
+ FileUtils.cp(path, backup_path)
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module Railshoster
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/railshoster.rb CHANGED
@@ -1,8 +1,14 @@
1
1
  require File.join(File.dirname(__FILE__), 'railshoster/version')
2
+ require File.join(File.dirname(__FILE__), 'railshoster/error')
3
+ require File.join(File.dirname(__FILE__), 'railshoster/utilities')
2
4
  require File.join(File.dirname(__FILE__), 'railshoster/command')
5
+ require File.join(File.dirname(__FILE__), 'railshoster/possibly_not_a_git_repo_error')
6
+ require File.join(File.dirname(__FILE__), 'railshoster/unsupported_application_type_error')
7
+ require File.join(File.dirname(__FILE__), 'railshoster/capify_project_failed_error')
8
+ require File.join(File.dirname(__FILE__), 'railshoster/bad_application_json_hash_error')
9
+ require File.join(File.dirname(__FILE__), 'railshoster/bad_appliction_token_error')
3
10
  require File.join(File.dirname(__FILE__), 'railshoster/init_command')
4
11
  require File.join(File.dirname(__FILE__), 'railshoster/deploy_command')
5
12
 
6
13
  module Railshoster
7
- # Your code goes here...
8
14
  end
data/railshoster.gemspec CHANGED
@@ -24,4 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency "json"
25
25
  s.add_dependency "git"
26
26
  s.add_dependency 'erubis'
27
+
28
+ s.add_development_dependency('rspec')
29
+ s.add_development_dependency('fakefs')
27
30
  end
@@ -0,0 +1,19 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper.rb")
2
+
3
+ describe Railshoster::Command do
4
+ describe "#Basics" do
5
+ it "should instanciate a Command instance also initializing the project git repo" do
6
+
7
+ # We use the gem's dir as this should be a valid git repo
8
+ git_dir = File.join(File.dirname(__FILE__), "..", "..", "..")
9
+ expect { c = Railshoster::Command.new(git_dir) }.to_not raise_error(Railshoster::PossiblyNotAGitRepoError)
10
+ end
11
+
12
+ it "should fail to instanciate a Command for a non-git project dir" do
13
+
14
+ # The spec folder is part of a but not a git repo
15
+ non_git_dir = File.dirname(__FILE__)
16
+ expect { c = Railshoster::Command.new(non_git_dir) }.to raise_error(Railshoster::PossiblyNotAGitRepoError)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,49 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper.rb"))
2
+
3
+ describe Railshoster::InitCommand do
4
+
5
+ before do
6
+ # We use the gem's dir as this should be a valid git repo
7
+ git_dir = File.join(File.dirname(__FILE__), "..", "..", "..")
8
+ @init = Railshoster::InitCommand.new(git_dir)
9
+ end
10
+
11
+ describe "#Git" do
12
+ it "should read the git repo url" do
13
+ @init.send(:get_git_remote_url_from_git_config).should =~ /railshoster/
14
+ end
15
+
16
+ #TODO
17
+ it "should do sth useful if the given project dir has no remote url" do
18
+ pending("handle this situation in code an spec.")
19
+ end
20
+ end
21
+
22
+ describe "#run_by_application_hash" do
23
+ it "should create a deploy rb and capify the project" do
24
+ pending("use fakefs to test this.")
25
+ end
26
+
27
+ it "should deny to run for a non-git project dir" do
28
+ pending("not git -> no repo url -> no deploy rb -> fail")
29
+ end
30
+
31
+ it "should gracefully die for a git project dir without a remote origin" do
32
+ pending("no remote origin -> no repo url -> no deploy rb -> fail")
33
+ end
34
+
35
+ it "should raise an BadApplicationJSONHashError error for an invalid incoming JSON hash" do
36
+ expect { @init.send(:parse_application_json_hash, "") }.to raise_error(Railshoster::BadApplicationJSONHashError)
37
+ end
38
+ end
39
+
40
+ describe "#run_by_application_token" do
41
+ it "should create a deploy rb and capify the project" do
42
+ pending("use fakefs to test this.")
43
+ end
44
+
45
+ it "should raise an BadApplicationTokenError error for an invalid incoming application token" do
46
+ expect { @init.send(:run_by_application_token, "abab") }.to raise_error(Railshoster::BadApplicationTokenError)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,49 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper.rb")
2
+
3
+ describe Railshoster::Utilities do
4
+
5
+ before do
6
+ FakeFS.activate!
7
+ end
8
+
9
+ describe "#Backup" do
10
+ include FakeFS::SpecHelpers
11
+
12
+ it "should create a backup file" do
13
+ File.new("myfile.txt", "w+")
14
+ File.exists?("myfile.txt").should be_true
15
+ expect { Railshoster::Utilities.backup_file("myfile.txt") }.to_not raise_error
16
+ File.exists?("myfile.txt").should be_true
17
+ File.exists?("myfile.txt.bak").should be_true
18
+ end
19
+
20
+ it "should create a backup of a backup file and then backup the file" do
21
+
22
+ # File to be backed up
23
+ File.open("myfile.txt", "w+") do |f|
24
+ f << "1"
25
+ end
26
+
27
+ # We assume there is already an older backup
28
+ File.open("myfile.txt.bak", "w+") do |f|
29
+ f << "2"
30
+ end
31
+ expect { Railshoster::Utilities.backup_file("myfile.txt") }.to_not raise_error
32
+ File.exists?("myfile.txt").should be_true
33
+ File.exists?("myfile.txt.bak").should be_true
34
+ File.exists?("myfile.txt.bak.bak").should be_true
35
+
36
+ File.open("myfile.txt").read.should eql("1")
37
+
38
+ # .bak after backing up is the newest backup
39
+ File.open("myfile.txt.bak").read.should eql("1")
40
+
41
+ # But the old backup is still there - being moved to .bak.bak.
42
+ File.open("myfile.txt.bak.bak").read.should eql("2")
43
+ end
44
+ end
45
+
46
+ after do
47
+ FakeFS.deactivate!
48
+ end
49
+ end
@@ -0,0 +1,15 @@
1
+ require 'rspec'
2
+ require 'fakefs/safe'
3
+ require 'fakefs/spec_helpers'
4
+
5
+ # https://github.com/defunkt/fakefs
6
+ # Turn FakeFS on and off in a given example group
7
+ # describe "my spec" do
8
+ # include FakeFS::SpecHelpers
9
+ # end
10
+
11
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'railshoster')
12
+
13
+ #RSpec.configure do |c|
14
+ # c.mock_with :rspec
15
+ #end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railshoster
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Julian Fischer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-04 00:00:00 Z
18
+ date: 2011-11-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: capistrano
@@ -103,6 +103,34 @@ dependencies:
103
103
  version: "0"
104
104
  type: :runtime
105
105
  version_requirements: *id006
106
+ - !ruby/object:Gem::Dependency
107
+ name: rspec
108
+ prerelease: false
109
+ requirement: &id007 !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ type: :development
119
+ version_requirements: *id007
120
+ - !ruby/object:Gem::Dependency
121
+ name: fakefs
122
+ prerelease: false
123
+ requirement: &id008 !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ type: :development
133
+ version_requirements: *id008
106
134
  description: Easily deploy your Rails app to RailsHoster.com by using this gem.
107
135
  email:
108
136
  - fischer@enterprise-rails.de
@@ -114,6 +142,7 @@ extra_rdoc_files: []
114
142
 
115
143
  files:
116
144
  - .gitignore
145
+ - .travis.yml
117
146
  - CHANGELOG.markdown
118
147
  - CONTRIB.txt
119
148
  - LICENSE
@@ -121,14 +150,26 @@ files:
121
150
  - ROADMAP.markdown
122
151
  - Rakefile
123
152
  - bin/railshoster
153
+ - gemfiles/Gemfile.ci
124
154
  - lib/railshoster.rb
155
+ - lib/railshoster/bad_application_json_hash_error.rb
156
+ - lib/railshoster/bad_appliction_token_error.rb
157
+ - lib/railshoster/capify_project_failed_error.rb
125
158
  - lib/railshoster/capistrano/h.rb
126
159
  - lib/railshoster/capistrano/v.rb
127
160
  - lib/railshoster/command.rb
128
161
  - lib/railshoster/deploy_command.rb
162
+ - lib/railshoster/error.rb
129
163
  - lib/railshoster/init_command.rb
164
+ - lib/railshoster/possibly_not_a_git_repo_error.rb
165
+ - lib/railshoster/unsupported_application_type_error.rb
166
+ - lib/railshoster/utilities.rb
130
167
  - lib/railshoster/version.rb
131
168
  - railshoster.gemspec
169
+ - spec/lib/railshoster/command_spec.rb
170
+ - spec/lib/railshoster/init_command_spec.rb
171
+ - spec/lib/railshoster/utilities_spec.rb
172
+ - spec/spec_helper.rb
132
173
  - templates/h/deploy.rb.erb
133
174
  homepage: http://www.railshoster.com
134
175
  licenses: []
@@ -163,5 +204,8 @@ rubygems_version: 1.8.6
163
204
  signing_key:
164
205
  specification_version: 3
165
206
  summary: RailsHoster Applicatoin Deployment Suite
166
- test_files: []
167
-
207
+ test_files:
208
+ - spec/lib/railshoster/command_spec.rb
209
+ - spec/lib/railshoster/init_command_spec.rb
210
+ - spec/lib/railshoster/utilities_spec.rb
211
+ - spec/spec_helper.rb