simple-rails-deploy 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/LICENSE.txt +18 -0
- data/README.md +135 -0
- data/Rakefile +8 -0
- data/lib/configs/unicorn.rb +43 -0
- data/lib/deploy/add-to-autostart.rb +30 -0
- data/lib/deploy/robots-deny-all.rb +8 -0
- data/lib/deploy/rvm.rb +19 -0
- data/lib/deploy/sharing-files.rb +54 -0
- data/lib/deploy/unicorn.rb +18 -0
- data/lib/simple-rails-deploy/common.rb +29 -0
- data/lib/simple-rails-deploy/railtie.rb +9 -0
- data/lib/simple-rails-deploy.rb +3 -0
- data/lib/tasks/unicorn.rake +99 -0
- data/simple-rails-deploy.gemspec +33 -0
- metadata +106 -0
data/.gitignore
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
2
|
+
a copy of this software and associated documentation files (the
|
3
|
+
"Software"), to deal in the Software without restriction, including
|
4
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
5
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
6
|
+
permit persons to whom the Software is furnished to do so, subject to
|
7
|
+
the following conditions:
|
8
|
+
|
9
|
+
The above copyright notice and this permission notice shall be
|
10
|
+
included in all copies or substantial portions of the Software.
|
11
|
+
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
13
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
14
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
15
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
16
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
17
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
18
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
Simple rails deploy
|
2
|
+
===================
|
3
|
+
|
4
|
+
This gem is made to get everything I need for deploy in one place. Such as:
|
5
|
+
* capistrano configuration
|
6
|
+
* unicorn configuration
|
7
|
+
* unicorn startup rake task
|
8
|
+
* nginx configuration
|
9
|
+
* all stuff and magic to use this all together
|
10
|
+
|
11
|
+
Assumptions
|
12
|
+
========
|
13
|
+
* Project uses ruby 1.9.3 for deployment.
|
14
|
+
* Project uses asset pipeline for asset packing.
|
15
|
+
* Project uses bundler to handle dependencies.
|
16
|
+
* Project uses git.
|
17
|
+
* Each project has its own user(all path assumptions are based on this).
|
18
|
+
* Nobody likes setting up ruby web servers.
|
19
|
+
|
20
|
+
What does it provide
|
21
|
+
=======
|
22
|
+
Configless unicorn control and configuration: tasks unicorn:start, unicorn:restart, unicorn:stop.
|
23
|
+
Small common capistrano recipes.
|
24
|
+
|
25
|
+
Limitations
|
26
|
+
========
|
27
|
+
- Unicorn can be less flexibly configured
|
28
|
+
|
29
|
+
Step by step instruction
|
30
|
+
======
|
31
|
+
|
32
|
+
Server-side:
|
33
|
+
(as root)
|
34
|
+
```bash
|
35
|
+
# Server initial setup
|
36
|
+
apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
|
37
|
+
#Use other package if using other DB
|
38
|
+
apt-get install postgresql libpq-dev
|
39
|
+
|
40
|
+
# Creating new ssh user
|
41
|
+
adduser <project-name>
|
42
|
+
cd ~<project-name>
|
43
|
+
mkdir .ssh
|
44
|
+
nano .ssh/authorized_keys
|
45
|
+
#(paste your public ssh key in editor)
|
46
|
+
chmod -R 700 .ssh
|
47
|
+
chown -R <project-name>:<project-name> .ssh
|
48
|
+
|
49
|
+
# Workaround to add
|
50
|
+
|
51
|
+
# Database credentials
|
52
|
+
su postgres
|
53
|
+
createuser <project-name>
|
54
|
+
# Allow only database creation, not superuser
|
55
|
+
```
|
56
|
+
|
57
|
+
And you should add nginx config:
|
58
|
+
```nginx
|
59
|
+
server {
|
60
|
+
server_name <domain to use>;
|
61
|
+
|
62
|
+
root /home/<projectname>/app/current/public;
|
63
|
+
try_files $uri/index.html $uri.html $uri @app;
|
64
|
+
|
65
|
+
location @app {
|
66
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
67
|
+
proxy_set_header Host $http_host;
|
68
|
+
proxy_redirect off;
|
69
|
+
|
70
|
+
# If you don't find the filename in the static files
|
71
|
+
# Then request it from the unicorn server
|
72
|
+
proxy_pass http://unix:/home/<projectname>/app/shared/tmp/sockets/unicorn.sock:;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
```
|
76
|
+
|
77
|
+
That's all for root. Everything else will be done without superuser privileges.
|
78
|
+
|
79
|
+
In application code folder:
|
80
|
+
Run 'capify .' command. Replace config/deploy.rb:
|
81
|
+
```ruby
|
82
|
+
require 'simple-rails-deploy/common'
|
83
|
+
|
84
|
+
#Use rvm with ruby 1.9.3 for deployment
|
85
|
+
load 'deploy/rvm'
|
86
|
+
#Use unicorn as web server
|
87
|
+
load 'deploy/unicorn'
|
88
|
+
#Uncomment if you want to add 'deny all' robots.txt
|
89
|
+
#load 'deploy/robots-deny-all'
|
90
|
+
|
91
|
+
#multistaging
|
92
|
+
require "capistrano/ext/multistage"
|
93
|
+
set :stages, %w(demo)
|
94
|
+
set :default_stage, "demo"
|
95
|
+
set :keep_releases, 5
|
96
|
+
|
97
|
+
set :application, "<application name>"
|
98
|
+
set :repository, "<repo name>"
|
99
|
+
|
100
|
+
```
|
101
|
+
|
102
|
+
create file config/deploy/[stage-name].rb with contents:
|
103
|
+
```ruby
|
104
|
+
# Path to deploy folder is calculated based on appication name:
|
105
|
+
# "/home/#{application}/app/"
|
106
|
+
|
107
|
+
#set rails environment here
|
108
|
+
set :rails_env, "production"
|
109
|
+
|
110
|
+
#set git branch here
|
111
|
+
set :branch, "master"
|
112
|
+
|
113
|
+
#set server address here
|
114
|
+
set :domain, "<username>@<server-hostname>" # Required for ssh deploy
|
115
|
+
|
116
|
+
#Server roles
|
117
|
+
role :web, domain
|
118
|
+
role :app, domain
|
119
|
+
role :db, domain, :primary => true
|
120
|
+
```
|
121
|
+
|
122
|
+
And run:
|
123
|
+
```bash
|
124
|
+
cap <stagename> deploy:setup
|
125
|
+
cap <stagename> deploy:create_database #optional
|
126
|
+
cap <stagename> deploy:cold
|
127
|
+
cap <stagename> deploy:migrate
|
128
|
+
cap <stagename> deploy
|
129
|
+
```
|
130
|
+
|
131
|
+
License
|
132
|
+
======
|
133
|
+
Copyright 2012, Alexander Rozumiy. Distributed under the MIT license.
|
134
|
+
|
135
|
+
Thanks to @Slotos for help with initial configuration files.
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
rails_root = ENV['RAILS_PATH'] || raise("Rails path unknown")
|
2
|
+
pid_file = "#{rails_root}/tmp/pids/unicorn.pid"
|
3
|
+
socket_file= "#{rails_root}/tmp/unicorn.sock"
|
4
|
+
log_file = "#{rails_root}/log/unicorn.log"
|
5
|
+
err_log = "#{rails_root}/log/unicorn_error.log"
|
6
|
+
old_pid = pid_file + '.oldbin'
|
7
|
+
|
8
|
+
timeout 30
|
9
|
+
worker_processes ENV['WORKERS_COUNT'].to_i || raise("Workers count not specified") # Based on load and other stuff
|
10
|
+
listen socket_file, :backlog => 1024
|
11
|
+
pid pid_file
|
12
|
+
stderr_path err_log
|
13
|
+
stdout_path log_file
|
14
|
+
|
15
|
+
#preload_app true # Master loads app before forking
|
16
|
+
preload_app false
|
17
|
+
|
18
|
+
GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) # ree garbage collection tuning
|
19
|
+
|
20
|
+
before_exec do |server|
|
21
|
+
ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile"
|
22
|
+
end
|
23
|
+
|
24
|
+
before_fork do |server, worker|
|
25
|
+
# Disconnect from DB before forking
|
26
|
+
defined?(ActiveRecord::Base) and
|
27
|
+
ActiveRecord::Base.connection.disconnect!
|
28
|
+
|
29
|
+
#0 downtime deploy magic
|
30
|
+
if File.exists?(old_pid) && server.pid != old_pid
|
31
|
+
begin
|
32
|
+
Process.kill("QUIT", File.read(old_pid).to_i)
|
33
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
34
|
+
# someone else did our job for us
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
after_fork do |server, worker|
|
40
|
+
# Reconnect to db after forking
|
41
|
+
defined?(ActiveRecord::Base) and
|
42
|
+
ActiveRecord::Base.establish_connection
|
43
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
namespace :deploy do
|
2
|
+
task :add_to_startup do
|
3
|
+
startup_sh = '#!/bin/bash
|
4
|
+
#Comment this if not using rvm
|
5
|
+
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
|
6
|
+
rvm use 1.9.3-falcon
|
7
|
+
|
8
|
+
export rvm_project_rvmrc=0
|
9
|
+
|
10
|
+
#Change this path to rails root
|
11
|
+
cd ~/app/current
|
12
|
+
|
13
|
+
#rvm use 1.9.3-falcon
|
14
|
+
RAILS_ENV=production RAILS_PATH=`pwd` bundle exec rake unicorn:start'
|
15
|
+
|
16
|
+
put startup_sh, "/home/#{application}/startup.sh", :mode => '755'
|
17
|
+
|
18
|
+
begin
|
19
|
+
run "crontab -l > ~/#{application}-cron"
|
20
|
+
rescue
|
21
|
+
#no crontab present
|
22
|
+
end
|
23
|
+
|
24
|
+
run "echo '#Begin reload on reboot task' >> ~/#{application}-cron"
|
25
|
+
run "echo '@reboot /bin/bash /home/#{application}/startup.sh' >> ~/#{application}-cron"
|
26
|
+
run "echo '#End reload on reboot task' >> ~/#{application}-cron"
|
27
|
+
run "crontab ~/#{application}-cron"
|
28
|
+
run "rm ~/#{application}-cron"
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# This task adds robots.txt with 'deny all' to web root
|
2
|
+
after "deploy:finalize_update", "deploy:robots"
|
3
|
+
|
4
|
+
namespace :deploy do
|
5
|
+
task :robots do
|
6
|
+
run "echo 'User-Agent: *' > #{release_path}/public/robots.txt&&echo 'Disallow: /' >> #{release_path}/public/robots.txt"
|
7
|
+
end
|
8
|
+
end
|
data/lib/deploy/rvm.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
set :rvm_ruby_string, '1.9.3-falcon'
|
2
|
+
set :default_environment, {
|
3
|
+
'RUBY_HEAP_MIN_SLOTS' => 600000,
|
4
|
+
'RUBY_GC_MALLOC_LIMIT' => 59000000,
|
5
|
+
'RUBY_HEAP_FREE_MIN' => 100000
|
6
|
+
}
|
7
|
+
|
8
|
+
require "rvm/capistrano"
|
9
|
+
|
10
|
+
namespace :rvm do
|
11
|
+
task :trust_rvmrc do
|
12
|
+
run "rvm rvmrc trust #{release_path}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
before 'deploy:setup', 'rvm:install_rvm'
|
17
|
+
before 'deploy:setup', 'rvm:install_ruby'
|
18
|
+
after "deploy", "rvm:trust_rvmrc"
|
19
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#Links files from this list to 'current' folder
|
2
|
+
set :normal_symlinks, %w(
|
3
|
+
config/database.yml
|
4
|
+
tmp
|
5
|
+
)
|
6
|
+
|
7
|
+
namespace :deploy do
|
8
|
+
desc "Use configs"
|
9
|
+
task :app_symlinks do
|
10
|
+
normal_symlinks.map do |path|
|
11
|
+
run "rm -rf #{release_path}/#{path} && ln -nfs #{shared_path}/#{path} #{release_path}/#{path}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
after "deploy:finalize_update", "deploy:app_symlinks"
|
17
|
+
|
18
|
+
namespace :deploy do
|
19
|
+
task :create_database_yml do
|
20
|
+
db_config = ERB.new <<-EOF
|
21
|
+
base: &base
|
22
|
+
adapter: postgresql
|
23
|
+
encoding: unicode
|
24
|
+
database: #{application}
|
25
|
+
pool: 5
|
26
|
+
min_messages: WARNING
|
27
|
+
|
28
|
+
#{rails_env}:
|
29
|
+
<<: *base
|
30
|
+
|
31
|
+
development:
|
32
|
+
<<: *base
|
33
|
+
EOF
|
34
|
+
|
35
|
+
run "mkdir -p #{shared_path}/config"
|
36
|
+
put db_config.result, "#{shared_path}/config/database.yml"
|
37
|
+
end
|
38
|
+
|
39
|
+
task :create_database do
|
40
|
+
run "psql -c'create database #{application};' postgres"
|
41
|
+
end
|
42
|
+
|
43
|
+
task :create_shared_tmp_folder do
|
44
|
+
run "mkdir -p #{shared_path}/tmp"
|
45
|
+
end
|
46
|
+
|
47
|
+
task :fix_ssh_git do
|
48
|
+
run "echo 'StrictHostKeyChecking no' > ~/.ssh/config"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
before 'deploy:setup', 'deploy:create_database_yml'
|
53
|
+
before 'deploy:setup', 'deploy:create_shared_tmp_folder'
|
54
|
+
before 'deploy:setup', 'deploy:fix_ssh_git'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
namespace :deploy do
|
2
|
+
desc "Start unicorn"
|
3
|
+
task :start do
|
4
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} RAILS_PATH=#{current_path} bundle exec rake unicorn:start"
|
5
|
+
end
|
6
|
+
|
7
|
+
desc "Restart unicorn"
|
8
|
+
task :restart do
|
9
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} RAILS_PATH=#{current_path} bundle exec rake unicorn:restart"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Stop unicorn and start again"
|
13
|
+
task :reload do
|
14
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} RAILS_PATH=#{current_path} bundle exec rake unicorn:stop"
|
15
|
+
run "cd #{current_path} && RAILS_ENV=#{rails_env} RAILS_PATH=#{current_path} bundle exec rake unicorn:start"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Bundler integration - installs same gems as in development
|
2
|
+
require 'bundler/capistrano'
|
3
|
+
# Colored capistrano output
|
4
|
+
require 'capistrano_colors'
|
5
|
+
|
6
|
+
Capistrano::Configuration.instance(true).load do
|
7
|
+
@load_paths += [Gem::Specification.find_by_name("simple-rails-deploy").gem_dir+'/lib']
|
8
|
+
|
9
|
+
load 'deploy/assets'
|
10
|
+
load 'deploy/sharing-files'
|
11
|
+
load 'deploy/add-to-autostart'
|
12
|
+
|
13
|
+
# VCS settings
|
14
|
+
set :scm, :git
|
15
|
+
set :deploy_via, :remote_cache
|
16
|
+
set :ssh_options, { :forward_agent => true }
|
17
|
+
|
18
|
+
# Server settings
|
19
|
+
set :use_sudo, false
|
20
|
+
|
21
|
+
# Hack to make forward_agent work
|
22
|
+
on :start do
|
23
|
+
`ssh-add`
|
24
|
+
end
|
25
|
+
|
26
|
+
# Deployment path
|
27
|
+
set(:deploy_to) { "/home/#{application}/app/" }
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# cpu count code is from https://gist.github.com/1009994
|
2
|
+
module System
|
3
|
+
extend self
|
4
|
+
def cpu_count
|
5
|
+
return Java::Java.lang.Runtime.getRuntime.availableProcessors if defined? Java::Java
|
6
|
+
return File.read('/proc/cpuinfo').scan(/^processor\s*:/).size if File.exist? '/proc/cpuinfo'
|
7
|
+
require 'win32ole'
|
8
|
+
WIN32OLE.connect("winmgmts://").ExecQuery("select * from Win32_ComputerSystem").NumberOfProcessors
|
9
|
+
rescue LoadError
|
10
|
+
Integer `sysctl -n hw.ncpu 2>/dev/null` rescue 1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
namespace :unicorn do
|
15
|
+
def rails_root
|
16
|
+
ENV['RAILS_PATH'] || Rails.root
|
17
|
+
end
|
18
|
+
|
19
|
+
def unicorn_pid
|
20
|
+
File.join(rails_root, 'tmp', 'pids', 'unicorn.pid')
|
21
|
+
end
|
22
|
+
|
23
|
+
def unicorn_config
|
24
|
+
gem_path = Gem::Specification.find_by_name("simple-rails-deploy").gem_dir
|
25
|
+
File.join(gem_path, 'lib', 'configs', 'unicorn.rb')
|
26
|
+
end
|
27
|
+
|
28
|
+
def workers_count
|
29
|
+
if Rails.env.staging? || Rails.env.development?
|
30
|
+
return 1
|
31
|
+
elsif Rails.env.production?
|
32
|
+
# workers count == cpu cores count
|
33
|
+
return System.cpu_count
|
34
|
+
else
|
35
|
+
return 2
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Start unicorn"
|
40
|
+
task :start do
|
41
|
+
# Get unicorn pid
|
42
|
+
pidfile = unicorn_pid
|
43
|
+
if File.exists? pidfile
|
44
|
+
abort 'Unicorn is already running'
|
45
|
+
else
|
46
|
+
system_call = "env RAILS_PATH=#{rails_root} WORKERS_COUNT=#{workers_count} bundle exec unicorn_rails -c #{unicorn_config} -D"
|
47
|
+
if system(system_call)
|
48
|
+
puts "Started and running with pid: #{File.read pidfile}"
|
49
|
+
else
|
50
|
+
puts "Unicorn failed to start. System call was: '#{system_call}' "
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "Restart unicorn"
|
56
|
+
task :restart do
|
57
|
+
# Get unicorn pid
|
58
|
+
pidfile = unicorn_pid
|
59
|
+
old_pidfile = unicorn_pid + '.oldbin'
|
60
|
+
abort 'unicorn is either restarting or encounetred a serious crash in the previous restart attempt' if File.exists? old_pidfile
|
61
|
+
if File.exists? pidfile
|
62
|
+
begin
|
63
|
+
pid = File.read(pidfile).to_i
|
64
|
+
Process.kill 0, pid
|
65
|
+
Process.kill "USR2", pid
|
66
|
+
puts "Successfully asked unicorn to reload gracefully"
|
67
|
+
rescue Errno::EPERM
|
68
|
+
abort 'Lacking the rights to communicate with unicorn process'
|
69
|
+
rescue Errno::ESRCH
|
70
|
+
puts "Something bad happened in the past. Unicorn PID is here, unicorn is not. Starting a new instance."
|
71
|
+
File.delete pidfile
|
72
|
+
Rake::Task["unicorn:start"].invoke
|
73
|
+
end
|
74
|
+
else
|
75
|
+
puts "Unicorn is not running. Starting a new instance."
|
76
|
+
Rake::Task["unicorn:start"].invoke
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
desc "Stop unicorn"
|
81
|
+
task :stop do
|
82
|
+
# Get unicorn pid
|
83
|
+
pidfile = unicorn_pid
|
84
|
+
if File.exists? pidfile
|
85
|
+
begin
|
86
|
+
pid = File.read(pidfile).to_i
|
87
|
+
Process.kill 0, pid
|
88
|
+
Process.kill "QUIT", pid
|
89
|
+
puts "Successfully asked unicorn to shut down gracefully"
|
90
|
+
rescue Errno::EPERM
|
91
|
+
abort 'Lacking the rights to communicate with unicorn process'
|
92
|
+
rescue Errno::ESRCH
|
93
|
+
puts "Something bad happened in the past. Unicorn PID is here, unicorn is not"
|
94
|
+
end
|
95
|
+
else
|
96
|
+
puts "Unicorn is not running. Aborting"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
$:.push File.expand_path("../lib", __FILE__)
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "simple-rails-deploy"
|
8
|
+
s.version = '0.0.1'
|
9
|
+
|
10
|
+
s.authors = ["Alex Rozumey"]
|
11
|
+
s.description = "It simplifies rails deployment process a lot"
|
12
|
+
s.email = "brain-geek@yandex.ua"
|
13
|
+
|
14
|
+
s.extra_rdoc_files = [
|
15
|
+
"LICENSE.txt",
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.homepage = "http://github.com/brain-geek/simple-rails-deploy"
|
25
|
+
s.licenses = ["MIT"]
|
26
|
+
s.rubygems_version = "1.8.15"
|
27
|
+
s.summary = ""
|
28
|
+
|
29
|
+
s.add_dependency(%q<rails>, '>=3.0.0')
|
30
|
+
s.add_dependency(%q<capistrano>)
|
31
|
+
s.add_dependency(%q<rvm-capistrano>)
|
32
|
+
s.add_dependency(%q<capistrano_colors>)
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple-rails-deploy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alex Rozumey
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: &70219440632360 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70219440632360
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: capistrano
|
27
|
+
requirement: &70219440631060 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70219440631060
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rvm-capistrano
|
38
|
+
requirement: &70219440629620 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70219440629620
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: capistrano_colors
|
49
|
+
requirement: &70219440628920 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70219440628920
|
58
|
+
description: It simplifies rails deployment process a lot
|
59
|
+
email: brain-geek@yandex.ua
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files:
|
63
|
+
- LICENSE.txt
|
64
|
+
- README.md
|
65
|
+
files:
|
66
|
+
- .gitignore
|
67
|
+
- LICENSE.txt
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- lib/configs/unicorn.rb
|
71
|
+
- lib/deploy/add-to-autostart.rb
|
72
|
+
- lib/deploy/robots-deny-all.rb
|
73
|
+
- lib/deploy/rvm.rb
|
74
|
+
- lib/deploy/sharing-files.rb
|
75
|
+
- lib/deploy/unicorn.rb
|
76
|
+
- lib/simple-rails-deploy.rb
|
77
|
+
- lib/simple-rails-deploy/common.rb
|
78
|
+
- lib/simple-rails-deploy/railtie.rb
|
79
|
+
- lib/tasks/unicorn.rake
|
80
|
+
- simple-rails-deploy.gemspec
|
81
|
+
homepage: http://github.com/brain-geek/simple-rails-deploy
|
82
|
+
licenses:
|
83
|
+
- MIT
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 1.8.16
|
103
|
+
signing_key:
|
104
|
+
specification_version: 3
|
105
|
+
summary: ''
|
106
|
+
test_files: []
|