【发布时间】:2023-03-10 18:57:01
【问题描述】:
我正在为我的公司构建一个 Rails 应用程序。我的 seeds.rb 文件包含用于将我的用户列表与我们的 Office 365 目录同步的代码,每次目录中发生更改时都需要执行此操作,并且我正在尝试构建应用内“种子”按钮,以便没有 Rails/Heroku 知识的人可以启动该过程。
正如您在下面的代码摘录中看到的那样,我发现我可以通过调用 rails db:seed 作为 shell 命令来做到这一点,但感觉应该有比 Rails 更少迂回的方法来做到这一点应用调用 shell 命令对其自身执行操作。
有没有办法在应用程序中实际运行 seed.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
...
【问题讨论】:
-
您总是可以将您的种子加载程序代码移动到一个不错的类中,然后只需创建该类的一个实例或使用类方法在您的 Rake 任务和单击该按钮时完成这项工作.
标签: ruby-on-rails ruby seeding