gploy 0.0.1 → 0.1.2
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/README.markdown +101 -0
- data/Rakefile +2 -2
- data/bin/gploy +0 -1
- data/lib/gploy/configure.rb +10 -8
- data/lib/gploy/helpers.rb +65 -72
- metadata +5 -5
- data/README.textile +0 -24
data/README.markdown
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
## Introduction
|
2
|
+
|
3
|
+
This is a sample RubyGems to configure your Rails Project for deployment using git push, this gem only make a series of configurations in your local project and to in your web server. This gem consider what you are using locaweb to host your project and using git obviously.
|
4
|
+
|
5
|
+
## What directory structure is used
|
6
|
+
This gem use a structure in webserver like this:
|
7
|
+
|
8
|
+
1. ~/repos -> For host a git repository
|
9
|
+
2. ~/rails_app -> For host your production project
|
10
|
+
3. ~/public_html -> For create a symlink to the project in rails_app directory
|
11
|
+
|
12
|
+
## Files generated
|
13
|
+
This gem generate only two simple file into the config directory, one file is called config.yaml and other is post-receive.
|
14
|
+
|
15
|
+
### The config.yaml file:
|
16
|
+
|
17
|
+
The contents of this file should be like this:
|
18
|
+
|
19
|
+
config:
|
20
|
+
url: host
|
21
|
+
user: username
|
22
|
+
password: password
|
23
|
+
app_name: project_name
|
24
|
+
origin: git origin
|
25
|
+
|
26
|
+
If your git is already configured for origin use another, for example: production
|
27
|
+
|
28
|
+
### The post-receive file:
|
29
|
+
|
30
|
+
The contents of this file should be like this:
|
31
|
+
|
32
|
+
#!/bin/sh
|
33
|
+
cd ~/rails_app/project_name
|
34
|
+
env -i git reset --hard
|
35
|
+
env -i git pull project_name master
|
36
|
+
env -i rake db:migrate RAILS_ENV=production
|
37
|
+
env -i touch ~/rails_app/project_name/tmp/restart.txt
|
38
|
+
|
39
|
+
The post-receive file is a git hook, read more about hooks at: [www.ru.kernel.org](http://www.ru.kernel.org/pub/software/scm/git/docs/v1.5.2.5/hooks.html)
|
40
|
+
|
41
|
+
## Usage
|
42
|
+
First thing you should do is install the gploy gem in your computer:
|
43
|
+
|
44
|
+
sudo gem install gploy
|
45
|
+
|
46
|
+
after it inside your rails project your should execute the following commands:
|
47
|
+
|
48
|
+
> gploy -c // For generate config.yaml file
|
49
|
+
|
50
|
+
Now you can edit this file with your data, make sure you not have a origin set in git if you will use it.
|
51
|
+
|
52
|
+
Now lets generate a post-receive file, this file is a git hook, and should have commands that you want that are executed when your run git push in your project, for this execute:
|
53
|
+
|
54
|
+
> gploy -pr // For generate post-receive file
|
55
|
+
|
56
|
+
This command will generate a snippet like this:
|
57
|
+
|
58
|
+
#!/bin/sh
|
59
|
+
cd ~/rails_app/project_name
|
60
|
+
env -i git reset --hard
|
61
|
+
env -i git pull project_name master
|
62
|
+
env -i rake db:migrate RAILS_ENV=production
|
63
|
+
env -i touch ~/rails_app/project_name/tmp/restart.txt
|
64
|
+
|
65
|
+
Put it inside the config/post-receive file. You can add more commands in the post-receive file if you want.
|
66
|
+
|
67
|
+
Finally now you can run the command that will upload your project to the server and do what needs to be done:
|
68
|
+
|
69
|
+
> gploy -s
|
70
|
+
|
71
|
+
If no error occurs, your project should be available now.
|
72
|
+
|
73
|
+
From now when you want update your project simply do a commit of changes and run git push production master to update project in server.
|
74
|
+
|
75
|
+
#OBS: This is a initial version then careful when using it. If you find bugs please let me know, fell free for make a fork in project at [github](http://github.com/edipofederle/gploy) and fix the bugs :D.
|
76
|
+
|
77
|
+
|
78
|
+
## LICENSE:
|
79
|
+
|
80
|
+
(The MIT License)
|
81
|
+
|
82
|
+
Copyright (c) 2008 Edipo Luis Federle
|
83
|
+
|
84
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
85
|
+
a copy of this software and associated documentation files (the
|
86
|
+
'Software'), to deal in the Software without restriction, including
|
87
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
88
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
89
|
+
permit persons to whom the Software is furnished to do so, subject to
|
90
|
+
the following conditions:
|
91
|
+
|
92
|
+
The above copyright notice and this permission notice shall be
|
93
|
+
included in all copies or substantial portions of the Software.
|
94
|
+
|
95
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
96
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
97
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
98
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
99
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
100
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
101
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
CHANGED
@@ -5,8 +5,8 @@ require 'rake/gempackagetask'
|
|
5
5
|
require 'spec/rake/spectask'
|
6
6
|
|
7
7
|
GEM = "gploy"
|
8
|
-
GEM_VERSION = "0.
|
9
|
-
SUMMARY = "
|
8
|
+
GEM_VERSION = "0.1.2"
|
9
|
+
SUMMARY = "Simple gem to configure rails project deploy using git(locaweb server only)"
|
10
10
|
AUTHOR = "Edipo Luis Federle"
|
11
11
|
EMAIL = "edipofederle@gmail.com"
|
12
12
|
HOMEPAGE = "http://edipolf.com"
|
data/bin/gploy
CHANGED
data/lib/gploy/configure.rb
CHANGED
@@ -8,7 +8,7 @@ module Gploy
|
|
8
8
|
class Configure
|
9
9
|
|
10
10
|
include Helpers
|
11
|
-
VERSION = '0.
|
11
|
+
VERSION = '0.1.2'
|
12
12
|
|
13
13
|
def configure_server
|
14
14
|
create_file_and_direcotry_unless_exists("config", "config.yaml")
|
@@ -18,7 +18,6 @@ module Gploy
|
|
18
18
|
puts "---------------------------------------------------------"
|
19
19
|
puts "You can put this content into your config.yaml file and edit it"
|
20
20
|
post_commands_server
|
21
|
-
puts ""
|
22
21
|
end
|
23
22
|
|
24
23
|
def configure_hook
|
@@ -37,11 +36,12 @@ module Gploy
|
|
37
36
|
add_remote(@url, @user, @app_name, @origin)
|
38
37
|
push_local(@origin)
|
39
38
|
clone_into_server(@app_name)
|
39
|
+
add_remote_origin(@url, @user, @app_name, @origin)
|
40
40
|
sys_link(@app_name)
|
41
41
|
tmp_create(@app_name)
|
42
42
|
update_hook_into_server(@user, @url, @app_name)
|
43
43
|
run_tasks
|
44
|
-
puts "OK. No error Found. You now can run git push #{@origin} master for update your project"
|
44
|
+
puts "OK. No error Found. You now can run <git push #{@origin} master> for update your project"
|
45
45
|
end
|
46
46
|
|
47
47
|
def upload_hook
|
@@ -50,7 +50,7 @@ module Gploy
|
|
50
50
|
update_hook(@user, @url, @app_name)
|
51
51
|
puts "File successfully Updated"
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
def path
|
55
55
|
"config/post-receive"
|
56
56
|
end
|
@@ -100,17 +100,19 @@ module Gploy
|
|
100
100
|
|
101
101
|
def create_file_and_direcotry_unless_exists(dir, file)
|
102
102
|
unless dirExists?("#{dir}")
|
103
|
-
puts "directory #{dir} created successfully"
|
104
103
|
Dir.mkdir(dir)
|
105
104
|
end
|
106
105
|
unless File.exists?("config/#{file}")
|
107
|
-
puts "File #{file} created successfully"
|
108
106
|
FileUtils.touch "#{dir}/#{file}"
|
109
107
|
end
|
110
108
|
end
|
111
109
|
|
112
110
|
def add_remote(server, user, name, origin)
|
113
|
-
|
111
|
+
run_local("git remote add #{origin} #{user}@#{server}:~/repos/#{name}.git")
|
112
|
+
end
|
113
|
+
|
114
|
+
def add_remote_origin(server, user, name, origin)
|
115
|
+
run_remote("cd rails_app/#{name}/ && git remote add #{origin} ~/repos/#{name}.git/")
|
114
116
|
end
|
115
117
|
|
116
118
|
def clone(name)
|
@@ -122,7 +124,7 @@ module Gploy
|
|
122
124
|
end
|
123
125
|
|
124
126
|
def push_local(origin)
|
125
|
-
|
127
|
+
run_local "git push #{origin} master"
|
126
128
|
end
|
127
129
|
|
128
130
|
def tmp_create(name)
|
data/lib/gploy/helpers.rb
CHANGED
@@ -1,86 +1,79 @@
|
|
1
1
|
require 'logger'
|
2
|
+
|
2
3
|
module Gploy
|
3
|
-
module Helpers
|
4
|
+
module Helpers
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
def log(msg)
|
7
|
+
puts "--> #{msg}"
|
8
|
+
end
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
def run_remote(command)
|
11
|
+
log(command)
|
12
|
+
@shell.exec!(command)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dirExists?(dir)
|
16
|
+
File.directory? dir
|
17
|
+
end
|
18
|
+
|
19
|
+
def run_local(command)
|
20
|
+
log(command)
|
21
|
+
Kernel.system command
|
22
|
+
end
|
23
|
+
|
24
|
+
def sys_link(name)
|
25
|
+
run_remote "ln -s ~/rails_app/#{name}/public ~/public_html/#{name}"
|
26
|
+
end
|
12
27
|
|
13
|
-
|
14
|
-
|
15
|
-
|
28
|
+
def read_hook_sample(name)
|
29
|
+
puts "Escrevendo Hook File"
|
30
|
+
path = "~/repos/#{name}.git/hooks/post-receive"
|
31
|
+
File.open("config/post-receive", "r") do |fline|
|
32
|
+
while(line = fline.gets)
|
33
|
+
@shell.exec!("echo '#{line}' >> #{path}")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
16
37
|
|
17
|
-
|
18
|
-
|
19
|
-
|
38
|
+
def update_hook_into_server(username, url, name)
|
39
|
+
run_local "chmod +x config/post-receive && scp config/post-receive #{username}@#{url}:repos/#{name}.git/hooks/"
|
40
|
+
end
|
20
41
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
else
|
25
|
-
Kernel.system "#{@sudo}#{command}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def sys_link(name)
|
30
|
-
puts "Symbolic link created successfully"
|
31
|
-
run_remote "ln -s ~/rails_app/#{name}/public ~/public_html/#{name}"
|
32
|
-
end
|
33
|
-
|
34
|
-
def read_hook_sample(name)
|
35
|
-
puts "Escrevendo Hook File"
|
36
|
-
path = "~/repos/#{name}.git/hooks/post-receive"
|
37
|
-
File.open("config/post-receive", "r") do |fline|
|
38
|
-
while(line = fline.gets)
|
39
|
-
@shell.exec!("echo '#{line}' >> #{path}")
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def update_hook_into_server(username, url, name)
|
45
|
-
run "chmod +x config/post-receive && scp config/post-receive #{username}@#{url}:repos/#{name}.git/hooks/"
|
46
|
-
end
|
42
|
+
def update_hook(username, url, name)
|
43
|
+
run_local "scp config/post-receive #{username}@#{url}:repos/#{name}.git/hooks/"
|
44
|
+
end
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
env -i git reset --hard
|
66
|
-
env -i git pull #{@origin} master
|
67
|
-
env -i rake db:migrate RAILS_ENV=production
|
68
|
-
env -i touch ~/rails_app/#{@app_name}/tmp/restart.txt
|
69
|
-
|
46
|
+
def migrate(name)
|
47
|
+
run_remote "cd rails_app/#{name}/ && rake db:migrate RAILS_ENV=production"
|
48
|
+
end
|
49
|
+
|
50
|
+
def restart_server(name)
|
51
|
+
run_remote "cd rails_app/#{name}/tmp && touch restart.txt"
|
52
|
+
puts "Server Restarted"
|
53
|
+
end
|
54
|
+
|
55
|
+
def post_commands
|
56
|
+
commands = <<CMD
|
57
|
+
#!/bin/sh
|
58
|
+
cd ~/rails_app/#{@app_name}
|
59
|
+
env -i git reset --hard
|
60
|
+
env -i git pull #{@origin} master
|
61
|
+
env -i rake db:migrate RAILS_ENV=production
|
62
|
+
env -i touch ~/rails_app/#{@app_name}/tmp/restart.txt
|
70
63
|
CMD
|
71
64
|
puts commands
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
65
|
+
end
|
66
|
+
|
67
|
+
def post_commands_server
|
68
|
+
commands = <<CMD
|
69
|
+
config:
|
70
|
+
url: <user_server>
|
71
|
+
user: <userbae>
|
72
|
+
password: <password>
|
73
|
+
app_name: <app_name>
|
74
|
+
origin: <git origin>
|
82
75
|
CMD
|
83
76
|
puts commands
|
84
|
-
|
77
|
+
end
|
85
78
|
end
|
86
79
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 0
|
8
7
|
- 1
|
9
|
-
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Edipo Luis Federle
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-25 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -45,7 +45,7 @@ files:
|
|
45
45
|
- lib/gploy/helpers.rb
|
46
46
|
- lib/gploy.rb
|
47
47
|
- Rakefile
|
48
|
-
- README.
|
48
|
+
- README.markdown
|
49
49
|
has_rdoc: true
|
50
50
|
homepage: http://edipolf.com
|
51
51
|
licenses: []
|
@@ -76,6 +76,6 @@ rubyforge_project: gploy
|
|
76
76
|
rubygems_version: 1.3.6
|
77
77
|
signing_key:
|
78
78
|
specification_version: 3
|
79
|
-
summary:
|
79
|
+
summary: Simple gem to configure rails project deploy using git(locaweb server only)
|
80
80
|
test_files: []
|
81
81
|
|
data/README.textile
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
h2. LICENSE:
|
2
|
-
|
3
|
-
(The MIT License)
|
4
|
-
|
5
|
-
Copyright (c) 2008 Edipo Luis Federle
|
6
|
-
|
7
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
-
a copy of this software and associated documentation files (the
|
9
|
-
'Software'), to deal in the Software without restriction, including
|
10
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
-
permit persons to whom the Software is furnished to do so, subject to
|
13
|
-
the following conditions:
|
14
|
-
|
15
|
-
The above copyright notice and this permission notice shall be
|
16
|
-
included in all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
19
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
21
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
22
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
23
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
24
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|