meskyanichi-generators 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
Meskyanichi - Generators |0.0.2|
|
3
|
+
-----------------------------------------------------------
|
4
|
+
|
5
|
+
- Finished "capistrano_template"
|
6
|
+
|
7
|
+
-----------------------------------------------------------
|
8
|
+
|
9
|
+
|
10
|
+
Meskyanichi - Generators |0.0.1|
|
11
|
+
-----------------------------------------------------------
|
12
|
+
|
13
|
+
- Made an initial commit
|
14
|
+
- Pushed the unfinished core of "capistrano_template"
|
15
|
+
|
16
|
+
-----------------------------------------------------------
|
data/README.rdoc
CHANGED
@@ -1,7 +1,92 @@
|
|
1
|
-
=
|
1
|
+
= Generators
|
2
|
+
|
3
|
+
a few simple generators that might help you get your application up and running just a little bit faster!
|
4
|
+
|
5
|
+
For now the gem only provides a generator for a simple capistrano template.
|
6
|
+
|
7
|
+
|
8
|
+
== The Capistrano Template
|
9
|
+
|
10
|
+
Essentially what this does, is generate a basic Capistrano deployment recipe. The recipe does a couple of things initially when you set it up.
|
11
|
+
|
12
|
+
- Create the necessary folders and files, namely the releases, current(symlink) and the shared folder
|
13
|
+
- Creates a log folder and generates a new production.log
|
14
|
+
- Creates a config folder and then syncs the database.yml from your Rails application to the remote server
|
15
|
+
|
16
|
+
During every deployment, the recipe will:
|
17
|
+
|
18
|
+
- Update your remote repository before deployment to ensure all files are up to date
|
19
|
+
- After deployment, will restart the application for Passenger
|
20
|
+
- After deployment, will place the symlinks for the database and production.log files correctly
|
21
|
+
- Make the javascripts and stylesheets directory, located in the RAILS_ROOT/public directory, writable to avoid script caching errors
|
22
|
+
|
23
|
+
If you wish to generate the simple Capistrano Template, open the terminal, go to the root of your rails application and type the following:
|
24
|
+
|
25
|
+
script/generate capistrano_template
|
26
|
+
|
27
|
+
This will generate the capistrano template which you help you get up and running.
|
28
|
+
|
29
|
+
You can also pass in additional arguments to let the generator help you fill in Capistrano recipe.
|
30
|
+
|
31
|
+
script/generate capistrano_template MyDomain.com git ssh://MyDomain.com/MyRepository.git master root /var/www/vhosts/MyDomain.com/httpdocs
|
32
|
+
|
33
|
+
If you fill in the above correctly, (this also depends on your server setup / OS / etc), then it should work right out of the box.
|
34
|
+
|
35
|
+
Below are the arguments which you can provide, in order:
|
36
|
+
|
37
|
+
domain_name (e.g. MyDomain.com)
|
38
|
+
scm (e.g. git)
|
39
|
+
repository (e.g. ssh://MyDomain.com/MyRepository.git)
|
40
|
+
branch (e.g. master)
|
41
|
+
user (e.g. root)
|
42
|
+
deploy_to (e.g. /var/www/vhosts/MyDomain.com/httpdocs)
|
43
|
+
|
44
|
+
This generates the deploy.rb file with the specified settings in the RAILS_ROOT/config directory.
|
45
|
+
|
46
|
+
Now the whole process in steps:
|
47
|
+
|
48
|
+
1: sudo gem install meskyanichi-generators
|
49
|
+
2: go to root of rails app and type "capify ."
|
50
|
+
3: then type "script/generate capistrano_template [arg1..arg6]"
|
51
|
+
4: when it prompts if you wish to overwrite, type "y" and hit return
|
52
|
+
5: now type "cap deploy:setup" to set up the whole directory structure and files
|
53
|
+
6: after the setup is finished, and assuming you have your local git repository set up correctly,
|
54
|
+
type "cap deploy" and your application will go live in a matter of seconds!
|
55
|
+
|
56
|
+
If you did not fill in all the arguments, or wish double check if it was all set up correctly, open the
|
57
|
+
deploy.rb file located in the config directory and have a look. You can easily modify everything to your liking as well!
|
58
|
+
|
59
|
+
|
60
|
+
== The Capistrano Template - Commands
|
61
|
+
|
62
|
+
The recipe provides a few commands which are pretty useful. Including syncing your local database.yml file
|
63
|
+
with the one on the server so that you are not forced to go SSH or FTP to the server to manually change it.
|
64
|
+
|
65
|
+
cap deploy:sync_database
|
66
|
+
|
67
|
+
If you wish to restart your application for Passenger without re-deploying your application, for example, after syncing the new database.yml,
|
68
|
+
and you once again don't want to SHH manually, then you can do a:
|
69
|
+
|
70
|
+
cap deploy:restart
|
71
|
+
|
72
|
+
This will restart the application for Passenger.
|
73
|
+
|
74
|
+
cap deploy:setup
|
75
|
+
|
76
|
+
This will run the setup task, which will do everything Capistrano does out of the box,
|
77
|
+
but also executes the tasks I mentioned at the top of this README.
|
78
|
+
|
79
|
+
cap deploy
|
80
|
+
|
81
|
+
After you've setup Capistrano correctly using the cap deploy:setup, you may now use the above command to deploy your rails application!
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
== Git (Coming Soon!)
|
2
86
|
|
3
|
-
Description goes here.
|
4
87
|
|
5
88
|
== Copyright
|
6
89
|
|
7
90
|
Copyright (c) 2009 Michael. See LICENSE for details.
|
91
|
+
|
92
|
+
|
data/VERSION.yml
CHANGED
@@ -1,7 +1,45 @@
|
|
1
1
|
class CapistranoTemplateGenerator < Rails::Generator::Base
|
2
|
+
|
3
|
+
def initialize(runtime_args, runtime_options = {})
|
4
|
+
super
|
5
|
+
|
6
|
+
@domain_name = @args[0] || "MyDomain.com"
|
7
|
+
@scm = @args[1] || "git"
|
8
|
+
@repository = @args[2] || "ssh://MyDomain.com/MyRepository.git"
|
9
|
+
@branch = @args[3] || "master"
|
10
|
+
@user = @args[4] || "root"
|
11
|
+
@deploy_to = @args[5] || "/var/www/vhosts/#{domain_name}/httpdocs"
|
12
|
+
|
13
|
+
end
|
14
|
+
|
2
15
|
def manifest
|
3
16
|
record do |m|
|
4
|
-
m.
|
17
|
+
m.template 'deploy.rb', 'config/deploy.rb'
|
5
18
|
end
|
6
19
|
end
|
20
|
+
|
21
|
+
def domain_name
|
22
|
+
@domain_name
|
23
|
+
end
|
24
|
+
|
25
|
+
def scm
|
26
|
+
@scm
|
27
|
+
end
|
28
|
+
|
29
|
+
def repository
|
30
|
+
@repository
|
31
|
+
end
|
32
|
+
|
33
|
+
def branch
|
34
|
+
@branch
|
35
|
+
end
|
36
|
+
|
37
|
+
def user
|
38
|
+
@user
|
39
|
+
end
|
40
|
+
|
41
|
+
def deploy_to
|
42
|
+
@deploy_to
|
43
|
+
end
|
44
|
+
|
7
45
|
end
|
@@ -1 +1,79 @@
|
|
1
|
-
|
1
|
+
# Application Domain (MyDomain.com)
|
2
|
+
# Convention: Make sure the correct domain name (same as the folder on the server in /var/www/vhosts/)
|
3
|
+
set :application, "<%= domain_name %>"
|
4
|
+
|
5
|
+
# Set server where the application is going to be uploaded to.
|
6
|
+
role :web, application
|
7
|
+
role :app, application
|
8
|
+
role :db, application
|
9
|
+
|
10
|
+
# Set the user
|
11
|
+
# :user => Set the user that will attempt to access the remote repository
|
12
|
+
# :deploy_to => Set the deployment location (destination) on the remote server
|
13
|
+
# :use_sudo => Set to false
|
14
|
+
set :user, "<%= user %>"
|
15
|
+
set :deploy_to, "<%= deploy_to %>"
|
16
|
+
set :use_sudo, false
|
17
|
+
|
18
|
+
# Git Repository Location
|
19
|
+
# :scm => Specify the source code management tool you want to use (default is git)
|
20
|
+
# :repository => Assign the repository location where the application resides
|
21
|
+
# :branch => Select the branch that capistrano should fetch from (default is master)
|
22
|
+
set :scm, "<%= scm %>"
|
23
|
+
set :repository, "<%= repository %>"
|
24
|
+
set :branch, "<%= branch %>"
|
25
|
+
|
26
|
+
# Required: default_run_options[:pty] - This will allow the user to connect to protected repository after
|
27
|
+
# logging in when the system prompts for the server's root password
|
28
|
+
# default_run_options => (default is true)
|
29
|
+
default_run_options[:pty] = true
|
30
|
+
|
31
|
+
# You can add additional deployment tasks, or alter the ones below.
|
32
|
+
namespace :deploy do
|
33
|
+
|
34
|
+
desc "Sets up the shared folder on the remote server"
|
35
|
+
task :setup_shared_folder do
|
36
|
+
run "touch #{shared_path}/log/production.log"
|
37
|
+
run "chmod 0666 #{shared_path}/log/production.log"
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "Syncs the database.yml to the server"
|
41
|
+
task :sync_database do
|
42
|
+
system "rsync -vr --exclude='.DS_Store' config/database.yml #{user}@#{application}:#{shared_path}/config/"
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "Restart Application with Passenger."
|
46
|
+
task :restart do
|
47
|
+
run "touch #{current_path}/tmp/restart.txt"
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Symlink database."
|
51
|
+
task :symlink_database do
|
52
|
+
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "Make javascripts and stylesheets directories writable."
|
56
|
+
task :make_js_and_css_writable do
|
57
|
+
run "chmod 777 #{release_path}/public/javascripts"
|
58
|
+
run "chmod 777 #{release_path}/public/stylesheets"
|
59
|
+
end
|
60
|
+
|
61
|
+
desc "Updates repository before deployment."
|
62
|
+
task :update_repository do
|
63
|
+
system "git add ."
|
64
|
+
system "git commit -a -m 'Comitted for repository.'"
|
65
|
+
system "git push origin master"
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# Tasks that run before the deployment process
|
71
|
+
before 'deploy', 'deploy:update_repository'
|
72
|
+
|
73
|
+
# Tasks that run directly after the initial setup
|
74
|
+
after 'deploy:setup', 'deploy:setup_shared_folder'
|
75
|
+
after 'deploy:setup', 'deploy:sync_database'
|
76
|
+
|
77
|
+
# Tasks that run directly after deployment
|
78
|
+
after 'deploy:update_code', 'deploy:symlink_database'
|
79
|
+
after 'deploy:update_code', 'deploy:make_js_and_css_writable'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meskyanichi-generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael
|
@@ -30,6 +30,7 @@ files:
|
|
30
30
|
- lib/generators.rb
|
31
31
|
- test/generators_test.rb
|
32
32
|
- test/test_helper.rb
|
33
|
+
- CHANGELOG
|
33
34
|
- rails_generators
|
34
35
|
- rails_generators/capistrano_template
|
35
36
|
- rails_generators/capistrano_template/capistrano_template_generator.rb
|