jesus 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.kpf
2
2
  *.tmproj
3
+ pkg/*
3
4
  .DS_Store
4
5
  vendor/gems/*
5
6
  bin/*
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source "http://gemcutter.org"
3
3
  # Required on every environment
4
4
  #
5
5
  gem "sinatra"
6
- gem "sinatra_more"
7
6
  gem "god"
8
7
 
9
8
  #
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Damien MATHIEU
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.
@@ -1,44 +1,51 @@
1
- h1. Jesus
1
+ Jesus
2
+ =====
2
3
 
3
- Jesus is a web interface to "god":http://github.com/mojombo/god
4
+ Jesus is a web interface to [god](http://github.com/mojombo/god)
4
5
  It allows you to see the process and monitor/unmonitor them.
5
6
 
6
- !http://cloud.github.com/downloads/dmathieu/jesus/jesus-0.0.1.thumb.png(Screenshot 0.0.1)!:http://cloud.github.com/downloads/dmathieu/jesus/jesus-0.0.1.png
7
+ [![Jesus Screenshot](http://cloud.github.com/downloads/dmathieu/jesus/jesus-0.0.1.thumb.png)](http://cloud.github.com/downloads/dmathieu/jesus/jesus-0.0.1.png)
7
8
 
8
- h2. Installation
9
+ Installation
10
+ ------------
9
11
 
10
12
  To install the application you first need to have "bundler":http://github.com/wycats/bundler installed on your machine.
11
13
  Once that is done, clone the project in the directory of your choice.
12
14
 
13
- @git clone git://github.com/dmathieu/jesus.git@
15
+ git clone git://github.com/dmathieu/jesus.git
16
+
17
+ Or using the gem.
18
+
19
+ gem install jesus --source http://gemcutter.org
14
20
 
15
21
  Then you should install the dependencies.
16
22
 
17
- @gem bundle@
23
+ gem bundle
18
24
 
19
25
  You now have Jesus available on your machine. Start your god process.
20
26
  And start Jesus.
21
27
 
22
- @god -c /path/to/your/god.config@
23
-
24
- @rackup@
28
+ god -c /path/to/your/god.config
29
+ rackup
25
30
 
26
31
  Note: Jesus and God should be started with the same user. Otherwise, Jesus won't be able to get access to the God informations.
27
32
 
28
- Go to "localhot:9292":http://localhost:9292 to watch the process monitored by god.
33
+ Go to [localhot:9292](http://localhost:9292) to watch the process monitored by god.
29
34
 
30
- h2. Contributing
35
+ Contributing
36
+ ------------
31
37
 
32
38
  If you think Jesus is great but can be improved, feel free to contribute.
33
39
  To do so, you can :
34
40
 
35
- * "Fork":http://help.github.com/forking/ the project
41
+ * [Fork](http://help.github.com/forking/) the project
36
42
  * Do your changes and commit them to your repository
37
43
  * Test your changes. We won't accept any untested contributions (except if they're not testable).
38
- * Create an "issue":http://help.github.com/forking/ with a link to your commits.
44
+ * Create an [issue](http://help.github.com/forking/) with a link to your commits.
39
45
 
40
46
  And that's it! We'll soon take a look at your issue and review your changes.
41
47
 
42
- h2. Author
48
+ Author
49
+ ------
43
50
 
44
51
  Damien MATHIEU :: 42 (AT|CHEZ) dmathieu.com
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ begin
13
13
  gemspec.email = "42@dmathieu.com"
14
14
  gemspec.homepage = "http://github.com/dmathieu/jesus"
15
15
  gemspec.authors = ["Damien MATHIEU"]
16
- gemspec.version = '0.0.2'
16
+ gemspec.version = '0.0.3'
17
17
  end
18
18
  rescue LoadError
19
19
  puts "Jeweler not available. Install it with:"
@@ -30,4 +30,13 @@ desc "Run all specs"
30
30
  Spec::Rake::SpecTask.new('spec') do |t|
31
31
  t.spec_files = FileList['spec/**/*.rb']
32
32
  t.spec_opts = ['-cfs']
33
+ end
34
+
35
+ #
36
+ # SDoc
37
+ #
38
+ begin
39
+ require 'sdoc_helpers'
40
+ rescue LoadError
41
+ puts "sdoc support not enabled. Please gem install sdoc-helpers."
33
42
  end
@@ -0,0 +1,4 @@
1
+ Project.configure do |project|
2
+ # We need to bundle the gems before to do the build
3
+ project.build_command = 'gem bundle && rake'
4
+ end
@@ -1,12 +1,10 @@
1
1
  require 'sinatra/base'
2
- require 'sinatra_more/render_plugin'
3
2
  require 'jesus/interface'
4
3
  require 'jesus/server/helpers'
5
4
 
6
5
  module Jesus
7
6
  class Server < Sinatra::Base
8
7
  dir = File.dirname(File.expand_path(__FILE__))
9
- register SinatraMore::RenderPlugin
10
8
  include Jesus::Helpers
11
9
 
12
10
  set :views, "#{dir}/server/views"
@@ -20,7 +18,7 @@ module Jesus
20
18
  #
21
19
  get '/' do
22
20
  @status = Jesus::Interface.new.status
23
- erb_template @status.nil? ? :error : :home
21
+ show @status.nil? ? :error : :home
24
22
  end
25
23
 
26
24
  #
@@ -28,7 +26,7 @@ module Jesus
28
26
  #
29
27
  get '/logs/:process' do
30
28
  @log = Jesus::Interface.new.log(params[:process])
31
- erb_template @log.nil? ? :error : :log
29
+ show @log.nil? ? :error : :log
32
30
  end
33
31
 
34
32
  #
@@ -42,8 +40,9 @@ module Jesus
42
40
  #
43
41
  # Executes a command (start, restart, stop, quit or terminate) on the server
44
42
  #
45
- post '/command/:command/:process' do
43
+ get '/command/:command/:process' do
46
44
  @command = Jesus::Interface.new.command(params[:command], params[:process])
45
+ flash(:notice, 'The command ' + params[:command] + ' has successfully been executed. It might take a few seconds before the status process effectively changes.')
47
46
  redirect '/'
48
47
  end
49
48
  end
@@ -1,18 +1,56 @@
1
1
  module Jesus
2
2
  module Helpers
3
+ #
4
+ # Is this menu link the current page ?
5
+ #
3
6
  def class_if_current(link)
4
7
  link = '^/$' if link == '/'
5
8
  'class="current"' if request.path_info =~ Regexp.new(link)
6
9
  end
10
+ #
11
+ # The menu link li
12
+ #
7
13
  def tab(name, link)
8
14
  "<li #{class_if_current(link)}><a href='#{link}'>#{name}</a></li>"
9
15
  end
10
16
 
17
+ #
18
+ # The flash message tag
19
+ #
11
20
  def flash_tag(type)
12
21
  "<div id='flash'>#{session.delete(type)}</div>" unless session[type].nil?
13
22
  end
23
+ #
24
+ # Defines a flash message
25
+ #
14
26
  def flash(type, message)
15
27
  session[type] = message
16
28
  end
29
+ #
30
+ # A confirmation, to be included in a link
31
+ #
32
+ def confirm(message='Are you sure you want to do this ?')
33
+ return "javascript:return confirm('" + message + "');"
34
+ end
35
+
36
+ #
37
+ # Displays an erb page
38
+ #
39
+ def show(page, layout = true)
40
+ erb page.to_sym, {:layout => layout}
41
+ end
42
+
43
+ #
44
+ # Displays the actions links for a process
45
+ #
46
+ def process_action(process)
47
+ case process[1][:state]
48
+ when :up
49
+ return '<li><a href="/command/stop/' + process[0] + '" onclick="' + confirm + '">Stop Process</a></li>' +
50
+ '<li><a href="/command/restart/' + process[0] + '" onclick="' + confirm + '">Restart Process</a></li>'
51
+ when :unmonitored
52
+ return '<li><a href="/command/start/' + process[0] + '">Start Process</a></li>'
53
+ end
54
+ end
17
55
  end
18
56
  end
@@ -15,6 +15,7 @@
15
15
  <%= process[0] %>
16
16
 
17
17
  <ul class="links">
18
+ <%= process_action(process) %>
18
19
  <li><a href="/logs/<%= process[0] %>">View Logs</a></li>
19
20
  </ul>
20
21
  </li>
@@ -21,7 +21,7 @@ describe "The home page" do
21
21
  end
22
22
 
23
23
  it 'should execute the command' do
24
- post '/command/start/jesus'
24
+ get '/command/start/jesus'
25
25
  last_response.should be_redirect
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jesus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien MATHIEU
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-19 00:00:00 +01:00
12
+ date: 2009-12-01 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -17,23 +17,23 @@ description: A web interface for god to speak with mankind
17
17
  email: 42@dmathieu.com
18
18
  executables:
19
19
  - autospec
20
- - rake2thor
21
- - sinatra_gen
22
20
  - spec
23
21
  - rackup
24
22
  - god
25
23
  - rake
26
- - thor
27
24
  extensions: []
28
25
 
29
26
  extra_rdoc_files:
30
- - README.textile
27
+ - LICENSE
28
+ - README.md
31
29
  files:
32
30
  - .gitignore
33
31
  - Gemfile
34
- - README.textile
32
+ - LICENSE
33
+ - README.md
35
34
  - Rakefile
36
35
  - config.ru
36
+ - cruise_config.rb
37
37
  - lib/jesus/interface.rb
38
38
  - lib/jesus/server.rb
39
39
  - lib/jesus/server/helpers.rb