【发布时间】:2018-04-12 19:52:49
【问题描述】:
我使用的是 Rails 5.1。如何让我的初始化文件(位于 config/my_init.rb)识别它何时在服务器启动的上下文中运行以及何时在 rake 任务的上下文中运行?我认为下面会做到这一点......
puts "iniitializing ... #{(!Rails.env.test?) } defined; #{!defined?(::Rake)}"
if(!Rails.env.test?) && !defined?(::Rake)
当我运行 rake 任务时,“!defined?(::Rake)”正确返回 false ...
localhost:myproject davea$ rake db:seed
iniitializing ... true defined; false
但是当我启动我的服务器时,该子句仍然返回 false
localhost:myproject davea$ rails s -b 127.0.0.1
=> Booting Puma
=> Rails 5.1.5 application starting in development
=> Run `rails server -h` for more startup options
iniitializing ... true defined; false
如何区分两者?
【问题讨论】:
-
也许您可以在您的 Rakefile 中定义一个常量,并在执行所需的代码块之前检查它是否已定义。在 Rakefile 中定义的常量在 Rails 环境中不可用。
标签: ruby-on-rails initialization ruby-on-rails-5 rake