magicmonkey 0.0.10 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README.rdoc +60 -3
  2. data/VERSION +1 -1
  3. data/lib/magic_monkey.rb +40 -41
  4. metadata +8 -20
  5. data/.gitignore +0 -21
data/README.rdoc CHANGED
@@ -1,6 +1,63 @@
1
- = magic_monkey
1
+ = Magicmonkey
2
2
 
3
- Description goes here.
3
+ Magicmonkey is a useful script that can manage your Ruby on Rails application.
4
+ Magicmonkey allows you to build in easy way the follow web server architecture:
5
+
6
+
7
+ +---------------------------------------------------------------------------------------------------+
8
+ | Apache web server |
9
+ | +----------------------+ +----------------------+ +----------------------+ |
10
+ | |Proxy A (virtual host)| |Proxy B (virtual host)| |Proxy C (virtual host)| |
11
+ | +---------^------------+ +---------^------------+ +---------^------------+ |
12
+ | | | | |
13
+ +-----------|-----------------------------|--------------------------------------|------------------+
14
+ | | |
15
+ +-----------v-------------------+ +-------v-----------------------+ +------------v------------------+
16
+ | Application server standalone | | Application server standalone | | Application server standalone |
17
+ | Phusion passenger | | Phusion passenger | | Thin |
18
+ | Ruby 1.9.2 | | Ree 1.8.7 | | Ruby 1.9.2 |
19
+ | Listen on port 3000 | | Listen on port 3001 | | Listen on port 3002 |
20
+ | Site foo.com | | Site bar.com | | Site wella.com |
21
+ +-------------------------------+ +-------------------------------+ +-------------------------------+
22
+
23
+
24
+ Every your web application have a virtual host like this:
25
+
26
+ <VirtualHost *:80>
27
+ ServerName foo.com
28
+ PassengerEnabled off
29
+ ProxyPass / http://127.0.0.1:3000/
30
+ ProxyPassReverse / http://127.0.0.1:3000/
31
+ </VirtualHost>
32
+
33
+ A proxy that speak with an application server standalone mode (like Phusion Passenger v3) that run with a specific Ruby version.
34
+ To do this you need to have install RVM to manage multiply Ruby versions.
35
+
36
+ == Install
37
+
38
+ gem install magicmonkey
39
+
40
+ == Usage
41
+
42
+ First of all you need to say to Magicmonkey that you want manage an application in this way. To to this use the magicmonkey command 'ADD':
43
+
44
+ magicmonkey add APP_NAME [options]
45
+
46
+ When added, you can start, stop, restart the application
47
+
48
+ magicmonkey {start|stop|restart} APP_NAME1, APP_NAME2, ...
49
+
50
+ If no application is given start, stop, restart all application.
51
+
52
+ You can show the configuration of all your applications with
53
+
54
+ magicmonkey show
55
+
56
+ Magicmonkey save the configuration in <tt>~/.magicmonkey.yml</tt>
57
+
58
+ == Support
59
+
60
+ You can use this email address for any questions or help: mailto:enrico@megiston.it.
4
61
 
5
62
  == Note on Patches/Pull Requests
6
63
 
@@ -14,4 +71,4 @@ Description goes here.
14
71
 
15
72
  == Copyright
16
73
 
17
- Copyright (c) 2010 pioz. See LICENSE for details.
74
+ Copyright (c) 2010 Enrico Pilotto. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.1.0
data/lib/magic_monkey.rb CHANGED
@@ -38,7 +38,7 @@ module MagicMonkey
38
38
  puts "For more information about a specific command, please type"
39
39
  puts "'magicmonkey <COMMAND> --help', e.g. 'magicmonkey add --help'."
40
40
  end
41
-
41
+
42
42
  def self.show(argv)
43
43
  applications = argv
44
44
  applications = Conf.applications.keys if argv.empty?
@@ -53,13 +53,13 @@ module MagicMonkey
53
53
  end
54
54
  end
55
55
  end
56
-
56
+
57
57
  def self.start(argv)
58
- v, help = common_options(argv)
59
- if help
60
- puts 'Start a web application added with ADD command. If no params are given start all web applications.'
61
- exit
62
- end
58
+ v, help = common_options(argv)
59
+ if help
60
+ puts 'Start a web application added with ADD command. If no params are given start all web applications.'
61
+ exit
62
+ end
63
63
  applications = argv
64
64
  applications = Conf.applications.keys if argv.empty?
65
65
  applications.each do |app_name|
@@ -74,44 +74,44 @@ module MagicMonkey
74
74
  when 'thin'
75
75
  commands << "thin start -e production -p #{Conf[app_name][:port]} -d"
76
76
  end
77
- print "Starting '#{app_name}' application..."
78
- STDOUT.flush
77
+ print "Starting '#{app_name}' application..."
78
+ STDOUT.flush
79
79
  output = `bash -c "#{commands.join(' && ')}"`
80
- puts ' done.'
81
- print output if v
80
+ puts ' done.'
81
+ print output if v
82
82
  end
83
83
  end
84
84
  end
85
-
85
+
86
86
  def self.stop(argv)
87
- v, help = common_options(argv)
88
- if help
89
- puts 'Stop a web application added with ADD command. If no params are given stop all web applications.'
90
- exit
91
- end
87
+ v, help = common_options(argv)
88
+ if help
89
+ puts 'Stop a web application added with ADD command. If no params are given stop all web applications.'
90
+ exit
91
+ end
92
92
  applications = argv
93
93
  applications = Conf.applications.keys if argv.empty?
94
94
  applications.each do |app_name|
95
95
  if Conf[app_name]
96
96
  commands = []
97
- commands << "source '#{Etc.getpwuid.dir}/.rvm/scripts/rvm'"
97
+ commands << "source '#{Etc.getpwuid.dir}/.rvm/scripts/rvm'" if Conf[app_name][:ruby] != 'auto'
98
98
  commands << "cd '#{Conf[app_name][:app_path]}'"
99
- commands << "rvm #{v ? 'use ' : ''}'#{Conf[app_name][:ruby]}'"
99
+ commands << "rvm #{v ? 'use ' : ''}'#{Conf[app_name][:ruby]}'" if Conf[app_name][:ruby] != 'auto'
100
100
  case Conf[app_name][:app_server]
101
101
  when 'passenger'
102
102
  commands << "passenger stop -p #{Conf[app_name][:port]}"
103
103
  when 'thin'
104
104
  commands << "thin stop -p #{Conf[app_name][:port]}"
105
105
  end
106
- print "Stopping '#{app_name}' application..."
107
- STDOUT.flush
106
+ print "Stopping '#{app_name}' application..."
107
+ STDOUT.flush
108
108
  output = `bash -c "#{commands.join(' && ')}"`
109
- puts ' done.'
110
- print output if v
109
+ puts ' done.'
110
+ print output if v
111
111
  end
112
112
  end
113
113
  end
114
-
114
+
115
115
  def self.restart(argv)
116
116
  applications = argv
117
117
  applications = Conf.applications.keys if argv.empty?
@@ -120,7 +120,7 @@ module MagicMonkey
120
120
  self.start([app_name])
121
121
  end
122
122
  end
123
-
123
+
124
124
  def self.add(argv)
125
125
  options = {}
126
126
  tmp = argv.join('$$').split(/\$\$--\$\$/)
@@ -128,11 +128,10 @@ module MagicMonkey
128
128
  options[:app_server_options] = tmp[1] ? tmp[1].split('$$').join(' ') : ''
129
129
  servers = ['passenger', 'thin']
130
130
  ports = (3000..4000).to_a.collect{|p| p.to_s}
131
- rubies = ['default', '1.9.2', '1.8.7', 'ree']
132
131
  options[:app_server] = servers.first
133
132
  options[:app_path] = '/var/sites/APP_NAME/current'
134
133
  options[:port] = nil
135
- options[:ruby] = rubies.first
134
+ options[:ruby] = 'auto'
136
135
  options[:vhost_path] = '/etc/apache2/sites-available'
137
136
  vhost_template = "#{Etc.getpwuid.dir}/.magicmonkey.yml"
138
137
  force = false
@@ -140,7 +139,7 @@ module MagicMonkey
140
139
  enable_site = true
141
140
  reload_apache = false
142
141
  server_name = nil
143
-
142
+
144
143
  parser = OptionParser.new do |opts|
145
144
  opts.banner = 'Usage: magicmonkey add APP_NAME [options] [-- application_server_options]'
146
145
  opts.separator ''
@@ -161,7 +160,7 @@ module MagicMonkey
161
160
  opts.on('-p', '--port NUMBER', ports, "Use the given port number (min: #{ports.first}, max: #{ports.last}).") do |p|
162
161
  options[:port] = p.to_i
163
162
  end
164
- opts.on('-r', '--ruby RUBY_VERSION', rubies, "Use the given Ruby version: #{rubies.join(', ')} (default: #{options[:ruby]}).") do |r|
163
+ opts.on('-r', '--ruby RUBY_VERSION', "Use the given Ruby version (default: auto).") do |r|
165
164
  options[:ruby] = r
166
165
  end
167
166
  opts.on('-f', '--[no-]force', "Force mode: replace exist files (default: #{force}).") do |f|
@@ -237,7 +236,7 @@ module MagicMonkey
237
236
  puts "Application '#{app_name}' already added. You can remove it with 'remove' command."
238
237
  end
239
238
  end
240
-
239
+
241
240
  def self.remove(argv)
242
241
  argv.each do |app_name|
243
242
  if Conf[app_name]
@@ -253,9 +252,9 @@ module MagicMonkey
253
252
  end
254
253
  end
255
254
  end
256
-
255
+
257
256
  private
258
-
257
+
259
258
  def self.get_port(port)
260
259
  ports = Conf.ports
261
260
  return 3000 if ports.nil? || ports.empty?
@@ -264,14 +263,14 @@ module MagicMonkey
264
263
  return port
265
264
  end
266
265
 
267
- def self.common_options(argv)
268
- verbose = argv.include?('-v') || argv.include?('--version')
269
- help = argv.include?('-h') || argv.include?('--help')
270
- argv.delete('-v')
271
- argv.delete('--version')
272
- argv.delete('-h')
273
- argv.delete('--help')
274
- return verbose, help
275
- end
266
+ def self.common_options(argv)
267
+ verbose = argv.include?('-v') || argv.include?('--version')
268
+ help = argv.include?('-h') || argv.include?('--help')
269
+ argv.delete('-v')
270
+ argv.delete('--version')
271
+ argv.delete('-h')
272
+ argv.delete('--help')
273
+ return verbose, help
274
+ end
276
275
 
277
276
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magicmonkey
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 10
9
- version: 0.0.10
4
+ prerelease:
5
+ version: 0.1.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - pioz
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-10-28 00:00:00 +02:00
13
+ date: 2011-06-23 00:00:00 +02:00
18
14
  default_executable: magicmonkey
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,8 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
24
  version: "0"
31
25
  type: :development
32
26
  version_requirements: *id001
@@ -40,7 +34,6 @@ extra_rdoc_files:
40
34
  - LICENSE
41
35
  - README.rdoc
42
36
  files:
43
- - .gitignore
44
37
  - LICENSE
45
38
  - README.rdoc
46
39
  - Rakefile
@@ -56,8 +49,8 @@ homepage: http://github.com/pioz/magicmonkey
56
49
  licenses: []
57
50
 
58
51
  post_install_message:
59
- rdoc_options:
60
- - --charset=UTF-8
52
+ rdoc_options: []
53
+
61
54
  require_paths:
62
55
  - lib
63
56
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -65,24 +58,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
58
  requirements:
66
59
  - - ">="
67
60
  - !ruby/object:Gem::Version
68
- segments:
69
- - 0
70
61
  version: "0"
71
62
  required_rubygems_version: !ruby/object:Gem::Requirement
72
63
  none: false
73
64
  requirements:
74
65
  - - ">="
75
66
  - !ruby/object:Gem::Version
76
- segments:
77
- - 0
78
67
  version: "0"
79
68
  requirements: []
80
69
 
81
70
  rubyforge_project:
82
- rubygems_version: 1.3.7
71
+ rubygems_version: 1.6.2
83
72
  signing_key:
84
73
  specification_version: 3
85
74
  summary: "Manage your Rails applications: different Ruby versions and different application servers"
86
- test_files:
87
- - test/helper.rb
88
- - test/test_magic_monkey.rb
75
+ test_files: []
76
+
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC