akitaonrails-locarails 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/locarails +7 -1
- data/lib/locarails.rb +1 -6
- data/lib/locarails/copy.rb +66 -0
- data/lib/locarails/fix.rb +9 -0
- data/lib/locarails/none.rb +9 -0
- data/lib/locarails/version.rb +1 -1
- data/templates/deploy.rb.erb +15 -41
- metadata +13 -1
data/bin/locarails
CHANGED
@@ -50,11 +50,17 @@ especifico para hospedagens Linux da Locaweb
|
|
50
50
|
Uso: #{File.basename($0)} [caminho] [opcoes]
|
51
51
|
STR
|
52
52
|
|
53
|
+
opts.on("--version", "Mostra versao atual do locarails") do
|
54
|
+
require 'locarails'
|
55
|
+
puts "Locarails v#{Locarails::VERSION::STRING}"
|
56
|
+
exit 0
|
57
|
+
end
|
58
|
+
|
53
59
|
opts.on("-h", "--help", "Mostra esta tela de ajuda") do
|
54
60
|
puts opts
|
55
61
|
exit 0
|
56
62
|
end
|
57
|
-
|
63
|
+
|
58
64
|
opts.on("-m", "--mode=tipo", "modo de deployment (copy/git)", "Padrao: copy") do |mode|
|
59
65
|
config.mode = mode
|
60
66
|
unless "copy|git".include?(mode)
|
data/lib/locarails.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
class Capistrano::Deploy::Strategy::Copy
|
2
|
+
# Obtains a copy of the source code locally (via the #command method),
|
3
|
+
# compresses it to a single file, copies that file to all target
|
4
|
+
# servers, and uncompresses it on each of them into the deployment
|
5
|
+
# directory.
|
6
|
+
def deploy!
|
7
|
+
if copy_cache
|
8
|
+
if File.exists?(copy_cache)
|
9
|
+
logger.debug "refreshing local cache to revision #{revision} at #{copy_cache}"
|
10
|
+
system(source.sync(revision, copy_cache))
|
11
|
+
else
|
12
|
+
logger.debug "preparing local cache at #{copy_cache}"
|
13
|
+
system(source.checkout(revision, copy_cache))
|
14
|
+
end
|
15
|
+
|
16
|
+
logger.debug "copying cache to deployment staging area #{destination}"
|
17
|
+
Dir.chdir(copy_cache) do
|
18
|
+
FileUtils.mkdir_p(destination)
|
19
|
+
queue = Dir.glob("*", File::FNM_DOTMATCH)
|
20
|
+
while queue.any?
|
21
|
+
item = queue.shift
|
22
|
+
name = File.basename(item)
|
23
|
+
|
24
|
+
next if name == "." || name == ".."
|
25
|
+
next if copy_exclude.any? { |pattern| File.fnmatch(pattern, item) }
|
26
|
+
|
27
|
+
if File.symlink?(item)
|
28
|
+
FileUtils.ln_s(File.readlink(File.join(copy_cache, item)), File.join(destination, item))
|
29
|
+
elsif File.directory?(item)
|
30
|
+
queue += Dir.glob("#{item}/*", File::FNM_DOTMATCH)
|
31
|
+
FileUtils.mkdir(File.join(destination, item))
|
32
|
+
else
|
33
|
+
FileUtils.ln(File.join(copy_cache, item), File.join(destination, item))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
else
|
38
|
+
logger.debug "getting (via #{copy_strategy}) revision #{revision} to #{destination}"
|
39
|
+
system(command)
|
40
|
+
|
41
|
+
if copy_exclude.any?
|
42
|
+
logger.debug "processing exclusions..."
|
43
|
+
copy_exclude.each { |pattern| FileUtils.rm_rf(Dir.glob(File.join(destination, pattern))) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
File.open(File.join(destination, "REVISION"), "w") { |f| f.puts(revision) }
|
48
|
+
|
49
|
+
logger.trace "compressing #{destination} to #{filename}"
|
50
|
+
# if it is Windows, force gzip using the pure Ruby minitar library
|
51
|
+
if Capistrano::Deploy::LocalDependency.on_windows?
|
52
|
+
require 'zlib'
|
53
|
+
require 'archive/tar/minitar'
|
54
|
+
Dir.chdir(tmpdir) { Archive::Tar::Minitar.pack(File.basename(destination), Zlib::GzipWriter.new(File.open(File.basename(filename), 'wb'))) }
|
55
|
+
configuration[:copy_compression] = :gzip
|
56
|
+
else
|
57
|
+
Dir.chdir(tmpdir) { system(compress(File.basename(destination), File.basename(filename)).join(" ")) }
|
58
|
+
end
|
59
|
+
|
60
|
+
upload(filename, remote_filename)
|
61
|
+
run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"
|
62
|
+
ensure
|
63
|
+
FileUtils.rm filename rescue nil
|
64
|
+
FileUtils.rm_rf destination rescue nil
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
unless Gem.source_index.search('capistrano').select { |g| g.version.to_s =~ /^2\.5/ }.empty?
|
3
|
+
puts "Loading temporary fixes for Capistrano 2.5.x"
|
4
|
+
require 'capistrano'
|
5
|
+
require 'capistrano/recipes/deploy/strategy/copy'
|
6
|
+
require 'capistrano/recipes/deploy/scm/none'
|
7
|
+
require 'locarails/copy'
|
8
|
+
require 'locarails/none'
|
9
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class Capistrano::Deploy::SCM::None
|
2
|
+
# Simply does a copy from the :repository directory to the
|
3
|
+
# :destination directory.
|
4
|
+
def checkout(revision, destination)
|
5
|
+
!Capistrano::Deploy::LocalDependency.on_windows? ? "cp -R #{repository} #{destination}" : "xcopy \"#{repository.gsub('/', '\\')}\" \"#{destination}\" /I /Y /Q /E"
|
6
|
+
end
|
7
|
+
|
8
|
+
alias_method :export, :checkout
|
9
|
+
end
|
data/lib/locarails/version.rb
CHANGED
data/templates/deploy.rb.erb
CHANGED
@@ -3,57 +3,31 @@
|
|
3
3
|
# utilizando estratégia de cópia sem servidor de versionamento
|
4
4
|
# =============================================================================
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# 1. Esta receita é executada na sua maquina local e nao na hospedagem remota
|
7
7
|
#
|
8
|
-
#
|
9
|
-
# 2. crie um arquivo 'config/database.locaweb.yml' configurando de acordo com
|
10
|
-
# os dados de sua hospedagem (que você recebeu por e-mail com o título de
|
11
|
-
# "Instrucoes - MySQL - Incluso"). Um exemplo seria assim:
|
12
|
-
#
|
13
|
-
# production:
|
14
|
-
# adapter: mysql
|
15
|
-
# encoding: utf8
|
16
|
-
# database: railsdemo
|
17
|
-
# username: railsdemo
|
18
|
-
# password: xxxxxxxxx
|
19
|
-
# host: mysql1179.locaweb.com.br
|
20
|
-
#
|
21
|
-
# 3. se você estiver utilizando subversion, git ou outro versionador, garanta
|
22
|
-
# que os arquivos 'config/database.yml' e o 'config/database.locaweb.yml'
|
23
|
-
# estão na lista de arquivos ignorados. Eh boa pratica nao mante-los num
|
24
|
-
# repositorio
|
25
|
-
# 4. garanta que voce tem capistrano instalado executando 'sudo gem install
|
26
|
-
# capistrano'
|
27
|
-
# 5. garanta que, a partir do diretorio do seu projeto, voce executou o comando
|
28
|
-
# 'capify .' para que o capistrano se configure corretamente no seu projeto
|
29
|
-
# 6. substitua o arquivo 'config/deploy.rb' gerado, por este arquivo que voce
|
30
|
-
# baixou da Locaweb
|
31
|
-
# 7. altere o arquivo 'config/deploy.rb' conforme o exemplo abaixo:
|
32
|
-
#
|
33
|
-
# set :user, "railsdemo"
|
34
|
-
# set :domain, "railsdemo.tecnologia.ws"
|
35
|
-
# set :application, "demo"
|
36
|
-
# set :repository, "~/Sites/rails/demo"
|
37
|
-
#
|
38
|
-
# Note que 'application' eh o nome do diretorio que voce configurou no
|
39
|
-
# Painel de Controle da Locaweb, onde ele mostra /public_html/demo, por
|
40
|
-
# exemplo.
|
8
|
+
# 2. O Locarails depende da gem Capistrano
|
41
9
|
#
|
42
|
-
#
|
43
|
-
# para
|
10
|
+
# 3. A estrategia de deployment padrao eh Copy, que comprime seu projeto e envia
|
11
|
+
# para o servidor via SCP, e la eh descomprimido. Esta opcao funciona em
|
12
|
+
# qualquer sistema operacional sem mais nenhuma dependencia, incluindo
|
13
|
+
# Windows
|
44
14
|
#
|
45
|
-
#
|
46
|
-
#
|
15
|
+
# 4. A opcao -m git ativa a receita via Git que eh um repositorio descentralizado
|
16
|
+
# muito eficiente e que garante um deployment ainda mais rapido. Eh necessario
|
17
|
+
# que seu projeto local esteja em git e voce precisa do Git instalado na sua
|
18
|
+
# maquina
|
47
19
|
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
# que problemas inesperados nao o deixem fora do ar.
|
20
|
+
# 5. Ainda nao existe suporte a Subversion
|
21
|
+
#
|
51
22
|
#
|
52
23
|
# Autor: Fabio Akita
|
53
24
|
# E-mail: fabio.akita@locaweb.com.br
|
54
25
|
# Locaweb Serviços de Internet S/A
|
55
26
|
# Todos os direitos reservados
|
56
27
|
|
28
|
+
# correcao temporaria para capistrano 2.5.0
|
29
|
+
require 'locarails/fix'
|
30
|
+
|
57
31
|
# =============================================================================
|
58
32
|
# CONFIGURE OS VALORES DE ACORDO COM SUA HOSPEDAGEM
|
59
33
|
# =============================================================================
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: akitaonrails-locarails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Akita
|
@@ -30,6 +30,15 @@ dependencies:
|
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: "0"
|
32
32
|
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: archive-tar-minitar
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.2
|
41
|
+
version:
|
33
42
|
description: A maneira mais simples para instalar aplicacoes Rails na hospedagem Linux da Locaweb.
|
34
43
|
email: fabio.akita@locaweb.com.br
|
35
44
|
executables:
|
@@ -49,6 +58,9 @@ files:
|
|
49
58
|
- templates/deploy.rb.erb
|
50
59
|
- templates/locaweb_backup.rb
|
51
60
|
- templates/ssh_helper.rb
|
61
|
+
- lib/locarails/copy.rb
|
62
|
+
- lib/locarails/none.rb
|
63
|
+
- lib/locarails/fix.rb
|
52
64
|
has_rdoc: true
|
53
65
|
homepage: http://www.locaweb.com.br/rails
|
54
66
|
post_install_message:
|