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 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
@@ -1,8 +1,3 @@
1
- $:.unshift(File.dirname(__FILE__)) unless
2
- $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
-
1
+ require 'locarails/version'
4
2
  module Locarails
5
-
6
- VERSION = "1.1.4"
7
-
8
3
  end
@@ -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
@@ -2,7 +2,7 @@ module Locarails
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 1
5
- TINY = 3
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -3,57 +3,31 @@
3
3
  # utilizando estratégia de cópia sem servidor de versionamento
4
4
  # =============================================================================
5
5
  #
6
- # Para que esta receita funcione realize os seguintes passos:
6
+ # 1. Esta receita é executada na sua maquina local e nao na hospedagem remota
7
7
  #
8
- # 1. copie o arquivo backup_locaweb.rb no diretorio 'config' de sua aplicacao
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
- # 8. Feito isso digite 'cap deploy:setup'. Isso deve ser executado apenas uma vez
43
- # para que toda a configuracao necessaria seja feita na sua hospedagem
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
- # 9. Finalmente, para colocar sua aplicação em produção, apenas execute
46
- # 'cap deploy'. Se nada der errado, deve estar tudo no ar.
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
- # 10. Se em algum momento, voce notar que a instalacao atual subiu com problemas
49
- # sempre podera voltar atras usando o comando 'cap deploy:rollback', garantindo
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
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: