如何解决将 Packwerk 与 ActiveAdmin 结合使用移动模型文件夹后的统一常量
我在 rails 6 应用程序中使用 packwerk 来强制执行新组件之间的边界(但我认为问题更多地与将活动管理员使用的模型移出 app/models
文件夹有关).
rails 项目的旧设置:
app/
...
models/
subscription.rb
...
services/
subscription_service.rb
bin
config
...
成为
app
bin
components/
subscription/
app/
public/
subscription_service.rb
spec/
subscription_service_spec.rb
package.yml
config
...
然后我会在我的 config/application.rb
class Application < Rails::Application
...
config.autoload_paths += Dir[Rails.root / "components/*/app/public"]
...
end
现在,当我运行 bundle exec rspec components/subscriptions/spec/subscription_service_spec.rb
时,测试通过并且一切似乎都正常。
当我添加订阅模型时,结构将如下所示:
app
bin
components/
subscription/
app/
public/
subscription_service.rb
models/
subscription.rb # no longer in app/models
spec/
subscription_service_spec.rb
package.yml
config
...
我收到此错误:
An error occurred while loading ./components/subscriptions/spec/subscription_service_spec.rb.
Failure/Error:
ActiveAdmin.register Subscription do
menu false
includes :pauses,:invoices
config.remove_action_item(:edit)
config.remove_action_item(:destroy)
filter :id
filter :status
NameError:
uninitialized constant Subscription
我认为这可能与 ActiveAdmin 自动加载的方式有关,但我正在努力寻找答案 - 所以任何帮助/线索将不胜感激
解决方法
啊,我想通了,我忘了在 application.rb
中导入模型文件夹,它现在应该是这样的:
class Application < Rails::Application
...
config.autoload_paths += Dir[Rails.root / "components/*/app/public"]
config.autoload_paths += Dir[Rails.root / "components/*/models"]
...
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。