jesus 0.0.2 → 0.0.3

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 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