hostnet 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ == 0.1.1 2008-10-07
2
+
3
+ * Migração para o Rubyforge
4
+
5
+ == 0.1.0 2008-09-30
6
+
7
+ * Novos tutoriais adicionados
8
+ * Configurando sua aplicação para enviar e-mails
9
+ * Dicas para administração e debug de sua aplicação Rails
10
+ * Adicionadas novas tasks
11
+
12
+ == 0.0.1 2008-09-24
13
+
14
+ * Initial release
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Sylvestre Mergulhao
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ History.txt
2
+ LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ bin/hostnet
8
+ config/hoe.rb
9
+ config/requirements.rb
10
+ hostnet.gemspec
11
+ lib/hostnet.rb
12
+ lib/hostnet/version.rb
13
+ rails_generators/hostnet_deploy/USAGE
14
+ rails_generators/hostnet_deploy/hostnet_deploy_generator.rb
15
+ rails_generators/hostnet_deploy/templates/Capfile
16
+ rails_generators/hostnet_deploy/templates/deploy.rb
17
+ rails_generators/hostnet_email/USAGE
18
+ rails_generators/hostnet_email/hostnet_email_generator.rb
19
+ rails_generators/hostnet_email/templates/mail.rb
20
+ script/console
21
+ script/destroy
22
+ script/generate
23
+ setup.rb
24
+ tasks/deployment.rake
25
+ tasks/environment.rake
26
+ tasks/website.rake
27
+ test/test_generator_helper.rb
28
+ test/test_helper.rb
29
+ test/test_hostnet.rb
30
+ test/test_hostnet_deploy_generator.rb
31
+ test/test_hostnet_email_generator.rb
32
+ tutoriais/001-meu-primeiro-deploy-de-aplicacao-rails-para-a-hostnet/tutorial.mkdn
33
+ tutoriais/002-configurando-sua-aplicacao-para-enviar-e-mails/tutorial.mkdn
34
+ tutoriais/003-dicas-para-administracao-e-debug-de-sua-aplicacao-rails/tutorial.mkdn
@@ -0,0 +1,18 @@
1
+ = hostnet - gem oficial para suporte a deploy de aplicações
2
+
3
+ = Descrição
4
+
5
+ Gem de suporte a deploy de aplicações para ambiente compartilhado da Hostnet.
6
+
7
+ = Instalando
8
+
9
+ gem install hostnet
10
+
11
+ = Instalando a última versão em desenvolvimento (living on the edge)
12
+
13
+ gem install mergulhao-hostnet --source=http://gems.github.com
14
+
15
+ = Licença
16
+
17
+ MIT License, ver arquivo LICENSE
18
+
@@ -0,0 +1,4 @@
1
+ require 'config/requirements'
2
+ require 'config/hoe' # setup Hoe + all gem configuration
3
+
4
+ Dir['tasks/**/*.rake'].each { |rake| load rake }
data/TODO ADDED
File without changes
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rubigen'
5
+
6
+ begin
7
+ require 'config/environment'
8
+ rescue LoadError
9
+ puts "Você não está na raiz de um projeto Rails."
10
+ exit(0)
11
+ end
12
+
13
+ require 'optparse'
14
+ require 'rails_generator'
15
+ require 'rails_generator/scripts/generate'
16
+
17
+ require 'rubigen/scripts/generate'
18
+ RubiGen::Base.use_component_sources!(:rails)
19
+
20
+ options = {}
21
+ OptionParser.new do |opts|
22
+ opts.banner = "
23
+ Usages: hostnet username domain (default)
24
+ hostnet --deploy username domain
25
+ hostnet --email mailer_username mailer_password domain
26
+ \n"
27
+
28
+ opts.on("-h", "--help", "Mostra esta mensagem") do |v|
29
+ puts opts
30
+ exit(0)
31
+ end
32
+
33
+ opts.on("-v", "--version", "Mostra a versão") do |v|
34
+ require 'hostnet/version'
35
+ puts "#{File.basename($0)} #{Hostnet::VERSION::STRING}"
36
+ exit(0)
37
+ end
38
+
39
+ opts.on("--deploy", "Cria receita do capistrano para deploy") do |v|
40
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'hostnet_deploy')
41
+ exit(0)
42
+ end
43
+
44
+ opts.on("--email", "Cria configuração de e-mail") do |v|
45
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'hostnet_email')
46
+ exit(0)
47
+ end
48
+ end.parse!
49
+
50
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'hostnet_deploy')
@@ -0,0 +1,75 @@
1
+ require 'hostnet/version'
2
+
3
+ AUTHOR = 'Sylvestre Mergulhao' # can also be an array of Authors
4
+ EMAIL = "contato@mergulhao.info"
5
+ DESCRIPTION = "gem oficial para suporte a deploy de aplicações"
6
+ GEM_NAME = 'hostnet' # what ppl will type to install your gem
7
+ RUBYFORGE_PROJECT = 'hostnet' # The unix name for your project
8
+ HOMEPATH = "http://github.com/mergulhao/#{RUBYFORGE_PROJECT}"
9
+ DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
10
+ EXTRA_DEPENDENCIES = [
11
+ ['rubigen', '>= 1.3.2'],
12
+ ['capistrano', '>= 2.5.0'],
13
+ ['archive-tar-minitar', '>= 0.5.2'],
14
+ ] # An array of rubygem dependencies [name, version]
15
+
16
+ @config_file = "~/.rubyforge/user-config.yml"
17
+ @config = nil
18
+ RUBYFORGE_USERNAME = "unknown"
19
+ def rubyforge_username
20
+ unless @config
21
+ begin
22
+ @config = YAML.load(File.read(File.expand_path(@config_file)))
23
+ rescue
24
+ puts <<-EOS
25
+ ERROR: No rubyforge config file found: #{@config_file}
26
+ Run 'rubyforge setup' to prepare your env for access to Rubyforge
27
+ - See http://newgem.rubyforge.org/rubyforge.html for more details
28
+ EOS
29
+ exit
30
+ end
31
+ end
32
+ RUBYFORGE_USERNAME.replace @config["username"]
33
+ end
34
+
35
+
36
+ REV = nil
37
+ # UNCOMMENT IF REQUIRED:
38
+ # REV = YAML.load(`svn info`)['Revision']
39
+ VERS = Hostnet::VERSION::STRING + (REV ? ".#{REV}" : "")
40
+ RDOC_OPTS = ['--quiet', '--title', 'hostnet documentation',
41
+ "--opname", "index.html",
42
+ "--line-numbers",
43
+ "--main", "README",
44
+ "--inline-source"]
45
+
46
+ class Hoe
47
+ def extra_deps
48
+ @extra_deps.reject! { |x| Array(x).first == 'hoe' }
49
+ @extra_deps
50
+ end
51
+ end
52
+
53
+ # Generate all the Rake tasks
54
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
55
+ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
56
+ p.developer(AUTHOR, EMAIL)
57
+ p.description = DESCRIPTION
58
+ p.summary = DESCRIPTION
59
+ p.url = HOMEPATH
60
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
61
+ p.test_globs = ["test/**/test_*.rb"]
62
+ p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
63
+
64
+ # == Optional
65
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
66
+ p.extra_deps = EXTRA_DEPENDENCIES
67
+
68
+ #p.spec_extras = {} # A hash of extra values to set in the gemspec.
69
+ end
70
+
71
+ CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
72
+ PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
73
+ $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
74
+ $hoe.rsync_args = '-av --delete --ignore-errors'
75
+ $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
@@ -0,0 +1,15 @@
1
+ require 'fileutils'
2
+ include FileUtils
3
+
4
+ require 'rubygems'
5
+ %w[rake hoe newgem rubigen].each do |req_gem|
6
+ begin
7
+ require req_gem
8
+ rescue LoadError
9
+ puts "This Rakefile requires the '#{req_gem}' RubyGem."
10
+ puts "Installation: gem install #{req_gem} -y"
11
+ exit
12
+ end
13
+ end
14
+
15
+ $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
@@ -0,0 +1,45 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{hostnet}
3
+ s.version = "0.1.1"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Sylvestre Mergulhao"]
7
+ s.date = %q{2008-10-07}
8
+ s.default_executable = %q{hostnet}
9
+ s.description = %q{gem oficial para suporte a deploy de aplicações}
10
+ s.email = ["contato@mergulhao.info"]
11
+ s.executables = ["hostnet"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
13
+ s.files = ["History.txt", "LICENSE", "Manifest.txt", "README.txt", "Rakefile", "TODO", "bin/hostnet", "config/hoe.rb", "config/requirements.rb", "hostnet.gemspec", "lib/hostnet.rb", "lib/hostnet/version.rb", "rails_generators/hostnet_deploy/USAGE", "rails_generators/hostnet_deploy/hostnet_deploy_generator.rb", "rails_generators/hostnet_deploy/templates/Capfile", "rails_generators/hostnet_deploy/templates/deploy.rb", "rails_generators/hostnet_email/USAGE", "rails_generators/hostnet_email/hostnet_email_generator.rb", "rails_generators/hostnet_email/templates/mail.rb", "script/console", "script/destroy", "script/generate", "setup.rb", "tasks/deployment.rake", "tasks/environment.rake", "tasks/website.rake", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_hostnet.rb", "test/test_hostnet_deploy_generator.rb", "test/test_hostnet_email_generator.rb", "tutoriais/001-meu-primeiro-deploy-de-aplicacao-rails-para-a-hostnet/tutorial.mkdn", "tutoriais/002-configurando-sua-aplicacao-para-enviar-e-mails/tutorial.mkdn", "tutoriais/003-dicas-para-administracao-e-debug-de-sua-aplicacao-rails/tutorial.mkdn"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/mergulhao/hostnet}
16
+ s.post_install_message = %q{}
17
+ s.rdoc_options = ["--main", "README.txt"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{hostnet}
20
+ s.rubygems_version = %q{1.2.0}
21
+ s.summary = %q{gem oficial para suporte a deploy de aplicações}
22
+ s.test_files = ["test/test_helper.rb", "test/test_generator_helper.rb", "test/test_hostnet.rb", "test/test_hostnet_deploy_generator.rb", "test/test_hostnet_email_generator.rb"]
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 2
27
+
28
+ if current_version >= 3 then
29
+ s.add_runtime_dependency(%q<rubigen>, [">= 1.3.2"])
30
+ s.add_runtime_dependency(%q<capistrano>, [">= 2.5.0"])
31
+ s.add_runtime_dependency(%q<archive-tar-minitar>, [">= 0.5.2"])
32
+ s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
33
+ else
34
+ s.add_dependency(%q<rubigen>, [">= 1.3.2"])
35
+ s.add_dependency(%q<capistrano>, [">= 2.5.0"])
36
+ s.add_dependency(%q<archive-tar-minitar>, [">= 0.5.2"])
37
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
38
+ end
39
+ else
40
+ s.add_dependency(%q<rubigen>, [">= 1.3.2"])
41
+ s.add_dependency(%q<capistrano>, [">= 2.5.0"])
42
+ s.add_dependency(%q<archive-tar-minitar>, [">= 0.5.2"])
43
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
44
+ end
45
+ end
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ module Hostnet
5
+
6
+ end
@@ -0,0 +1,9 @@
1
+ module Hostnet
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 1
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+
3
+ Cria arquivo de deploy do capistrano padrão Hostnet já configurado com seu usuário de domínio na Hostnet.
4
+
5
+ Usage:
6
+
7
+ script/generate hostnet_deploy username domain
8
+
@@ -0,0 +1,30 @@
1
+ class HostnetDeployGenerator < Rails::Generator::NamedBase
2
+ attr_reader :username, :domain
3
+
4
+ def initialize(runtime_args, runtime_options = {})
5
+ super
6
+ usage if runtime_args.size != 2
7
+ @username = runtime_args.shift
8
+ @domain = runtime_args.shift
9
+ # extract_options
10
+ end
11
+
12
+ def manifest
13
+ record do |m|
14
+ # Ensure appropriate folder(s) exists
15
+ # m.directory 'some_folder'
16
+
17
+ # Create stubs
18
+ # m.template "template.rb", "some_file_after_erb.rb"
19
+ # m.file "file", "some_file_copied"
20
+
21
+ m.file "Capfile" , "Capfile"
22
+ m.template "deploy.rb", "config/deploy.rb"
23
+ end
24
+ end
25
+
26
+ protected
27
+ def banner
28
+ "Usage: script/generate hostnet_deploy username domain"
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
+ Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
+ load 'config/deploy'
@@ -0,0 +1,74 @@
1
+ # ------------------------------------------------------------------------------
2
+ # Receita oficial da Hostnet para deploy de aplicações Rails sem uso de
3
+ # controle de versão (v1.0)
4
+ # ------------------------------------------------------------------------------
5
+ # Compatível com Capistrano 2.5.0
6
+ # ------------------------------------------------------------------------------
7
+ # Autor: Sylvestre Mergulhão, http://mergulhao.info
8
+ # ------------------------------------------------------------------------------
9
+
10
+ # ------------------------------------------------------------------------------
11
+ # Defina seu usuário e domínio na Hostnet
12
+ # ------------------------------------------------------------------------------
13
+ set :user, "<%= username %>"
14
+ set :domain, "<%= domain %>"
15
+
16
+ # ------------------------------------------------------------------------------
17
+ # Defina o nome da aplicação. Deve ser deixado como está caso seja sua primeira.
18
+ # ------------------------------------------------------------------------------
19
+ set :application, "www"
20
+
21
+ # ------------------------------------------------------------------------------
22
+ # Não alterar daqui pra baixo!
23
+ # ------------------------------------------------------------------------------
24
+ set :scm, :none
25
+ set :deploy_via, :copy
26
+ set :repository, File.expand_path( File.join(File.dirname(__FILE__), "/..") )
27
+
28
+ set :use_sudo, false
29
+ set :deploy_to, "/home/#{user}/#{application}"
30
+
31
+ set :copy_exclude, %w(log tmp)
32
+ set :keep_releases, 10
33
+
34
+ role :app, domain
35
+ role :web, domain
36
+ role :db, domain, :primary => true
37
+
38
+ task :before_symlink do
39
+ run "cd #{release_path} && rake db:migrate RAILS_ENV=production"
40
+ end
41
+
42
+ namespace :deploy do
43
+ task :restart, :roles => :app do
44
+ run "touch #{deploy_to}/current/tmp/restart.txt"
45
+ end
46
+ end
47
+
48
+ namespace :log do
49
+ task :clean, :roles => :app do
50
+ run "rm #{deploy_to}/current/log/production.log"
51
+ end
52
+ after "log:clean", "deploy:restart"
53
+
54
+ task :tail, :roles => :app do
55
+ run "tail -f #{deploy_to}/current/log/production.log" do |channel, stream, data|
56
+ puts data
57
+ end
58
+ end
59
+ end
60
+
61
+ namespace :db do
62
+ task :backup, :roles => :db do
63
+ require 'yaml'
64
+ cfg = YAML::load_file('config/database.yml')
65
+ db = cfg['production']
66
+ mysql_opts = "-u #{db['username']} -p#{db['password']} -h #{db['host']} #{db['database']}"
67
+ filename = "dump-#{application}-#{Time.now.utc.strftime("%Y%m%d%H%M%S")}.sql"
68
+ filename_path = "~/#{filename}"
69
+ run "mysqldump #{mysql_opts} > #{filename_path}"
70
+ get filename_path, filename
71
+ run "rm #{filename_path}"
72
+ end
73
+ end
74
+
@@ -0,0 +1,8 @@
1
+ Description:
2
+
3
+ Cria arquivo de configuração para envio de e-mails utilizando servidor smtp da Hostnet. Recomendamos a criação de uma conta de e-mail no painel apenas para ficar responsável pelo envio de e-mails.
4
+
5
+ Usage:
6
+
7
+ script/generate hostnet_email mailer_username mailer_password domain
8
+
@@ -0,0 +1,22 @@
1
+ class HostnetEmailGenerator < Rails::Generator::NamedBase
2
+ attr_reader :username, :password, :domain
3
+
4
+ def initialize(runtime_args, runtime_options = {})
5
+ super
6
+ usage if runtime_args.size != 3
7
+ @username = runtime_args.shift
8
+ @password = runtime_args.shift
9
+ @domain = runtime_args.shift
10
+ end
11
+
12
+ def manifest
13
+ record do |m|
14
+ m.template "mail.rb", "config/initializers/mail.rb"
15
+ end
16
+ end
17
+
18
+ protected
19
+ def banner
20
+ "Usage: script/generate hostnet_email mailer_username mailer_password domain"
21
+ end
22
+ end