D
david
Windows 2000 SP4
Ruby 1.8.6
Rail 1.2.6
I'm trying to create a Rail application for our internal use to
provide a one stop access to services. I'm currently trying to get the
Server.status, Service.stop and Service.start to work through a model
in Rails. The Service.* functions work well through Ruby itself, but
seems to have problem through a Rails Model. I've been trying to
display the status of the MySQL service.
*** Model
require "win32/service"
class Servicectl
include Win32
attr_reader :state
def servicestatus(service_name, host_name)
@state = Service.status(service_name, host_name)
end
def servicestart(service_name, host_name)
Service.start(service_name, host_name)
end
def servicestop(service_name, host_name)
Service.stop(service_name, host_name)
end
end
*** Controller
class ServicectlController < ApplicationController
def show
service_state = Servicectl.new
service_state.servicestatus("MySQL",nil)
@status = service_state.state
end
end
*** Show View
<%= @status %>
The following error is posted to the development.log.
Processing ServicectlController#show (for 127.0.0.1 at 2008-04-19
11:53:46) [GET]
Session ID: d446bf0a6cad825dbf5d1a78e6853706
Parameters: {"action"=>"show", "controller"=>"servicectl"}
Win32::Service::Error (T):
c:/ruby/lib/ruby/gems/1.8/gems/win32-service-0.6.1-x86-mswin32-60/
lib/win32/service.rb:920:in `status'
C:/Shared/SourceCode/Rails/sandbox/app/models/servicectl.rb:14:in
`servicestatus'
C:/Shared/SourceCode/Rails/sandbox/app/controllers/
servicectl_controller.rb:9:in `show'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:1101:in `send'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:1101:in `perform_action_without_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:696:in `call_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:688:in `perform_action_without_benchmark'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/rescue.rb:83:in `perform_action'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:435:in `send'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:435:in `process_without_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:684:in
`process_without_session_management_support'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/session_management.rb:114:in `process'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:334:in `process'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/dispatcher.rb:41:in
`dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
113:in `handle_dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
79:in `service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
63:in `dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/commands/servers/
webrick.rb:59
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:495:in `require'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:342:in `new_constants_in'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:495:in `require'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/commands/server.rb:
39
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
script/server:3
I have no idea why it is failing, I'm hoping someone might have a clue
for me.
For reference this is the working code which works well though Ruby
itself.
*** service.rb
require "win32/service"
class ServiceController
include Win32
attr_accessor :state
def status(service_name, host_name)
@state = Service.status(service_name, host_name)
end
def start(service_name, host_name)
Service.start(service_name, host_name)
end
def stop(service_name, host_name)
Service.stop(service_name, host_name)
end
end
*** Output:
C:\Shared\SourceCode\Ruby>ruby service.rb
running
Thanks for all your time,
Dave
Ruby 1.8.6
Rail 1.2.6
I'm trying to create a Rail application for our internal use to
provide a one stop access to services. I'm currently trying to get the
Server.status, Service.stop and Service.start to work through a model
in Rails. The Service.* functions work well through Ruby itself, but
seems to have problem through a Rails Model. I've been trying to
display the status of the MySQL service.
*** Model
require "win32/service"
class Servicectl
include Win32
attr_reader :state
def servicestatus(service_name, host_name)
@state = Service.status(service_name, host_name)
end
def servicestart(service_name, host_name)
Service.start(service_name, host_name)
end
def servicestop(service_name, host_name)
Service.stop(service_name, host_name)
end
end
*** Controller
class ServicectlController < ApplicationController
def show
service_state = Servicectl.new
service_state.servicestatus("MySQL",nil)
@status = service_state.state
end
end
*** Show View
<%= @status %>
The following error is posted to the development.log.
Processing ServicectlController#show (for 127.0.0.1 at 2008-04-19
11:53:46) [GET]
Session ID: d446bf0a6cad825dbf5d1a78e6853706
Parameters: {"action"=>"show", "controller"=>"servicectl"}
Win32::Service::Error (T):
c:/ruby/lib/ruby/gems/1.8/gems/win32-service-0.6.1-x86-mswin32-60/
lib/win32/service.rb:920:in `status'
C:/Shared/SourceCode/Rails/sandbox/app/models/servicectl.rb:14:in
`servicestatus'
C:/Shared/SourceCode/Rails/sandbox/app/controllers/
servicectl_controller.rb:9:in `show'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:1101:in `send'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:1101:in `perform_action_without_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:696:in `call_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:688:in `perform_action_without_benchmark'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
c:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/benchmarking.rb:66:in
`perform_action_without_rescue'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/rescue.rb:83:in `perform_action'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:435:in `send'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:435:in `process_without_filters'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/filters.rb:684:in
`process_without_session_management_support'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/session_management.rb:114:in `process'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/
action_controller/base.rb:334:in `process'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/dispatcher.rb:41:in
`dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
113:in `handle_dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
79:in `service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
c:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/webrick_server.rb:
63:in `dispatch'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/commands/servers/
webrick.rb:59
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:495:in `require'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:342:in `new_constants_in'
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/
active_support/dependencies.rb:495:in `require'
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/commands/server.rb:
39
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
script/server:3
I have no idea why it is failing, I'm hoping someone might have a clue
for me.
For reference this is the working code which works well though Ruby
itself.
*** service.rb
require "win32/service"
class ServiceController
include Win32
attr_accessor :state
def status(service_name, host_name)
@state = Service.status(service_name, host_name)
end
def start(service_name, host_name)
Service.start(service_name, host_name)
end
def stop(service_name, host_name)
Service.stop(service_name, host_name)
end
end
*** Output:
C:\Shared\SourceCode\Ruby>ruby service.rb
running
Thanks for all your time,
Dave