我在 Windows Azure 虚拟机上运行了一个 Ruby (1.9.3) on Rails (3.2.9) 应用程序(使用 Ruby-Stack-1-9-3-6-Ubuntu-12-10 映像)。我可以使用 Capistrano 成功部署到 VM,但在文件上传和 Azure 存储方面遇到了困难。
我正在尝试实现使用waz-storage gem 的回形针-azure-storage gem,但似乎无法克服此错误:
undefined method 'new' for nil:NilClass
每当我尝试创建/更新/销毁 Video 对象(使用简单的 Rails 表单)时,都会收到此错误。为了澄清,我在本地机器和虚拟机实例上都收到了这个错误。
我知道错误与回形针有关,因为只要我在我的视频模型中注释掉以下代码,一切正常:
has_attached_file :pic, :storage => :azure1
按照两个 gem 来源(上面的链接)的说明,我添加了以下文件:
azure.yml
(包含我的 Azure 存储帐户名称和访问密钥)storage.rb
(从paperclip-azure-storage gem复制并添加到 /lib/paperclip)paperclip.rb
(也从 paperclip-azure-storage gem 复制并添加到初始化器列表中)
涵盖基础知识:
- Gemfile:
gem 'paperclip'
刚刚更新到 3.4.1 版本 - 形式:
<%= form_for @video, html: { multipart: true } do |video_form| %>
尝试使用和不使用url
选项。 - 在每个环境文件中:
Paperclip.options[:command_path] = "/opt/local/bin/convert"
- 架构:经过验证以确保
pic
附件已正确添加到视频表中
我一直在不知疲倦地寻找答案,但似乎找不到问题的根源。是不是 ImageMagick 没有正确安装?storage.rb
文件的放置和/或配置是否不正确paperclip.rb
?还是完全是别的东西?
这是我的paperclip.rb
初始化程序中的代码:
module Paperclip
class Attachment
def self.default_options
@default_options ||= {
:styles => {},
:processors => [:thumbnail],
:convert_options => {},
:default_url => "/rails.png",
:default_style => :original,
:whiny => Paperclip.options[:whiny] || Paperclip.options[:whiny_thumbnails],
:storage => :azure1,
:path => ":modelname/:attachment/:id/:style/:filename",
:azure_credentials => "#{Rails.root}/config/azure.yml",
:azure_container => "system",
:azure_host_alias => "name_of_azure_storage.blob.core.windows.net",
:url => ':azure_domain_url',
}
end
end
end
如果需要,我很乐意发布其他代码。
有没有人尝试/成功使用 Windows Azure 实现上述 gem?我会喜欢任何指导/建议。