2017-09-13 4 views
0

Ich habe kürzlich meine Rails-App mit Amazon S3 verbunden, damit meine Benutzer Dateien hochladen können, während ich auf Heroku hosste. Ich folgte das Tutorial bei Firehose Projekt:Testen von Carrierwave mit Rails

http://blog.thefirehoseproject.com/posts/switching-carrierwave-to-use-s3-with-heroku-and-localhost/

Beim ersten Versuch bekam ich eine nicht definierte Methode Fehler für die folgende Zeile ein:

config.fog_provider = 'fog/aws' 

(ich zu einem alten zurückkehren kann begehen, wenn Sie denken, der genaue Text dieses alten Fehlers wäre hilfreich.)

Um diesen Fehler herumzustochern, war die einzige Lösung, die funktionierte, meine Version von carrierwave auf "1.0.0.beta" zu setzen. Ich bin mir sicher, dass die Verwendung dieser Version nicht ideal ist, aber es ist die einzige, die bisher funktioniert. Entwicklung und Produktion sind jetzt funktionsfähig, aber nicht getestet. Jeder Test, der eine hochgeladene Datei enthält, löst jetzt einen zusätzlichen Argumentfehler aus.

ActionView::Template::Error: wrong number of arguments (given 2, expected 0) 

Dieses Problem tritt bei den meisten Carrierwave-Versionen nicht auf. Aber ich habe noch keine Kombination von Edelsteinen gefunden, die für alle drei meiner Umgebungen funktionieren.

Vielen Dank im Voraus für jede Einsicht.

# config/Initialisierungen/carrierwave.rb

CarrierWave.configure do |config| 
    config.fog_provider = 'fog/aws'      # required 
    config.fog_credentials = { 
    provider:    'AWS',      # required 
    aws_access_key_id:  ENV["AWS_ACCESS_KEY"],  # required 
    aws_secret_access_key: ENV["AWS_SECRET_KEY"],  # required 
    } 
    config.fog_directory = ENV["AWS_BUCKET"]    # required 
end 

Beispiel einer Fehlerwerfenden Codelinie

<%= link_to image_tag(question.picture.image_url(:thumb).to_s), edit_question_path(question), :id => "schmedit_#{question.id}" %> 

Gemfile

source 'https://rubygems.org' 

gem 'rails',   '5.0.0' 
gem 'bcrypt',   '3.1.11' 
gem 'faker',   '1.6.3' 
gem 'will_paginate',   '3.1.0' 
gem 'bootstrap-will_paginate', '0.0.10' 
gem 'bootstrap-sass', '3.3.6' 
gem 'puma',   '3.4.0' 
gem 'sass-rails',  '5.0.5' 
gem 'uglifier',  '3.0.0' 
gem 'coffee-rails', '4.2.1' 
gem 'jquery-rails', '4.1.1' 
gem 'jquery-ui-rails' 
gem 'turbolinks',  '5.0.0' 
gem 'jquery-turbolinks' 
gem 'jbuilder',  '2.4.1' 
gem 'best_in_place', '~> 3.1' 
gem 'responders', '~> 2.2' 
gem 'carrierwave', '~> 1.0.0.beta' 
gem 'mini_magick', '~> 4.3' 
gem 'capybara' 
gem 'figaro' 
gem 'fog-aws', '0.12.0' 

group :development, :test do 
    gem 'sqlite3', '1.3.11' 
    gem 'byebug', '9.0.0', platform: :mri 
end 

group :development do 
    gem 'web-console',   '3.1.1' 
    gem 'listen',    '3.0.8' 
    gem 'spring',    '1.7.1' 
    gem 'spring-watcher-listen', '2.0.0' 
end 

group :test do 
    gem 'rails-controller-testing', '0.1.1' 
    gem 'minitest-reporters',  '1.1.9' 
    gem 'guard',     '2.13.0' 
    gem 'guard-minitest',   '2.4.4' 
end 

group :production do 
    gem 'pg', '0.18.4' 
end 

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

Antwort

0

Diese Änderung der Code scheint das Problem behoben zu haben:

config.fog_provider = 'fog/aws' 

sollte stattdessen sein:

config.fog_directory = 'fog/aws' 

in der Datei config/initializers/carrierwave.rb

Verwandte Themen