nodex 0.0.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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README +0 -0
- data/Rakefile +2 -0
- data/bin/nodex.rb +7 -0
- data/lib/nodex/cli.rb +13 -0
- data/lib/nodex/deploy.rb +53 -0
- data/lib/nodex/dsl.rb +61 -0
- data/lib/nodex/helper.rb +55 -0
- data/lib/nodex/version.rb +3 -0
- data/lib/servers/mongrel.rb +9 -0
- data/lib/servers/passenger.rb +9 -0
- data/lib/servers/thin.rb +12 -0
- data/lib/servers/unicorn.rb +9 -0
- data/nodex.gemspec +21 -0
- metadata +71 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
data/bin/nodex.rb
ADDED
data/lib/nodex/cli.rb
ADDED
data/lib/nodex/deploy.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Nodex
|
2
|
+
class Deploy
|
3
|
+
include Helper
|
4
|
+
include DSL
|
5
|
+
|
6
|
+
attr_accessor :repository, :user, :application, :host, :path, :branch, :environment, :skip_steps, :cache_dirs, :db_example_name, :skip_steps
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
self.server = :passenger
|
10
|
+
configure
|
11
|
+
end
|
12
|
+
|
13
|
+
def server=(server)
|
14
|
+
load_module "servers/#{server}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def configure
|
18
|
+
configure_from configuration_file if configuration_file
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure_from(file)
|
22
|
+
deploy = self
|
23
|
+
eval file.read + ';local_variables.each { |variable| deploy.send "#{variable}=", eval(variable.to_s) rescue nil }'
|
24
|
+
end
|
25
|
+
|
26
|
+
def remote_setup
|
27
|
+
remote_run "cd #{path} && #{git_clone} && #{app_checkout} && #{copy_example_file} && #{install_bundler} && #{bundle_cmd} && #{rake_db_create}"
|
28
|
+
local_setup
|
29
|
+
end
|
30
|
+
|
31
|
+
def local_setup
|
32
|
+
after_update_code
|
33
|
+
end
|
34
|
+
|
35
|
+
def remote_update
|
36
|
+
local_update
|
37
|
+
end
|
38
|
+
|
39
|
+
def local_update
|
40
|
+
update_code
|
41
|
+
after_update_code
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def after_update_code
|
47
|
+
install_gems
|
48
|
+
migrate_database
|
49
|
+
clear_cache
|
50
|
+
restart_server
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/nodex/dsl.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
module Nodex
|
2
|
+
module DSL
|
3
|
+
def load_module(filename)
|
4
|
+
require "inploy/#{filename}"
|
5
|
+
extend eval(filename.split("/").map { |word| camelize(word) }.join("::"))
|
6
|
+
end
|
7
|
+
|
8
|
+
def rake_task(task)
|
9
|
+
"rake #{task} RAILS_ENV=#{environment}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_code
|
13
|
+
remote_run "cd #{application_path} && #{git_pull}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def migrate_database
|
17
|
+
remote_run "cd #{application_path} && rake db:migrate RAILS_ENV=#{environment}" unless skip_step?('migrate_database')
|
18
|
+
end
|
19
|
+
|
20
|
+
def log(command)
|
21
|
+
puts "Inploy => #{command}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def run(command)
|
25
|
+
log command
|
26
|
+
Kernel.system "#{command}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def clear_cache
|
30
|
+
unless skip_step?('clear_cache')
|
31
|
+
cache_dirs.each do |dir|
|
32
|
+
run "rm -rf #{dir}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def rake_db_create
|
38
|
+
rake_task "db:create"
|
39
|
+
end
|
40
|
+
|
41
|
+
def bundle_install
|
42
|
+
remote_run "cd #{application_path} && #{bundle_cmd}" unless skip_step?('bundle_install')
|
43
|
+
end
|
44
|
+
|
45
|
+
def install_gems
|
46
|
+
if using_bundler?
|
47
|
+
bundle_install
|
48
|
+
else
|
49
|
+
remote_run "cd #{application_path} && rake gems:install RAILS_ENV=#{environment}" unless skip_step?('install_gems')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def remote_run(commands)
|
54
|
+
run "ssh #{user}@#{host} #{login_shell_wrap(commands)}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def login_shell_wrap(cmd)
|
58
|
+
"'#{cmd}'"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/nodex/helper.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module Inploy
|
2
|
+
module Helper
|
3
|
+
def configuration_file
|
4
|
+
File.open("config/nodex.rb") rescue File.open("nodex.rb") rescue nil
|
5
|
+
end
|
6
|
+
|
7
|
+
def skip_step?(step)
|
8
|
+
skip_steps and skip_steps.include?(step)
|
9
|
+
end
|
10
|
+
|
11
|
+
def skip_steps_cmd
|
12
|
+
" skip_steps=#{skip_steps.join(',')}" unless skip_steps.nil?
|
13
|
+
end
|
14
|
+
|
15
|
+
def camelize(string)
|
16
|
+
string.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
17
|
+
end
|
18
|
+
|
19
|
+
def application_path
|
20
|
+
"#{path}/#{application}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def copy_example_file
|
24
|
+
"cp #{application_path}/config/#{db_example_name} #{application_path}/config/database.yml"
|
25
|
+
end
|
26
|
+
|
27
|
+
def bundle_cmd
|
28
|
+
"bundle install --without development test cucumber"
|
29
|
+
end
|
30
|
+
|
31
|
+
def install_bundler
|
32
|
+
"gem install bundler"
|
33
|
+
end
|
34
|
+
|
35
|
+
def git_clone
|
36
|
+
"git clone #{repository} #{application}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def git_pull
|
40
|
+
"git pull origin #{branch}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def app_checkout
|
44
|
+
"cd #{application} && #{checkout}"
|
45
|
+
end
|
46
|
+
|
47
|
+
def using_bundler?
|
48
|
+
File.exists? "Gemfile"
|
49
|
+
end
|
50
|
+
|
51
|
+
def checkout
|
52
|
+
branch.eql?("master") ? "" : "git branch | grep -vq #{branch} && git checkout -f -b #{branch} origin/#{branch}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/servers/thin.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
module Nodex
|
2
|
+
module Servers
|
3
|
+
module Thin
|
4
|
+
def restart_server
|
5
|
+
run "thin --pid tmp/pids/thin.pid stop"
|
6
|
+
run "thin --rackup config.ru --daemonize\
|
7
|
+
--log log/thin.log --pid tmp/pids/thin.pid --environment production\
|
8
|
+
--port 4500 start"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/nodex.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "nodex/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "nodex"
|
7
|
+
s.version = Nodex::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Bruno S. Barros"]
|
10
|
+
s.email = ["bkether@gmail.com"]
|
11
|
+
s.homepage = "http://bkether.blogspot.com"
|
12
|
+
s.summary = %q{Easy way to deploy}
|
13
|
+
s.description = %q{Easy way to deploy a rails app (minimalist version of inploy)}
|
14
|
+
|
15
|
+
s.rubyforge_project = "nodex"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nodex
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bruno S. Barros
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-03-06 00:00:00 -03:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: Easy way to deploy a rails app (minimalist version of inploy)
|
18
|
+
email:
|
19
|
+
- bkether@gmail.com
|
20
|
+
executables:
|
21
|
+
- nodex.rb
|
22
|
+
extensions: []
|
23
|
+
|
24
|
+
extra_rdoc_files: []
|
25
|
+
|
26
|
+
files:
|
27
|
+
- .gitignore
|
28
|
+
- Gemfile
|
29
|
+
- README
|
30
|
+
- Rakefile
|
31
|
+
- bin/nodex.rb
|
32
|
+
- lib/nodex/cli.rb
|
33
|
+
- lib/nodex/deploy.rb
|
34
|
+
- lib/nodex/dsl.rb
|
35
|
+
- lib/nodex/helper.rb
|
36
|
+
- lib/nodex/version.rb
|
37
|
+
- lib/servers/mongrel.rb
|
38
|
+
- lib/servers/passenger.rb
|
39
|
+
- lib/servers/thin.rb
|
40
|
+
- lib/servers/unicorn.rb
|
41
|
+
- nodex.gemspec
|
42
|
+
has_rdoc: true
|
43
|
+
homepage: http://bkether.blogspot.com
|
44
|
+
licenses: []
|
45
|
+
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options: []
|
48
|
+
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
requirements: []
|
64
|
+
|
65
|
+
rubyforge_project: nodex
|
66
|
+
rubygems_version: 1.5.0
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: Easy way to deploy
|
70
|
+
test_files: []
|
71
|
+
|