运行Rails代码/初始化程序,但不通过Rake

时间:2013-08-13 07:15:24

标签: ruby-on-rails-3 initialization rake

我的应用程序一直遇到一个反复出现的问题。基本上,我有一些代码,我希望它在第一次启动服务器时运行,以检查是否已定义某些内容,例如计划,数据库中的特定列,文件的存在等,然后相应地采取行动。

但是,当我开始执行Rake任务(或执行'生成'等等)时,我绝对不希望此代码运行。例如,我不希望在Rake下检查数据库字段,因为Rake任务可能是定义字段的迁移。另一个例子,我有Resque的动态调度,但是我不想在启动Resque worker时加载它。依此类推......等等...

我绝对需要Rake任务来加载环境!

有没有办法确定应用程序的加载方式?我确实希望在通过'rails server',Apache / Passenger,console等加载代码时运行代码,但在其他时候却没有。

如果没有,您在何处或如何定义此代码以确保其仅以上述方式执行?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用类似

的方法检查初始化代码中的某些环境变量
if ENV['need_complex_init']
  do_complex_init     
end

并使用need_complex_init=1 rails s

运行应用程序