【发布时间】:2018-09-23 14:09:59
【问题描述】:
将 Rails 升级到 5.2,我发现我必须将 storage.yml 提交到版本控制中。我不打算使用 ActiveStorage。有没有办法禁用它?
【问题讨论】:
标签: rails-activestorage ruby-on-rails-5.2
将 Rails 升级到 5.2,我发现我必须将 storage.yml 提交到版本控制中。我不打算使用 ActiveStorage。有没有办法禁用它?
【问题讨论】:
标签: rails-activestorage ruby-on-rails-5.2
从config/environments/*.rb中删除如下行
config.active_storage.service = :local
Rails 将不会加载 yaml 文件。
【讨论】:
config.active_storage = false 之类的吗?
到目前为止我发现的唯一解决方案是在config/application.rb,替换:
require 'rails/all'
与:
require "rails"
# Include each railties manually, excluding `active_storage/engine`
%w(
active_record/railtie
action_controller/railtie
action_view/railtie
action_mailer/railtie
active_job/railtie
action_cable/engine
rails/test_unit/railtie
sprockets/railtie
).each do |railtie|
begin
require railtie
rescue LoadError
end
end
取自 Rails 的source。
【讨论】:
rails routes时出现如下错误:NoMethodError: undefined method "active_storage" for #<Rails::Application::Configuration:0x00005589ab85b968>
active_storage 文件中可能有一个active_storage 引用;)
从config/application.rb中删除下一行
require "active_storage/engine"
从环境中删除下一行 config/environments/*.rb
config.active_storage.service = :local
从app/assets/javascripts/application.js中删除下一行
//= require activestorage
ActiveStorage rails 路由将消失
如果application.rb 中有声明require 'rails/all',那么您可以使用下面提供的解决方案,您需要逐个依赖并省略active_storage。
【讨论】:
/rails/active_storage... 路由
application.rb 中有声明require 'rails/all',所以你需要逐个依赖,并确保不要遗漏一些重要的东西。请参阅下面的答案以供参考。
require 'rails/all'