Rails - 应用内“数据库种子”按钮?

时间:2017-06-20 15:12:55

标签: ruby-on-rails ruby seeding

我正在为我的公司构建一个Rails应用程序。我的 seeds.rb 文件包含用于将我的用户列表与我们的Office 365目录同步的代码,每当目录中的某些内容发生更改时,都需要这样做,我正在尝试构建应用内“种子“按钮,以便没有Rails / Heroku知识的人可以启动该过程。

正如您在下面的代码摘录中所看到的,我已经发现我可以通过调用rails db:seed作为shell命令来实现这一点,但感觉应该有一个不那么迂回的方式来做到这一点。一个Rails应用程序调用shell命令对自己执行操作。

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

应用程序/视图/布局/ _header.html.erb

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

配置/ routes.rb中

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

应用程序/控制器/ application_controller.rb

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

2 个答案:

答案 0 :(得分:5)

您只需在代码

中使用Rails.application.load_seed即可

答案 1 :(得分:3)

还有:

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