ruby-on-rails 是否从Rails 6中的bin/rails路由中省略操作邮箱、活动存储和导体路由?

ttvkxqim  于 2023-02-26  发布在  Ruby
关注(0)|答案(2)|浏览(123)

我有一个全新的Rails 6应用程序,config/routes.rb中没有 * 任何东西 *,bin/rails routes的输出有一个巨大的列表,其中包含ActiveStorage、Action Mailbox和导体的非常长的URL。
这使得bin/rails routes作为一种文档形式完全无用,特别是因为bin/rails routes的选项不允许过滤 * 出 * 内容。
我不想省略Rails的这些部分,因为我可能需要它们,但我希望这些路由a)如果我不使用它们,就不存在; b)不在bin/rails routes中显示。
有人知道怎么用吗?

4uqofj5v

4uqofj5v1#

从Rails www.example.com开始6.0.2.1,这就是实现它的方法:
config/application.rb中,删除行require "rails/all"并将其替换为:

# See https://github.com/rails/rails/blob/v6.0.2.1/railties/lib/rails/all.rb for the list
# of what is being included here
require "rails"

# This list is here as documentation only - it's not used
omitted = %w(
  active_storage/engine
  action_cable/engine
  action_mailbox/engine
  action_text/engine
)

# Only the frameworks in Rails that do not pollute our routes
%w(
  active_record/railtie
  action_controller/railtie
  action_view/railtie
  action_mailer/railtie
  active_job/railtie
  rails/test_unit/railtie
  sprockets/railtie
).each do |railtie|
  begin
    require railtie
  rescue LoadError
  end
end

请注意,如果您保留actiontext,您仍然会得到一些活动存储路由包括在内。不知道为什么。这种配置基本上意味着您不能使用活动存储,操作文本,或操作邮箱。将这些带回将带回许多路由您永远不会需要。
还要注意,这个解决方案有一个使用成本,因为每次升级Rails版本时,您都必须检查rails/all.rb,以确保没有添加您可能关心的新框架(或删除您不再需要的新框架)。

  • 注意 *:您还需要从config/environments/*.rb中的文件中删除对活动存储的引用
rt4zxlrg

rt4zxlrg2#

您可以通过注解掉application.rb中的特定require行来省略ActionMailbox路由。
具体来说,如果您注解require "action_mailbox/engine"行,您将不再看到任何/rails/action_mailbox/rails/conductor/action_mailbox路由。
你需要重新启动应用才能使更改生效。

相关问题