Ruby (1.9.3) on Rails (3.2.9) アプリを Windows Azure 仮想マシンで実行しています (Ruby-Stack-1-9-3-6-Ubuntu-12-10 イメージを使用)。Capistrano を使用して VM に正常にデプロイできますが、ファイルのアップロードと Azure Storage に関しては壁に達しています。
waz-storage gemを使用するpaperclip- azure-storage gemを実装しようとしていますが、このエラーを回避できないようです。
undefined method 'new' for nil:NilClass
Video オブジェクトを (単純な Rails フォームを使用して) 作成/更新/破棄しようとすると、常にこのエラーが発生します。明確にするために、ローカル マシンと VM インスタンスの両方でこのエラーが発生します。
Video モデルで次のコードをコメントアウトするとすぐにすべてが機能するため、エラーが Paperclip にあることはわかっています。
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
スキーマ:添付ファイルが Videos テーブルに適切に追加されたことを確認するために検証されました
答えを求めて精力的に調査しましたが、問題の根本を見つけることができないようです。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 の実装を試みた/成功した人はいますか? ガイダンス/提案があれば幸いです。