Tag: 守护进程

我无法使用守护进程gem运行我的Rails应用程序

我想在我的Rails项目中使用Daemons gem,所以我可以使用Monit轻松监视它,这个gem将允许我创建PID并使用诸如start和stop之类的命令。 无论如何,似乎我不能以某种方式使用它与rails,我创建一个文件,并将其命名为admin: require ‘rubygems’ require ‘daemons’ ROOT_PATH = File.expand_path(“#{File.dirname __FILE__}/../”) require “#{ROOT_PATH}/config/environment” Daemons.run(“#{ROOT_PATH}/script/rails” , :dir_mode => :system, :log_output => true ) 当我尝试运行它时: bundle exec ./bin/admin run — s 我收到此错误: /Users/info/.rvm/gems/ruby-1.9.3-p286/gems/rake-0.8.7/lib/rake/alt_system.rb:32: Use RbConfig instead of obsolete and deprecated Config. => Booting WEBrick => Rails 3.0.5 application starting in development on http://0.0.0.0:3000 => Call with -d […]

为什么这个Ruby代码无法写入日志文件?

一旦脚本被守护,那么记录器就不能再写入该文件了。 那么我应该如何以及何时初始化日志? require ‘rubygems’ require ‘daemons’ require ‘logging’ def create_new_logger logger = Logging.logger[‘trend-analyzer’] logger.add_appenders( Logging.appenders.rolling_file(‘./logs/trend-analyzer.log’), Logging.appenders.stdout ) logger.level = :debug return logger end logger = create_new_logger #this log message gets written to the log file logger.debug Time.new Daemons.run_proc(‘ForestPress’, :log_dir => ‘.logs’, :backtrace => true) do running_as_daemon = true #this log message does NOT get written […]

Daemoninsing一个rake任务

我有一个rake任务,它在rails环境下运行mailman。 我想确保rake任务总是通过守护进程运行。 我的rake任务是rake incoming_mail 我该如何进行守护?

使用ruby中的守护进程在不同目录中添加日志

我正在使用守护进程来包装我的脚本,并将日志位置指定为:脚本如下所示: #!/usr/local/bin/ruby require ‘rubygems’ require ‘daemons’ Daemons.run_proc( ‘script_test’, # name of daemon :log_output => true, :output_logfilename => “script-test.log”, :logfilename => “script-test.log” ) do exec ‘ruby /opt/script-test/script-test.rb’ end 问题是我的日志存储在我的脚本所在的同一目录中。 我必须将我的日志添加到不同的目录,例如/ var / log / script-test,然后必须每周轮换这些日志。 为我提供解决方案,以便我可以将脚本日志存储在/ var / log目录中。

使用Ruby on Rails执行脚本?

我想用我的应用程序启动我的守护进程。 在命令行中,我可以编写类似lib/daemons/mydaemon_ctl start来启动我的守护进程,但我必须手动执行此操作。 我希望守护进程在我启动服务器时启动(即加载初始化程序文件时)。 是否有执行命令行的ruby命令? 像exec “lib/daemons/mydaemon_ctl start” ? 谢谢!

加载Ruby on Rails模型而不加载整个框架

我正在寻找创建一个自定义守护程序,它将运行各种数据库任务,如延迟邮件和用户通知(每个通知是通知表中的一个单独的行)。 我不想使用script/runner或rake来执行这些任务,因为某些任务可能只需要根据任务创建一个或两个数据库行或数千行。 我不希望启动ruby进程或为每个操作加载整个rails框架的开销。 我计划将这个守护进程保留在内存中。 要创建这个守护进程,我想在我的ruby on rails应用程序中使用我的模型。 我有一些rails插件,例如acts_as_tree和AASM ,如果我在哪里使用模型,我将需要加载。 我需要加载的一些插件是我创建的ActiveRecord :: Base上的自定义hacks。 (如果他们需要从导轨的其他部分使用组件,我愿意接受删除或重新编码某些插件。) 我的问题是 这是一个好主意吗? 并且 – 这是否可以通过手动包含我的模型和插件中的每个文件来实现? 如果不是一个好主意 什么是好的选择? (我不习惯编写自己的SQL查询,但我必须为守护程序添加数据库约束和单独的用户以防止任何愚蠢的事故。鉴于我对配置数据库不熟悉,我想使用活动记录作为拐杖。)

在Rails环境中执行Ruby Worker脚本

我有以下情况: 我希望能够将一个独立的Ruby脚本作为守护进程运行。 我希望能够在我的Rails项目的上下文/环境中执行此脚本(例如,脚本可以访问后端/我的Rails模型)。 有没有直接的方法来实现这一目标? 谢谢!

将“puts”命令输出重定向到日志文件

我正在使用守护进程gem在Ruby中创建一个守护进程。 我想将守护进程的输出添加到日志文件中。 我想知道将puts从控制台重定向到日志文件的最简单方法是什么。

Ruby守护进程使瞬态Ruby实例的对象保持活动状态

Ruby是否提供了一种机制来在不同的运行Ruby进程之间共享变量(更重要的是,类对象和我认为对此有用的任何其他数据抽象)? 例如,如果我有一个实例化的类,初始化并仔细调整到某个状态,我希望该状态全局可用于我所有其他独立的Ruby和Irb运行全天,超过最初使用的进程的生命周期它。 我现在正在考虑有效解决这个问题的一个场景是创建一个微型Ruby脚本,仅仅作为我选择的持久对象和变量的守护者 ,并使用守护进程gem或类似物进行守护 。 设置在早上1点,在所有事情结束时在晚上拆除。 在整个一天中,另一个Ruby程序的许多实例 – 包含我的实际业务逻辑的程序 – 将来去能够使用和操作我在上面的守护进程中保持活动的所选对象。 我应该学习如何将复杂对象序列化到磁盘吗? (实际上更喜欢RAM不是磁盘,因为它无论如何都是暂时的,并且重新创建它只需花费很多时间)

rails 3中的脚本/跑步者

我有两个我想要运行的工作,它们依赖于我的rails应用程序中的Models。 我在一个名为Jobs的单独文件夹中添加了ruby文件,我已将其附加到rails项目中。 每当我尝试通过ruby命令运行它时,我会收到以下错误: 未初始化的常量反馈(NameError)。 这里的反馈是我在我的rails应用程序中使用的模型。 我的问题:因为我使用的作业实际上与rails 2的script / runner命令兼容,Rails 3有替代方案吗? 如果不是,我如何编写依赖于我在rails应用程序中的模型的ruby程序,而不会得到我上面提到的错误。