应用程序初始化期间的 Rake 任务 rails
Rake task during application initialization rails
我想在我的应用程序的服务器启动时执行 rake 任务。
在 config/application.rb 中,我输入了以下内容:
if !Rails.env.production?
Rake::Task[ "init:db_records" ].invoke
end
rake 任务定义明确,如果我从终端调用它,运行没有问题
rake init:db_records
但是当放在config/application.rb(或者甚至在任何初始值设定项/*)中时,我得到了以下错误。
不知道如何构建任务'init:db_records'
服务器启动时如何执行rake任务?
谢谢!
您的 Rake 任务(可能)在 Rakefile
中定义。 initializer
不知道该文件是否存在,因此它不知道其中的任务。
规避此问题的最简单方法是执行以下操作:
Dir.chdir(Rails.root) do
`rake init:db_records`
end
也就是把工作目录改成根rails目录,然后运行命令。
Rails 已经有了建立开发数据库的机制 -- rake db:seed
。它不会在您启动应用程序时自动 运行,但会 运行 作为 rake db:setup
的一部分。
除非你有充分的理由,否则通常最好坚持 Rails 提供的约定。
给以后遇到同样问题的朋友。
我通过在 initializers
目录中创建一个新文件来实现这一点,我在其中放置了 rake 任务的代码。
此时这样做的好处是应用程序已经加载,因此您可以访问 ActiveRecord 函数...
将代码直接放在 config/application.rb 中是行不通的,因为我的模型还没有加载。
希望对您有所帮助!
我想在我的应用程序的服务器启动时执行 rake 任务。
在 config/application.rb 中,我输入了以下内容:
if !Rails.env.production?
Rake::Task[ "init:db_records" ].invoke
end
rake 任务定义明确,如果我从终端调用它,运行没有问题
rake init:db_records
但是当放在config/application.rb(或者甚至在任何初始值设定项/*)中时,我得到了以下错误。
不知道如何构建任务'init:db_records'
服务器启动时如何执行rake任务?
谢谢!
您的 Rake 任务(可能)在 Rakefile
中定义。 initializer
不知道该文件是否存在,因此它不知道其中的任务。
规避此问题的最简单方法是执行以下操作:
Dir.chdir(Rails.root) do
`rake init:db_records`
end
也就是把工作目录改成根rails目录,然后运行命令。
Rails 已经有了建立开发数据库的机制 -- rake db:seed
。它不会在您启动应用程序时自动 运行,但会 运行 作为 rake db:setup
的一部分。
除非你有充分的理由,否则通常最好坚持 Rails 提供的约定。
给以后遇到同样问题的朋友。
我通过在 initializers
目录中创建一个新文件来实现这一点,我在其中放置了 rake 任务的代码。
此时这样做的好处是应用程序已经加载,因此您可以访问 ActiveRecord 函数...
将代码直接放在 config/application.rb 中是行不通的,因为我的模型还没有加载。
希望对您有所帮助!