railshoster 0.0.1
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/.gitignore +18 -0
- data/CHANGELOG.markdown +8 -0
- data/CONTRIB.txt +13 -0
- data/LICENSE +20 -0
- data/README.markdown +11 -0
- data/ROADMAP.markdown +14 -0
- data/Rakefile +1 -0
- data/bin/railshoster +82 -0
- data/lib/railshoster/capistrano/h.rb +18 -0
- data/lib/railshoster/capistrano/v.rb +6 -0
- data/lib/railshoster/command.rb +26 -0
- data/lib/railshoster/deploy_command.rb +19 -0
- data/lib/railshoster/init_command.rb +111 -0
- data/lib/railshoster/version.rb +3 -0
- data/lib/railshoster.rb +8 -0
- data/railshoster.gemspec +27 -0
- data/templates/h/deploy.rb.erb +71 -0
- metadata +167 -0
data/.gitignore
ADDED
data/CHANGELOG.markdown
ADDED
data/CONTRIB.txt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Contributing
|
2
|
+
======================
|
3
|
+
|
4
|
+
To contribute to the RailsHoster project:
|
5
|
+
|
6
|
+
* Fork railshoster/railshoster
|
7
|
+
|
8
|
+
* Push your contribution to a branch named after your change
|
9
|
+
ie: git push origin master:fixed-whatever
|
10
|
+
|
11
|
+
* Send me a pull request through GitHub with a description of
|
12
|
+
what you are contributing.
|
13
|
+
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Julian Fischer
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
data/ROADMAP.markdown
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
h2. 0.0.1
|
2
|
+
|
3
|
+
* Prepare a deployment for a RailsHoster shared hosting.
|
4
|
+
* Be prepared to at RailsHoster vps deployments later.
|
5
|
+
|
6
|
+
h2. 1.0.0
|
7
|
+
|
8
|
+
h2. 2.0.0
|
9
|
+
|
10
|
+
* RailsHoster VPS Deployments
|
11
|
+
|
12
|
+
h3. General TODOs
|
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.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
data/bin/railshoster
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
# require 'bundler/setup'
|
5
|
+
|
6
|
+
gem "json"
|
7
|
+
gem "git"
|
8
|
+
gem 'erubis'
|
9
|
+
gem "gli"
|
10
|
+
|
11
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'railshoster')
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
require 'gli'
|
15
|
+
include GLI
|
16
|
+
|
17
|
+
version Railshoster::VERSION
|
18
|
+
|
19
|
+
program_desc "RailsHoster.com Application Deployment Suite"
|
20
|
+
|
21
|
+
desc 'Create new RailsHoster.com application deployment'
|
22
|
+
arg_name 'dir_name'
|
23
|
+
long_desc 'This command helps to deploy a Ruby on Rails application to your RailsHoster account using the application token you have received after signing up.'
|
24
|
+
command [:init] do |c|
|
25
|
+
|
26
|
+
c.desc "Use the RailsHoster application_token pass your account credentials."
|
27
|
+
c.flag [:a, :apptoken]
|
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]
|
35
|
+
|
36
|
+
init_command = RailsHoster::InitCommand.new(project_git_dir_name)
|
37
|
+
init_command.run_by_application_token(options[:a])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "Deploy your application to RailsHoster.com"
|
42
|
+
arg_name 'dir_name'
|
43
|
+
long_desc "Use this command to deploy your application to RailsHoster.com after you have successfully initialized it using the 'init' command."
|
44
|
+
command [:deploy] do |c|
|
45
|
+
c.action do |global_options,options,args|
|
46
|
+
project_git_dir_name = args[0] || FileUtils.pwd
|
47
|
+
RailsHoster::DeployCommand.new(project_git_dir_name).deploy
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
pre do |global,command,options,args|
|
52
|
+
# Pre logic here
|
53
|
+
# Return true to proceed; false to abourt and not call the
|
54
|
+
# chosen command
|
55
|
+
true
|
56
|
+
end
|
57
|
+
|
58
|
+
post do |global,command,options,args|
|
59
|
+
# Post logic here
|
60
|
+
end
|
61
|
+
|
62
|
+
on_error do |exception|
|
63
|
+
puts "\n"
|
64
|
+
puts "-" * 50
|
65
|
+
puts "Sorry. An Exception has occured. Don't worry I try to explain what happened:"
|
66
|
+
puts "-" * 50
|
67
|
+
puts "The Exception class is: #{exception.class}"
|
68
|
+
puts "The Exception message is:\n"
|
69
|
+
puts exception.message
|
70
|
+
puts "Here is the backtrace:"
|
71
|
+
puts "-" * 50
|
72
|
+
puts exception.backtrace
|
73
|
+
puts "-" * 50
|
74
|
+
puts "If this does not help write to support@railshoster.com."
|
75
|
+
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
|
+
false
|
80
|
+
end
|
81
|
+
|
82
|
+
exit GLI.run(ARGV)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'erubis'
|
2
|
+
|
3
|
+
module Railshoster
|
4
|
+
module Capistrano
|
5
|
+
|
6
|
+
# Strategy to generate a capistrano config for a shared hosting
|
7
|
+
class H
|
8
|
+
|
9
|
+
#### Static
|
10
|
+
|
11
|
+
def self.render_deploy_rb_to_s(application_hash)
|
12
|
+
deployrb_template = File.read(File.join(File.dirname(__FILE__), "../../../templates/h/deploy.rb.erb"))
|
13
|
+
eruby = Erubis::Eruby.new(deployrb_template)
|
14
|
+
eruby.result(:app => application_hash)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module RailsHoster
|
2
|
+
|
3
|
+
# This action class helps to setup a new rails applicaton
|
4
|
+
class Command
|
5
|
+
|
6
|
+
def initialize(project_dir)
|
7
|
+
@project_dir = project_dir
|
8
|
+
|
9
|
+
begin
|
10
|
+
@git = Git.open(project_dir)
|
11
|
+
rescue ArgumentError => e
|
12
|
+
raise PossiblyNotAGitRepoError.new(e)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def capfile_exists?
|
19
|
+
File.exists?(capfile_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
def capfile_path
|
23
|
+
File.join(@project_dir, "Capfile")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RailsHoster
|
2
|
+
|
3
|
+
# This action class helps to setup a new rails applicaton
|
4
|
+
class DeployCommand < Command
|
5
|
+
|
6
|
+
def initialize(project_dir)
|
7
|
+
super(project_dir)
|
8
|
+
end
|
9
|
+
|
10
|
+
def deploy
|
11
|
+
if capfile_exists? then
|
12
|
+
system("cap deploy")
|
13
|
+
else
|
14
|
+
puts "\nDeployment abortet!\nYou haven't initialized your application, yet."
|
15
|
+
puts "Please use the 'railshoster init' command as described in your account information mail you have received from RailsHoster.com and try again.\n\n"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'json'
|
3
|
+
require 'git'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
require File.join(File.dirname(__FILE__), '/capistrano/h')
|
7
|
+
|
8
|
+
module RailsHoster
|
9
|
+
|
10
|
+
# This action class helps to setup a new rails applicaton
|
11
|
+
class InitCommand < Command
|
12
|
+
|
13
|
+
def initialize(project_dir)
|
14
|
+
super(project_dir)
|
15
|
+
end
|
16
|
+
|
17
|
+
def run_by_application_token(application_token)
|
18
|
+
decoded_token = decode_token(application_token)
|
19
|
+
run_by_application_hash(decoded_token)
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_by_application_hash(application_hash_as_json_string)
|
23
|
+
app_hash = parse_application_json_hash(application_hash_as_json_string)
|
24
|
+
|
25
|
+
git_url = get_git_remote_url_from_git_config
|
26
|
+
app_hash["git"] = git_url
|
27
|
+
|
28
|
+
deployrb_str = ""
|
29
|
+
|
30
|
+
# Choose the further process depending on the application type by applying a strategy pattern.
|
31
|
+
case app_hash["t"].to_sym
|
32
|
+
when :h
|
33
|
+
# Shared Hosting Deployments
|
34
|
+
deployrb_str = Railshoster::Capistrano::H.render_deploy_rb_to_s(app_hash)
|
35
|
+
# Later also support VPS Deployments
|
36
|
+
# when :v
|
37
|
+
else
|
38
|
+
raise UnsupportedApplicationTypeError.new
|
39
|
+
end
|
40
|
+
|
41
|
+
write_deploy_rb(deployrb_str)
|
42
|
+
capify_project
|
43
|
+
success_message
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
# Decodoes token to get the JSON hash back.
|
49
|
+
# gQkUSMakKRPhm0EIaer => {"key":"value"}
|
50
|
+
def decode_token(token)
|
51
|
+
Base64.decode64(token)
|
52
|
+
end
|
53
|
+
|
54
|
+
def parse_application_json_hash(app_hash_as_json_string)
|
55
|
+
ruby_app_hash = ::JSON.parse(app_hash_as_json_string)
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_git_remote_url_from_git_config
|
59
|
+
|
60
|
+
#TODO Error management: what if there is not remote url (local repo)?
|
61
|
+
@git.config('remote.origin.url')
|
62
|
+
end
|
63
|
+
|
64
|
+
def write_deploy_rb(deployrb_str)
|
65
|
+
deployrb_basepath = File.join(@project_dir, "config")
|
66
|
+
FileUtils.mkdir_p(deployrb_basepath)
|
67
|
+
|
68
|
+
deployrb_path = File.join(deployrb_basepath, "deploy.rb")
|
69
|
+
backup_file(deployrb_path) if File.exists?(deployrb_path)
|
70
|
+
|
71
|
+
File.open(deployrb_path, "w+") do |f|
|
72
|
+
f << deployrb_str
|
73
|
+
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
|
89
|
+
|
90
|
+
def capify_project
|
91
|
+
puts "\n\tWarning: You are initializing a project with an existing Capfile.\n" if capfile_exists?
|
92
|
+
successful = system("capify #{@project_dir}")
|
93
|
+
raise CapifyProjectFailedError.new("Couldn't capify project at #{@project_dir}") unless successful
|
94
|
+
end
|
95
|
+
|
96
|
+
def success_message
|
97
|
+
puts "Your application has been successfully initialized."
|
98
|
+
puts "\n\tYou can now use 'railshoster deploy' to deploy your app.\n\n"
|
99
|
+
puts "Alternatively, you can use capistrano commands such as 'cap deploy' and 'cap shell'."
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class PossiblyNotAGitRepoError < ArgumentError
|
104
|
+
end
|
105
|
+
|
106
|
+
class UnsupportedApplicationTypeError < StandardError
|
107
|
+
end
|
108
|
+
|
109
|
+
class CapifyProjectFailedError < StandardError
|
110
|
+
end
|
111
|
+
end
|
data/lib/railshoster.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'railshoster/version')
|
2
|
+
require File.join(File.dirname(__FILE__), 'railshoster/command')
|
3
|
+
require File.join(File.dirname(__FILE__), 'railshoster/init_command')
|
4
|
+
require File.join(File.dirname(__FILE__), 'railshoster/deploy_command')
|
5
|
+
|
6
|
+
module Railshoster
|
7
|
+
# Your code goes here...
|
8
|
+
end
|
data/railshoster.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "railshoster/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "railshoster"
|
7
|
+
s.version = Railshoster::VERSION
|
8
|
+
s.authors = ["Julian Fischer"]
|
9
|
+
s.email = ["fischer@enterprise-rails.de"]
|
10
|
+
s.homepage = "http://www.railshoster.com"
|
11
|
+
s.summary = %q{RailsHoster Applicatoin Deployment Suite}
|
12
|
+
s.description = %q{Easily deploy your Rails app to RailsHoster.com by using this gem.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "railshoster"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency "capistrano"
|
22
|
+
s.add_dependency "capistrano-ext"
|
23
|
+
s.add_dependency "gli", ">= 1.2.5"
|
24
|
+
s.add_dependency "json"
|
25
|
+
s.add_dependency "git"
|
26
|
+
s.add_dependency 'erubis'
|
27
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
###############################
|
2
|
+
#
|
3
|
+
# Capistrano Deployment on shared Webhosting by RailsHoster
|
4
|
+
#
|
5
|
+
# maintained by support@railshoster.de
|
6
|
+
#
|
7
|
+
###############################
|
8
|
+
|
9
|
+
# BITTE ENTFERNEN SIE DIE FOLGENDE ZEILE WENN SIE BUNDLER NICHT BENUTZEN
|
10
|
+
require 'bundler/capistrano'
|
11
|
+
|
12
|
+
|
13
|
+
#### Personal Settings
|
14
|
+
## User and Password
|
15
|
+
|
16
|
+
# user to login to the target server
|
17
|
+
set :user, "<%= app["u"] %>"
|
18
|
+
|
19
|
+
# password to login to the target server
|
20
|
+
set :password, "<%= app["p"] %>"
|
21
|
+
|
22
|
+
# allow SSH-Key-Forwarding
|
23
|
+
set :ssh_options, { :forward_agent => true }
|
24
|
+
|
25
|
+
## Application name and repository
|
26
|
+
|
27
|
+
# application name ( should be rails1 rails2 rails3 ... )
|
28
|
+
set :application, "<%= app["a"] %>"
|
29
|
+
|
30
|
+
# repository location
|
31
|
+
set :repository, "<%= app["git"]%>"
|
32
|
+
|
33
|
+
# :subversionn or :git
|
34
|
+
set :scm, :git
|
35
|
+
set :scm_verbose, true
|
36
|
+
|
37
|
+
#### System Settings
|
38
|
+
## General Settings ( don't change them please )
|
39
|
+
|
40
|
+
# run in pty to allow remote commands via ssh
|
41
|
+
default_run_options[:pty] = true
|
42
|
+
|
43
|
+
# don't use sudo it's not necessary
|
44
|
+
set :use_sudo, false
|
45
|
+
|
46
|
+
# set the location where to deploy the new project
|
47
|
+
set :deploy_to, "/home/#{user}/#{application}"
|
48
|
+
|
49
|
+
# live
|
50
|
+
role :app, "<%= app["h"]%>"
|
51
|
+
role :web, "<%= app["h"]%>"
|
52
|
+
role :db, "<%= app["h"]%>", :primary => true
|
53
|
+
|
54
|
+
|
55
|
+
############################################
|
56
|
+
# Default Tasks by RailsHoster.de
|
57
|
+
############################################
|
58
|
+
namespace :deploy do
|
59
|
+
|
60
|
+
desc "Restarting mod_rails with restart.txt"
|
61
|
+
task :restart, :roles => :app, :except => { :no_release => true } do
|
62
|
+
run "touch #{current_path}/tmp/restart.txt"
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "Additional Symlinks ( database.yml, etc. )"
|
66
|
+
task :additional_symlink, :roles => :app do
|
67
|
+
run "ln -s #{shared_path}/config/database.yml #{current_path}/config/database.yml"
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
after "deploy:symlink","deploy:additional_symlink","deploy:migrate"
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: railshoster
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Julian Fischer
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-11-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: capistrano
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: capistrano-ext
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: gli
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 21
|
57
|
+
segments:
|
58
|
+
- 1
|
59
|
+
- 2
|
60
|
+
- 5
|
61
|
+
version: 1.2.5
|
62
|
+
type: :runtime
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: json
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
type: :runtime
|
77
|
+
version_requirements: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: git
|
80
|
+
prerelease: false
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
type: :runtime
|
91
|
+
version_requirements: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: erubis
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
type: :runtime
|
105
|
+
version_requirements: *id006
|
106
|
+
description: Easily deploy your Rails app to RailsHoster.com by using this gem.
|
107
|
+
email:
|
108
|
+
- fischer@enterprise-rails.de
|
109
|
+
executables:
|
110
|
+
- railshoster
|
111
|
+
extensions: []
|
112
|
+
|
113
|
+
extra_rdoc_files: []
|
114
|
+
|
115
|
+
files:
|
116
|
+
- .gitignore
|
117
|
+
- CHANGELOG.markdown
|
118
|
+
- CONTRIB.txt
|
119
|
+
- LICENSE
|
120
|
+
- README.markdown
|
121
|
+
- ROADMAP.markdown
|
122
|
+
- Rakefile
|
123
|
+
- bin/railshoster
|
124
|
+
- lib/railshoster.rb
|
125
|
+
- lib/railshoster/capistrano/h.rb
|
126
|
+
- lib/railshoster/capistrano/v.rb
|
127
|
+
- lib/railshoster/command.rb
|
128
|
+
- lib/railshoster/deploy_command.rb
|
129
|
+
- lib/railshoster/init_command.rb
|
130
|
+
- lib/railshoster/version.rb
|
131
|
+
- railshoster.gemspec
|
132
|
+
- templates/h/deploy.rb.erb
|
133
|
+
homepage: http://www.railshoster.com
|
134
|
+
licenses: []
|
135
|
+
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options: []
|
138
|
+
|
139
|
+
require_paths:
|
140
|
+
- lib
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
hash: 3
|
147
|
+
segments:
|
148
|
+
- 0
|
149
|
+
version: "0"
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
hash: 3
|
156
|
+
segments:
|
157
|
+
- 0
|
158
|
+
version: "0"
|
159
|
+
requirements: []
|
160
|
+
|
161
|
+
rubyforge_project: railshoster
|
162
|
+
rubygems_version: 1.8.6
|
163
|
+
signing_key:
|
164
|
+
specification_version: 3
|
165
|
+
summary: RailsHoster Applicatoin Deployment Suite
|
166
|
+
test_files: []
|
167
|
+
|