我的应用程序一直遇到一个反复出现的问题。基本上,我有一些代码,我希望它在第一次启动服务器时运行,以检查是否已定义某些内容,例如计划,数据库中的特定列,文件的存在等,然后相应地采取行动。
但是,当我开始执行Rake任务(或执行'生成'等等)时,我绝对不希望此代码运行。例如,我不希望在Rake下检查数据库字段,因为Rake任务可能是定义字段的迁移。另一个例子,我有Resque的动态调度,但是我不想在启动Resque worker时加载它。依此类推......等等...
我绝对需要Rake任务来加载环境!
有没有办法确定应用程序的加载方式?我确实希望在通过'rails server',Apache / Passenger,console等加载代码时运行代码,但在其他时候却没有。
如果没有,您在何处或如何定义此代码以确保其仅以上述方式执行?
答案 0 :(得分:0)
最简单的方法是使用类似
的方法检查初始化代码中的某些环境变量if ENV['need_complex_init']
do_complex_init
end
并使用need_complex_init=1 rails s