2012-03-05 4 views
1

Я использую рельсы 3.2.1, несущая волна 0.5.8, туман 1.1.2, rmagick 2.13.1.carrierwave heroku - продолжайте получать сообщение об ошибке msg

Я пытаюсь загрузить фотографии продуктов на amazon s3, но я продолжаю получать это сообщение об ошибке независимо от того, какая перестановка файла инициализации carrierwave.rb, который я нахожу в Интернете (и я думаю, что я пробовал их все), никто, похоже, не работает. Ничто не загружается в мой ведро S3. Я получаю ту же ошибку msg для других версий, которые я пробовал. Я думаю, что это может быть что-то в моем контроллере, но не уверен, что может его отключить. ПОЖАЛУЙСТА ПОМОГИ!

ошибка сбщ из Heroku входа:

2012-03-05T06:35:18+00:00 app[web.1]: app/controllers/products_controller.rb:40:in `update' 
2012-03-05T06:35:18+00:00 app[web.1]: ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key): 
2012-03-05T06:35:18+00:00 app[web.1]: cache: [POST /products/3] invalidate, pass 

carrierwave инициализатор

CarrierWave.configure do |config| 
if Rails.env.production? 
    config.storage = :fog 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    :aws_access_key_id  => 'access_key', 
    :aws_secret_access_key => 'secret_access_key', 
    :region    => 'us-east-1' 
    } 


config.fog_directory = 'bucket_name' 
config.fog_public  = true         
config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 

else 
    #for development and testing locally 
    config.storage = :file 
    config.enable_processing = false 
end 
end 

image_uploader

include CarrierWave::RMagick 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb_pic do 
    process :resize_to_limit => [170, 170] 
    end 
end 

контроллер

def create 
    @all_categories = get_all_categories 
    checked_categories = get_categories_from(params[:categories]) 
    removed_categories = @all_categories - checked_categories 
    @product = Product.new(params[:product]) 
    if @product.save 
    checked_categories.each {|cat| @product.categories << cat if [email protected]?(cat)} 
    removed_categories.each {|cat| @product.categories.delete(cat) if @product.categories.include?(cat)} 
    redirect_to(:action => 'list') 
    else 
    render "new" 
    end 
end 

Это то, что я вижу, когда я проверил Heroku конфигурации

DATABASE_URL  => ..... 
GEM_PATH   => vendor/bundle/ruby/1.9.1 
LANG    => en_US.UTF-8 
PATH    => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin 
RACK_ENV   => production 
RAILS_ENV   => production 
S3_BUCKET   => bucket_name 
S3_KEY    => access_key 
S3_SECRET   => secret_access_key 
SHARED_DATABASE_URL => ..... 

Я провел хорошие два дня на это уже и ничего.

ответ

1

Были несколько вопросов, неправильно с моей код. Мне нужно было изменить config.fog_public на false (за Amazon), и с моей стороны возникла проблема с самолетом-туманом. По-видимому, это не передача информации. Я должен был вручную добавить данные с помощью этих двух линий:

compute = Fog::Compute.new(:provider => 'AWS', :aws_access_key_id => ACCESS_KEY_ID, :aws_secret_access_key => SECRET_ACCESS_KEY)

и

storage = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => ACCESS_KEY_ID, :aws_secret_access_key => SECRET_ACCESS_KEY)

После этого все работало. Кроме того, не забудьте поместить его в строковый формат, потому что рельсы не распознают ничего, начиная с букв в виде строки, если они не указаны явно.

+2

У меня возникают аналогичные проблемы с развертыванием несущей, aws и heroku. Работы находят локально, но не могут загружаться при развертывании. Не могли бы вы отредактировать и добавить, что именно выглядит ваш файл 'config/initializers/carrierwave.rb'? Это может привести меня в порядок. – BenU

1

Вынуть if Rails.env.production?.

Если вы делаете это правильно, вы должны использовать environment variables to store your credentials, и вы также должны быть matching your dev, test and productions environments с точки зрения функциональности (название Ковш должен также, вероятно, будет конфиг вар)

+0

Я тоже пробовал, и он все еще не работает. Я получаю ту же ошибку. Я даже добавил 'use Rack :: Static,: urls => ['/ uploads'],: root => 'tmp'' в мой файл config.ru и определил cache_dir в файле uploader и ничего не работает. Я все равно получаю одну и ту же ошибку каждый раз – noob