我看过很多关于为一项任务加载整个 Rails 环境的文章。但是,我担心这是不必要的,因为我的任务只使用了两个模型(加上“resque”和“resque/scheduler”)。我怎样才能只为我的任务加载环境的某些部分?
此外,这个问题似乎是一样的,但它已经过时了,似乎没有人充分回答它......我现在会提前问,有人请提供代码而不仅仅是解释。
你可能不会喜欢这个答案,但是......
您不应该只加载环境的一部分。任何解决方法都将是丑陋、令人不快和脆弱的。它更快、更容易、更标准,只需要您的整个环境。您提出的任何解决方案可能只会将任务的启动时间缩短一到两秒钟,而且您为实现它投入了多少时间和精力是不值得的。
不过,如果你真的想这样做,如果你只是加载 ActiveRecord 模型,你可以在你的任务之前尝试这样的事情:
require 'active_record'
require './app/models/my_model.rb'
您可能会收到一堆关于未定义方法和缺少常量的错误。您可以手动更正其中的每一个,需要一个一个文件来更正问题,或者只是接受我的建议并需要您的环境。(提示:只需要你的环境。)