2013-08-20 54 views
1

当我尝试运行红宝石的应用程序,它提供了以下错误,红宝石给出了“没有这样的文件或目录 - 的text.txt(错误:: ENOENT)”错误

任何人都可以把一些光给它。

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

好像你试图打开不存在的文件... – piokuc

+0

可能是愚蠢的......我就是这样做来解决这个问题,我已经在手动tmp目录中创建logger.pid,然后重新启动应用程序然后它工作。 – phulei

+0

发现它的一个错误。现在它的固定。 – phulei

回答

0

似乎是从

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

制止尽量只

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

也正是在这里添加一个条件,以创建“TMP '文件夹,如果它不存在。当您创建pid文件,你可以告诉它来创建它的任何目录。

+0

tmp目录已经存在于我的当前目录 – phulei

0

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

+0

仍然得到错误 - /主页/ swapnasa /下载/ irclogger主 logger.rb:14:'读':没有这样的文件或目录 - /首页/ swapnasa /下载/ irclogger主/ LIB/TMP/logger.pid(错误:: ENOENT) 从logger.rb:14:在'

' – phulei

0

的问题是最有可能的是,tmp目录不存在。尝试是这样的:

piddir = File.join(File.dirname(__FILE__), 'tmp') 
Dir.mkdir(piddir) 
pidfile = File.join(piddir, 'logger.pid') 
+0

已经tmp目录是本logger.rb:12:在'MKDIR':文件存在 - 。/TMP(错误:: EEXIST) 从logger.rb:12:在'

“ – phulei

+0

实测值上的代码中的错误,现在它的固定。 – phulei

0

如果添加:

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

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

相关问题