simple-rails-deploy 0.0.1 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,3 @@
1
+ 0.3
2
+ ---
3
+ Added stages rails generator.
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  Simple rails deploy
2
2
  ===================
3
3
 
4
- This gem is made to get everything I need for deploy in one place. Such as:
4
+ This gem is made to get everything I need for deploy in one place:
5
5
  * capistrano configuration
6
- * unicorn configuration
7
- * unicorn startup rake task
6
+ * unicorn configuration and startup rake task
8
7
  * nginx configuration
9
8
  * all stuff and magic to use this all together
10
9
 
@@ -14,8 +13,7 @@ Assumptions
14
13
  * Project uses asset pipeline for asset packing.
15
14
  * Project uses bundler to handle dependencies.
16
15
  * 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.
16
+ * Each project has its own user.
19
17
 
20
18
  What does it provide
21
19
  =======
@@ -24,7 +22,7 @@ Small common capistrano recipes.
24
22
 
25
23
  Limitations
26
24
  ========
27
- - Unicorn can be less flexibly configured
25
+ Unicorn can be less flexibly configured
28
26
 
29
27
  Step by step instruction
30
28
  ======
@@ -34,7 +32,7 @@ Server-side:
34
32
  ```bash
35
33
  # Server initial setup
36
34
  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
35
+ #Use other package if not using PostgreSQL
38
36
  apt-get install postgresql libpq-dev
39
37
 
40
38
  # Creating new ssh user
@@ -46,8 +44,6 @@ nano .ssh/authorized_keys
46
44
  chmod -R 700 .ssh
47
45
  chown -R <project-name>:<project-name> .ssh
48
46
 
49
- # Workaround to add
50
-
51
47
  # Database credentials
52
48
  su postgres
53
49
  createuser <project-name>
@@ -62,15 +58,15 @@ server {
62
58
  root /home/<projectname>/app/current/public;
63
59
  try_files $uri/index.html $uri.html $uri @app;
64
60
 
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
- }
61
+ location @app {
62
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
63
+ proxy_set_header Host $http_host;
64
+ proxy_redirect off;
65
+
66
+ # If you don't find the filename in the static files
67
+ # Then request it from the unicorn server
68
+ proxy_pass http://unix:/home/<projectname>/app/shared/tmp/unicorn.sock:;
69
+ }
74
70
  }
75
71
  ```
76
72
 
@@ -85,7 +81,7 @@ require 'simple-rails-deploy/common'
85
81
  load 'deploy/rvm'
86
82
  #Use unicorn as web server
87
83
  load 'deploy/unicorn'
88
- #Uncomment if you want to add 'deny all' robots.txt
84
+ #Uncomment if you want to add 'deny all' robots.txt on deploy
89
85
  #load 'deploy/robots-deny-all'
90
86
 
91
87
  #multistaging
@@ -102,7 +98,9 @@ set :repository, "<repo name>"
102
98
  create file config/deploy/[stage-name].rb with contents:
103
99
  ```ruby
104
100
  # Path to deploy folder is calculated based on appication name:
105
- # "/home/#{application}/app/"
101
+ # set :deploy_to, "/home/#{application}/app/"
102
+ # Username is the same as application name:
103
+ # set :user, application
106
104
 
107
105
  #set rails environment here
108
106
  set :rails_env, "production"
@@ -111,7 +109,7 @@ set :rails_env, "production"
111
109
  set :branch, "master"
112
110
 
113
111
  #set server address here
114
- set :domain, "<username>@<server-hostname>" # Required for ssh deploy
112
+ set :domain, "<server-hostname>" # Required for ssh deploy
115
113
 
116
114
  #Server roles
117
115
  role :web, domain
@@ -121,11 +119,21 @@ role :db, domain, :primary => true
121
119
 
122
120
  And run:
123
121
  ```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
122
+ #Remove deploy:create_database if you do not need to setup database and/or create database.yml file
123
+ #Set up rvm, install ruby, initial project deploy
124
+ cap <stagename> rvm:install_rvm rvm:install_ruby deploy:create_database deploy:setup deploy:cold deploy:migrate deploy
125
+ ```
126
+ Adding custom config files
127
+ ======
128
+
129
+ Put them into '/home/youruser/app/shared/' folder and add to delpoy.rb:
130
+ ```ruby
131
+ set :normal_symlinks, %w(
132
+ config/database.yml
133
+ tmp
134
+ config/first_custom_config.yml
135
+ config/second_custom_config.yml
136
+ )
129
137
  ```
130
138
 
131
139
  License
data/lib/deploy/rvm.rb CHANGED
@@ -13,7 +13,5 @@ namespace :rvm do
13
13
  end
14
14
  end
15
15
 
16
- before 'deploy:setup', 'rvm:install_rvm'
17
- before 'deploy:setup', 'rvm:install_ruby'
18
16
  after "deploy", "rvm:trust_rvmrc"
19
17
 
@@ -49,6 +49,6 @@ namespace :deploy do
49
49
  end
50
50
  end
51
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'
52
+ after 'deploy:setup', 'deploy:create_database_yml'
53
+ after 'deploy:setup', 'deploy:create_shared_tmp_folder'
54
+ after 'deploy:setup', 'deploy:fix_ssh_git'
@@ -0,0 +1,7 @@
1
+ Description:
2
+ This generator creates new capistrano stage.
3
+
4
+ Example:
5
+ rails generate stage staging my.hostname.com
6
+
7
+ This will create config/deploy/staging.rb environment configured to deploy at my.hostname.com .
@@ -0,0 +1,19 @@
1
+ module Deploy
2
+ class StageGenerator < Rails::Generators::NamedBase
3
+ argument :address, :banner => "ip address"
4
+
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ def append_stage_to_deploy_rb
8
+ sentinel = /set :stages,?+\n/
9
+
10
+ append_to_file 'config/deploy.rb', "\nset :stages, self.stages.push('#{name}') \n"
11
+ end
12
+
13
+ def create_stagefile
14
+ @app_name = Rails.application.class.to_s.split("::").first.underscore
15
+
16
+ template "stage.rb.erb", "config/deploy/#{name}.rb"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # Path to deploy folder is calculated based on appication name:
2
+ # set :deploy_to, "/home/<%= @app_name %>/app/"
3
+
4
+ #set rails environment here
5
+ set :rails_env, "production"
6
+
7
+ #set git branch here
8
+ set :branch, "master"
9
+
10
+ #set server address here
11
+ set :domain, "<%= address %>"
12
+
13
+ #set port for deployment server connection
14
+ set :port, 22
15
+
16
+ # Username is the same as application name:
17
+ set :user, "<%= @app_name %>"
18
+
19
+ #Server roles
20
+ role :web, domain
21
+ role :app, domain
22
+ role :db, domain, :primary => true
@@ -25,5 +25,10 @@ Capistrano::Configuration.instance(true).load do
25
25
 
26
26
  # Deployment path
27
27
  set(:deploy_to) { "/home/#{application}/app/" }
28
+
29
+ set(:user) { application }
30
+
31
+ set :keep_releases, 25
32
+ after "deploy:update", "deploy:cleanup"
28
33
  end
29
34
 
@@ -5,5 +5,9 @@ module SimpleRailsDeploy
5
5
  rake_tasks do
6
6
  load 'tasks/unicorn.rake'
7
7
  end
8
+
9
+ generators do
10
+ require "deploy/stage/stage_generator"
11
+ end
8
12
  end
9
13
  end
@@ -5,10 +5,10 @@ $:.push File.expand_path("../lib", __FILE__)
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "simple-rails-deploy"
8
- s.version = '0.0.1'
8
+ s.version = '0.3'
9
9
 
10
10
  s.authors = ["Alex Rozumey"]
11
- s.description = "It simplifies rails deployment process a lot"
11
+ s.description = "Simple rails deploy makes rails deployment process fun!"
12
12
  s.email = "brain-geek@yandex.ua"
13
13
 
14
14
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-rails-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '0.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000 Z
12
+ date: 2012-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70219440632360 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70219440632360
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: capistrano
27
- requirement: &70219440631060 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70219440631060
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rvm-capistrano
38
- requirement: &70219440629620 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70219440629620
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: capistrano_colors
49
- requirement: &70219440628920 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,8 +69,13 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70219440628920
58
- description: It simplifies rails deployment process a lot
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Simple rails deploy makes rails deployment process fun!
59
79
  email: brain-geek@yandex.ua
60
80
  executables: []
61
81
  extensions: []
@@ -64,6 +84,7 @@ extra_rdoc_files:
64
84
  - README.md
65
85
  files:
66
86
  - .gitignore
87
+ - CHANGELOG
67
88
  - LICENSE.txt
68
89
  - README.md
69
90
  - Rakefile
@@ -72,6 +93,9 @@ files:
72
93
  - lib/deploy/robots-deny-all.rb
73
94
  - lib/deploy/rvm.rb
74
95
  - lib/deploy/sharing-files.rb
96
+ - lib/deploy/stage/USAGE
97
+ - lib/deploy/stage/stage_generator.rb
98
+ - lib/deploy/stage/templates/stage.rb.erb
75
99
  - lib/deploy/unicorn.rb
76
100
  - lib/simple-rails-deploy.rb
77
101
  - lib/simple-rails-deploy/common.rb
@@ -99,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
123
  version: '0'
100
124
  requirements: []
101
125
  rubyforge_project:
102
- rubygems_version: 1.8.16
126
+ rubygems_version: 1.8.22
103
127
  signing_key:
104
128
  specification_version: 3
105
129
  summary: ''