我正在为我的公司构建一个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
...
答案 0 :(得分:5)
您只需在代码
中使用Rails.application.load_seed
即可
答案 1 :(得分:3)
还有:
MyAwesomeApp::Application.load_tasks
Rake::Task["db:seed"].invoke