【问题标题】:Load only part of environment for rake task?只为 rake 任务加载部分环境?
【发布时间】:2012-04-04 11:03:55
【问题描述】:

我看过一篇bunch 的文章,其中涉及为一项任务加载整个 Rails 环境。但是,我担心这是不必要的,因为我的任务只使用了两个模型(加上“resque”和“resque/scheduler”)。我怎样才能只为我的任务加载环境的某些部分?

另外,这个question 似乎是一样的,但它已经过时了,似乎没有人充分回答它......我现在提前问一下,有人请提供代码,而不仅仅是一个解释。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 rake resque rake-task


    【解决方案1】:

    你可能不会喜欢这个答案,但是……

    您不应该只加载环境的一部分。任何解决方法都将是丑陋、令人不快和脆弱的。它更快、更容易、更标准,只需要您的整个环境。您提出的任何解决方案都可能只会将任务的启动时间缩短一到两秒,而且您为实现它投入了多少时间和精力是不值得的。

    不过,如果你真的想这样做,如果你只是加载 ActiveRecord 模型,你可以在你的任务之前尝试这样的事情:

    require 'active_record'
    require './app/models/my_model.rb'
    

    您可能会收到一堆关于未定义方法和缺少常量的错误。您可以手动更正其中的每一个,需要一个一个文件来更正问题,或者只是接受我的建议并需要您的环境。 (提示:只需要你的环境。)

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 2017-02-07
      • 2011-10-26
      相关资源
      最近更新 更多