Ruby FOG和自定义openstack提供程序:NotImplementedError

时间:2014-08-28 06:53:57

标签: ruby-on-rails paperclip fog

我使用PaperclipFog来处理云端存储。云存储提供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存储返回此错误。怎么了?

1 个答案:

答案 0 :(得分:2)

你需要设置" fog_host"到您的对象存储服务端点。

这是一个例子。 https://gist.github.com/withhawaii/4527bfdbe4fd1d52f67a

您可以在Openstack Horizo​​n中找到您的终端。 登录Horizo​​n并点击"访问&安全" => " API访问"。 您将找到对象存储服务端点的URL。

它基本上是一个URL,用户可以在其中访问文件。 您的系统管理员可能会设置代理等。 如果是这种情况,请设置系统管理员为您提供的URL。

希望这会有所帮助。

GT