【问题标题】:Rails - In-app "database seed" button?Rails - 应用内“数据库种子”按钮?
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 哦,不知道那个:) 绝对是要走的路。
  • 哇,这不仅有效,还大大提高了操作速度。非常感谢!
【解决方案2】:

还有:

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

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    相关资源
    最近更新 更多