我使用Paperclip
和Fog
来处理云端存储。云存储提供Openstack
API,这是我的设置:
paperclip_defaults.rb
:
Paperclip::Attachment.default_options.update({
:path => "images/:class/:id/:attachment/:style/img_:fingerprint",
:storage => :fog,
:fog_credentials => {
:provider => 'OpenStack',
:openstack_auth_url => 'myurl',
:openstack_username => 'login',
:openstack_api_key => 'pass'
},
:fog_directory => 'dir',
:fog_public => true,
})
一切正常上传,但我无法下载图片! 这是stacktrace:
fog (1.23.0) lib/fog/openstack/models/storage/directory.rb:35:in `public_url'
fog (1.23.0) lib/fog/openstack/models/storage/files.rb:67:in `get_url'
fog (1.23.0) lib/fog/openstack/models/storage/file.rb:81:in `public_url'
paperclip (4.2.0) lib/paperclip/storage/fog.rb:136:in `public_url'
paperclip (4.2.0) lib/paperclip/storage/fog.rb:51:in `block (2 levels) in extended'
paperclip (4.2.0) lib/paperclip/interpolations.rb:34:in `block (2 levels) in interpolate'
paperclip (4.2.0) lib/paperclip/interpolations.rb:33:in `gsub'
paperclip (4.2.0) lib/paperclip/interpolations.rb:33:in `block in interpolate'
paperclip (4.2.0) lib/paperclip/interpolations.rb:32:in `each'
paperclip (4.2.0) lib/paperclip/interpolations.rb:32:in `inject'
paperclip (4.2.0) lib/paperclip/interpolations.rb:32:in `interpolate'
paperclip (4.2.0) lib/paperclip/url_generator.rb:13:in `for'
paperclip (4.2.0) lib/paperclip/attachment.rb:142:in `url'
NotImplementedError
public_url
始终为openstack存储返回此错误。怎么了?
答案 0 :(得分:2)
你需要设置" fog_host"到您的对象存储服务端点。
这是一个例子。 https://gist.github.com/withhawaii/4527bfdbe4fd1d52f67a
您可以在Openstack Horizon中找到您的终端。 登录Horizon并点击"访问&安全" => " API访问"。 您将找到对象存储服务端点的URL。
它基本上是一个URL,用户可以在其中访问文件。 您的系统管理员可能会设置代理等。 如果是这种情况,请设置系统管理员为您提供的URL。
希望这会有所帮助。
GT