Change the ActiveStorage Controller Path

丶灬走出姿态 提交于 2019-11-29 06:30:06

Recently, there was an addition which makes the route prefix configurable: https://github.com/rails/rails/commit/7dd9916c0d5e5d149bdde8cbeec42ca49cf3f6ca

Just in master branch now, but should be integrated into ~> 5.2.2 and higher.

Then, it's just a matter of configuration:

Rails.application.configure do
  config.active_storage.routes_prefix = '/whereever'
end

Monkey patching is always on your side 😉.

Just for interest with next patch, I could change ActiveStorage Controller path:

module MapperMonkeypatch
  def map_match(paths, options)
    paths.collect! do |path|
      path.is_a?(String) ? path.sub('/rails/active_storage/', '/custom_path/') : path
    end
    super
  end
end

ActionDispatch::Routing::Mapper.prepend(MapperMonkeypatch)

and everything seems works 🙂.

Tested the solution by @stwienert. The config.active_storage.routes_prefix option only works for rails 6.0.0alpha and higher branch. The patch is not available for 5.2.2

I made a fork for 5.2.2 with the patch. https://github.com/StaymanHou/rails/tree/v5.2.2.1

To use it, simply replace the line gem 'rails', '~> 5.2.2' with gem 'rails', '5.2.2.1', git: 'https://github.com/StaymanHou/rails.git', tag: 'v5.2.2.1'. And run bundle install --force

coffee-rails gem will be required if you don't have it yet for rails edge install - https://github.com/rails/rails/issues/28965

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!