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