コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsと関係ないところでActiveStorageのURLを生成する

POROとか作ってると、Rails関係のクラスを継承していないとか往々に起きるんですが、そういうところで引数にホストとか指定せずにURL作りたいなーということがあったのでメモ。

環境

rails (5.2.0)

やり方

全部を引数指定するpolymorphic_url

Rails.application.routes.url_helpers.polymorphic_url(User.last.avatar,host:"example.com",protocol:"http")

# => "http://example.com/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f60bc658d942b690eea99c6153fe449a2c73daee/test.png"

enviromentsに設定値を書いて行うurl_for

config/environment/xxx.ymlに設定値を書き足す

Rails.application.configure do
  
  #(中略)
  
  default_url_options[:protocol] = "http"
  default_url_options[:host] = "example.com"
end

その上でurl_forをする

Rails.application.routes.url_helpers.url_for(User.last.avatar)
# => "http://example.com/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f60bc658d942b690eea99c6153fe449a2c73daee/test.png"

参考URL