def index
if Rails.configuration.x.streaming_api_base_url != request.host
- uri = URI.parse(request.url)
- uri.host = URI.parse(Rails.configuration.x.streaming_api_base_url).host
- redirect_to uri.to_s, status: 301
+ redirect_to streaming_api_url, status: 301
else
- raise ActiveRecord::RecordNotFound
+ not_found
end
end
+
+ private
+
+ def streaming_api_url
+ Addressable::URI.parse(request.url).tap do |uri|
+ uri.host = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url).host
+ end.to_s
+ end
end
# frozen_string_literal: true
-Paperclip.options[:read_timeout] = 60
-
Paperclip.interpolates :filename do |attachment, style|
- return attachment.original_filename if style == :original
- [basename(attachment, style), extension(attachment, style)].delete_if(&:blank?).join('.')
+ if style == :original
+ attachment.original_filename
+ else
+ [basename(attachment, style), extension(attachment, style)].delete_if(&:blank?).join('.')
+ end
end
Paperclip::Attachment.default_options.merge!(
storage: :s3,
s3_protocol: s3_protocol,
s3_host_name: s3_hostname,
+
s3_headers: {
'X-Amz-Multipart-Threshold' => ENV.fetch('S3_MULTIPART_THRESHOLD') { 15.megabytes }.to_i,
'Cache-Control' => 'public, max-age=315576000, immutable',
},
+
s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' },
s3_region: s3_region,
+
s3_credentials: {
bucket: ENV['S3_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
},
+
s3_options: {
signature_version: ENV.fetch('S3_SIGNATURE_VERSION') { 'v4' },
http_open_timeout: 5,
endpoint: ENV['S3_ENDPOINT'],
force_path_style: true
)
+
Paperclip::Attachment.default_options[:url] = ':s3_path_url'
end
openstack_region: ENV['SWIFT_REGION'],
openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 },
},
+
fog_directory: ENV['SWIFT_CONTAINER'],
fog_host: ENV['SWIFT_OBJECT_URL'],
fog_public: true
Paperclip::Attachment.default_options.merge!(
storage: :filesystem,
use_timestamp: true,
- path: (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename',
- url: (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename',
+ path: ENV.fetch('PAPERCLIP_ROOT_PATH', ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename',
+ url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + '/:class/:attachment/:id_partition/:style/:filename',
)
end
end
it 'sets default avatar, header, avatar_remote_url, and header_remote_url' do
- expect(account.avatar_remote_url).to eq ''
- expect(account.header_remote_url).to eq ''
+ expect(account.avatar_remote_url).to eq 'https://remote.test/invalid_avatar'
+ expect(account.header_remote_url).to eq expectation.header_remote_url
expect(account.avatar_file_name).to eq nil
expect(account.header_file_name).to eq nil
end
def hoge=(arg); end
+ def hoge_file_name; end
+
def hoge_file_name=(arg); end
def has_attribute?(arg); end
end
context 'foo[attribute_name] == url' do
- it 'makes no request' do
+ it 'makes no request if file is saved' do
allow(foo).to receive(:[]).with(attribute_name).and_return(url)
+ allow(foo).to receive(:hoge_file_name).and_return('foo.jpg')
foo.hoge_remote_url = url
expect(request).not_to have_been_requested
end
+
+ it 'makes request if file is not saved' do
+ allow(foo).to receive(:[]).with(attribute_name).and_return(url)
+ allow(foo).to receive(:hoge_file_name).and_return(nil)
+
+ foo.hoge_remote_url = url
+ expect(request).to have_been_requested
+ end
end
context "scheme is https, parsed_url.host isn't empty, and foo[attribute_name] != url" do