1

当我试图运行一个 ruby​​ 应用程序时,它给出了以下错误,

谁能给它一些启示。

ruby logger.rb
/home/swapnasa/Downloads/irclogger-master
logger.rb:14:in `read': No such file or directory - ./tmp/logger.pid (Errno::ENOENT)
        from logger.rb:14:in `<main>'

代码在这里:

#!/usr/bin/env ruby

puts Dir.pwd

$: << File.join(File.dirname(__FILE__), 'lib')

require 'irclogger'
require 'irclogger/cinch_plugin'
require 'redis'

pidfile = File.join(File.dirname(__FILE__), 'tmp', 'logger.pid')

begin
  old_pid = File.read(pidfile).to_i
  Process.kill 0, old_pid

  raise "An existing logger process is running with pid #{old_pid}. Refusing to start"
rescue Errno::ESRCH
end

File.open(pidfile, 'w') do |f|
  f.write Process.pid
end

bot = Cinch::Bot.new do
  configure do |c|
    c.server   = Config['server']
    c.channels = Config['channels']
    c.user     = Config['username']
    c.nick     = Config['nickname']
    c.realname = Config['realname']

    # cinch, oh god why?!
    c.plugins.plugins = [IrcLogger::CinchPlugin]
  end
end

IrcLogger::CinchPlugin.redis = Redis.new(url: Config['redis'])

bot.start
4

4 回答 4

0

如果您添加:

  File.open(pidfile, 'w+') do |f|
    f.write Process.pid
  end

那应该会自动为您创建文件。而不是你先创建它。

于 2013-08-21T15:07:18.693 回答
0

似乎源于

pidfile = File.join(File.dirname(__FILE__), 'tmp', 'logger.pid')

试一试

pidfile = File.join('./tmp', 'logger.pid')

如果“tmp”文件夹不存在,还可以在此处添加一个条件来创建它。当您创建该 pid 文件时,您可以告诉它创建它所在的任何目录。

于 2013-08-20T16:23:06.883 回答
0

pdfile = File.join( Dir::pwd,'lib', 'tmp', 'logger.pid' )

于 2013-08-20T16:23:11.873 回答
0

问题很可能是该tmp目录不存在。尝试这样的事情:

piddir = File.join(File.dirname(__FILE__), 'tmp')
Dir.mkdir(piddir)
pidfile = File.join(piddir, 'logger.pid')
于 2013-08-20T16:23:28.373 回答