`

Rails2.0.2中rake在production环境不能log

阅读更多
目前的定时任务是用cron + rake。

在rake中使用了log进行相关的信息记录,
rake :test_xxx => :environment do
# some operation
RAILS_DEFAULT_LOGGER.info "It takes #{end_time - start_time} to generate tippay message #{Time.now.to_s(:db)}"
end

在开发环境下发现是正常的,但是在产品环境中怎么也不能log,原来答案在这里:
http://www.ruby-forum.com/topic/149073

所以解决办法有两种,其实都一样:
1.在rake之前配置RAILS_DEFAULT_LOGGER.auto_flushing = true
2.在rake任务的block块内的最后面加上RAILS_DEFAULT_LOGGER.flush



===========================================
The good news is I've somehow worked around it by putting this as the
first line in all of my rake tasks:

RAILS_DEFAULT_LOGGER.auto_flushing = true

Now I'm seeing all my output again, yay!

But why should I have to do this?  I think (but can't prove) that this
broke when I upgraded from 1.2.6 to 2.0.2.  But if it was a Rails bug,
I would think this would be biting a lot of people, not just me.

Also I'm concerned about the effect this change will have on
performance, so I hope someone can shed some light here.

Thanks!
Jeff

===================================================
I guess you're asking about "auto_flushing", not "auto_loading"?

In 2.0.2, /railties/lib/initializer.rb, line 254:

http://github.com/github/rails/tree/c8da518bbfedc2a06b1d96912ddae00e57f21748/railties/lib/initializer.rb#L254

  logger.auto_flushing = false if configuration.environment ==
"production"

This overwrites the default as set in active_support/buffered_logger,
line 41:

http://github.com/github/rails/tree/c8da518bbfedc2a06b1d96912ddae00e57f21748/activesupport/lib/active_support/buffered_logger.rb#L41

  @auto_flushing = 1

By the way: in upcoming releases you'll find an additional different
default:

http://github.com/github/rails/tree/master/railties/lib/initializer.rb#L345-348

  if configuration.environment == "production"
    logger.auto_flushing = false
    logger.set_non_blocking_io
  end

3
0
分享到:
评论

相关推荐

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer 版本,并安装 Ruby。然后,下载 Rails 2.0.2 版本,并安装。接下来,需要安装 Mongrel 服务器。...

    rails 2.0.2 分页 需另外下载插件

    在Ruby on Rails框架中,`Rails 2.0.2`是一个较早的版本,而分页功能在那个时期并不像现在的Rails应用那样内置在框架内。为了实现分页,开发者通常需要安装并使用第三方插件,比如"will_paginate"。这个插件允许你在...

    ruby1.8.6 + rails2.0.2 安装配置 详细说明

    这个过程可能需要一些时间和耐心,但遵循上述步骤,您将成功建立一个兼容ruby1.8.6和rails2.0.2的开发环境。同时,提供的`安装说明.xls`文件应该包含更详细的步骤和可能遇到的问题解决方案,确保您在整个过程中得到...

    Rails3 使用rake启动后台任务

    在 Rails 应用程序中,Rake 通常用于数据库迁移、测试、清理等操作,以及启动后台任务。 在 Rails3 中,rake 不仅用于基本的项目管理,还可以用于启动后台任务,这在处理耗时操作、异步任务或者批量数据处理时非常...

    rake-0.8.7.tgz

    描述中提到的“rake for rails”以及“rake-0.8.7安装rails必须资源”进一步强调了rake在Rails环境搭建和项目管理中的核心地位。 rake,源自英语单词“rake”(意为耙子),在编程世界里,它是一个构建自动化工具,...

    rails简单实例_rake数据导入

    来自practical rails social networking sites上的第二章的实例,应用了数据导入,导入数据到mysql后就可以使用,命令: rake db:migrate(进入文件夹"railscoder")

    rails-chm-2-0-2.rar

    在Rails 2.0.2中,开发者可以体验到以下关键知识点: 1. **安装与设置**:Rails可以通过Gem包管理器进行安装。了解如何配置数据库连接、创建新项目、以及设置路由是初学者的基础。 2. **模型(Model)**:模型是...

    centOS Rails3环境搭建

    在Ruby环境中安装Rails,这里选择了Rails 2.3.11版本。注意:实际上Rails 3推荐使用更高的版本,例如3.0或更高版本。不过为了保持与原始文件一致,这里仍采用2.3.11: ```bash gem install rails -v=2.3.11 ``` ##...

    浅谈Ruby on Rails下的rake与数据库数据迁移操作

    在Ruby on Rails框架中,数据库迁移是开发过程中不可或缺的一部分,用于管理数据库模式的变化。本文将深入探讨Rails中的rake工具和数据库迁移的概念,以及如何正确地利用它们。 首先,Rails中的Migration是数据库...

    rake-0.8.7

    在Ruby on Rails框架中,`rake`是一个不可或缺的工具,它扮演着构建、部署和管理任务的角色。Rake,全称为“Ruby Make”,是Ruby语言的一个构建系统,灵感来源于Perl的Make工具和Ant。在Rails应用中,`rake`不仅用于...

    bower-rails, 在 Rails 上,为 Bower 设置类似 DSL + rake任务.zip

    bower-rails, 在 Rails 上,为 Bower 设置类似 DSL + rake任务 rails Bower 对 Rails 项目的支持。 依赖文件是 Rails root 目录中的bower.json,如果使用 DSL,则为 Bowerfile 。 查看最新变更和发布的变更日志文件...

    ruby on rails安装环境.txt

    标题与描述均提到了“ruby on rails安装环境”,这表明文档主要关注的是如何在特定的环境中设置Ruby on Rails。Ruby on Rails(常简称为Rails)是一种用于开发Web应用程序的开源框架,采用Ruby语言编写,遵循MVC...

    配置rails环境

    在Ruby on Rails开发环境中,配置过程是至关重要的第一步。Rails是一个基于Ruby的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式。在安装完Ruby之后,配置Rails环境通常包括以下几个关键步骤: 1. **...

    ruby on rails源代码分析

    在初始化过程中,Rails 还会自动加载 `config/environment.rb` 文件,这是 Rails 应用程序的主要配置文件,它定义了应用程序的基本环境(如 development、test 或 production),并加载了所有相关的 gem 和库。...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发过程中,Aptana的调试工具是必不可少的。你可以设置断点,单步执行代码,查看变量值,帮助找出程序中的错误。此外,Aptana还集成了版本控制系统,如Git,你可以直接在IDE中完成提交、推送等操作。 Rails的另...

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及以上版本,并与MySQL进行无缝对接。 首先,我们需要安装Ruby for Windows。你可以从RubyForge网站上下载最新的One-Click Installer版本,...

    rails 项目起步示例

    在Rails项目中,我们首先需要了解的是项目的目录结构。一个标准的Rails应用会包含以下关键部分: 1. **app**:应用程序的核心,包括模型(models)、视图(views)和控制器(controllers)。模型负责业务逻辑和数据...

Global site tag (gtag.js) - Google Analytics