Rails - 应用内 "database seed" 按钮?

Rails - In-app "database seed" button?

我正在为我的公司构建一个 Rails 应用程序。我的 seeds.rb 文件包含将我的用户列表与我们的 Office 365 目录同步的代码,每次目录发生变化时都需要执行此操作,我正在尝试构建一个应用程序内 "seed" 按钮,以便没有 Rails/Heroku 知识的人可以启动该过程。

正如您在下面的代码摘录中看到的那样,我发现我可以通过调用 rails db:seed 作为 shell 命令来做到这一点,但感觉应该少一些与 Rails 应用程序调用 shell 命令对自身执行操作相比,这是一种迂回的方式。

有没有办法从应用程序中实际 运行 seeds.rb 中的代码,或者调用 rails db:seed 我最接近的代码?

app/views/layouts/_header.html.erb

...
<li><%= link_to "Sync users with O365", seed_path %></li>
...

config/routes.rb

...
get '/seed', to: 'application#seed'
...

app/controllers/application_controller.rb

...
  def seed
    `rails db:seed`
    redirect_back_or root_path
  end
...

您可以在代码中的任意位置简单地使用 Rails.application.load_seed

还有:

MyAwesomeApp::Application.load_tasks
Rake::Task["db:seed"].invoke