gpt4 book ai didi

ruby-on-rails - Rails 引擎在播种数据库时不会急切地加载应用程序文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:07 25 4
gpt4 key购买 nike

我正在尝试将安装任务添加到我的可安装引擎 units

任务加载种子,并在其中清除一些表:

# lib/tasks/units_tasks.rake
namespace :units
task :install do
Units::Engine.load_seed
end
end

# db/seeds.rb
Units::Item.delete_all
...

当我从命令行调用任务时

$ bundle exec rake units:install
# => NameError: uninitialized constant Units::Item

像往常一样需要引擎(并且 gem 本身可以正常工作除上述情况外的依赖项)。

# lib/units.rb
require 'units/engine'
module Units
end

# lib/units/engine.rb
module Units
class Engine < ::Rails::Engine
isolate_namespace Units
end
end

很明显它没有文件加载,应该急切加载。但是为什么?

最佳答案

在你的种子方法中,你需要

require_relative '../lib/units'

或可能

require_relative '../lib/units/engine'

然后您应该能够像以前一样命名空间。

我相信这与 Rails 的线程安全特性有关,但我无法理解更技术性的原因。

关于ruby-on-rails - Rails 引擎在播种数据库时不会急切地加载应用程序文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26335690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com