更改ActiveStorage控制器路径

时间:2018-03-21 14:34:19

标签: ruby-on-rails rails-activestorage

有没有办法自定义附件网址而不是

/rails/active_storage/representations/
/rails/active_storage/blobs/

我们可以这样:

/custom_path/representations/
/custom_path/blobs/

3 个答案:

答案 0 :(得分:3)

猴子修补总是在您身边。

仅出于兴趣,在下一个补丁中,我可以更改ActiveStorage Controller路径:

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)

似乎一切正常。

答案 1 :(得分:3)

最近,有一个附加功能可以配置路由前缀:https://github.com/rails/rails/commit/7dd9916c0d5e5d149bdde8cbeec42ca49cf3f6ca

现在仅在master分支中,但应集成到〜> 5.2.2 及更高版本中。

然后,这只是配置问题:

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

答案 2 :(得分:0)

通过@stwienert测试了解决方案。 var sortArrayByParity = function(A) { E = []; O = []; for (var i = 0; i < A.length; i++) { if (A[i] % 2 === 0) { E.push(A[i]); } else { O.push(A[i]); } } return E.concat(O); }; var res = sortArrayByParity([1, 2, 3, 4]); console.log(res); // [2, 4, 1, 3] (sorted by evens first, odds second)选项仅适用于rails 6.0.0alpha和更高版本的分支。该补丁不适用于5.2.2

我用补丁制作了一个用于5.2.2的叉子。 https://github.com/StaymanHou/rails/tree/v5.2.2.1

要使用它,只需将config.active_storage.routes_prefix行替换为gem 'rails', '~> 5.2.2'。并运行gem 'rails', '5.2.2.1', git: 'https://github.com/StaymanHou/rails.git', tag: 'v5.2.2.1'

如果尚未安装

bundle install --force宝石进行Rails边缘安装-https://github.com/rails/rails/issues/28965