simple-rails-deploy 0.0.1 → 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/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: ''