akitaonrails-locarails 1.1.4 → 1.1.5
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/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:
|