【发布时间】:2017-10-01 03:42:06
【问题描述】:
众所周知,当启动一些 rake 任务时,会发生以下步骤:
Rails 加载(新的
Rails::Application实例初始化)然后运行rake任务
因此,对于 rake 任务和 Rails 服务器,Rails 应用程序实例会有所不同。 我想知道,是否可以与 rake 任务或 rails 控制台共享 rails 服务器实例? 如果我想要一个 rake 任务,这可能是一种解决方法,它在运行 rails 服务器应用程序中修改类变量或类实例变量。
在我正在运行的应用程序中,我有一个带有类实例变量的模型
class User
@some_flag = false
class << self
def some_flag
@some_flag
end
def some_flag=(val)
@some_flag = val
end
end
end
在我计划在后台运行的 rake 任务中,我想更新该变量:
namespace :user do
desc "update flag"
task update: :environment do
User.some_flag = ENV['flag']
end
end
然后在应用程序中使用更新的值
【问题讨论】:
-
您能否举例说明您想要做什么以及为什么要做什么,它可能会在与您寻找的不同方向上提供解决方案。
-
如果你想这样做,我认为最好使用环境变量或将这些标志持久化到数据库中。
-
是的,我想不可能,最好使用数据库