rails: ломая приложение Heroku, пытаясь добавить AWS S3 и carrierwave - PullRequest
1 голос
/ 15 января 2012

Обновление:

это действительно странно.Я быстро создал новое приложение и фактически загрузил файл, но потом понял, что забыл сменить хранилище: файл на хранилище: туман.Когда я сделал это изменение в хранилище: fog, это новое приложение сломалось github.com/MikeOnRails/s3 Как это изменение могло сломать приложение?

Оригинальный вопрос

Я продолжаю ломать и создавать новые приложения heroku, пытаясь выяснить, как заставить Amazon s3 работать с несущей волной.

Я нашел некоторые инструкции на странице git-концентратора несущей волны, но, возможно, я что-то делаю.Перевозчик.Я без проблем добавил переменные окружения (то есть сайт не сломался)

heroku config: add S3_KEY = NOTREAL8844848L S3_SECRET = NOTREAL345566

, затем я создал файл в каталоге инициализаторов под названием carrierwave_s3.rbи вставил в него этот код

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => ENV['S3_KEY'],
    :aws_secret_access_key  => ENV['S3_SECRET'],
    :region                 => 'US-Standard'
  }
  config.fog_directory  = 'm73test'
  config.fog_host       = 'https://m73test.s3.amazonaws.com'
  config.fog_public     = true
  config.fog_attributes = {'Cache-Control' => 'max-age=315576000'}
end

Я также попытался поместить одинарные кавычки вокруг переменных ENV

 :aws_access_key_id      => 'ENV['S3_KEY']',
    :aws_secret_access_key  => 'ENV['S3_SECRET']',

В загрузчиках / image_uploader.rb

Я изменил

storage :file

до

storage :fog

Обратите внимание, in uploaders/image_uploader.rb Я не изменил это вообще, предполагая, что ему нужен путь к файлу, чтобы сохранить его в

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

Затем я нажал новый код и получил ошибку приложения.Кто-нибудь может помочь?

(Обратите внимание, что в консоли amazon, когда я создаю контейнер, он говорит «Стандарт США». Я добавил дефис в свой код, потому что увидел его на git-концентраторе несущей волны.)

часть журналов Heroku, сообщающих, что произошел сбой

4T23:32:03+00:00 app[web.1]:    from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:51:in `initialize'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/config.ru:1:in `new'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.6/lib/rack/server.rb:301:in `wrapped_app'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.3/lib/rails/commands.rb:49:in `tap'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.3/lib/rails/commands.rb:49:in `<top (required)>'
2012-01-14T23:32:03+00:00 app[web.1]:   from script/rails:6:in `require'
2012-01-14T23:32:03+00:00 app[web.1]:   from script/rails:6:in `<main>'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.6/lib/rack/server.rb:252:in `start'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.6/lib/rack/builder.rb:40:in `eval'
2012-01-14T23:32:03+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.3/lib/rails/commands.rb:54:in `block in <top (required)>'
2012-01-14T23:32:05+00:00 heroku[web.1]: State changed from starting to crashed
2012-01-14T23:32:05+00:00 heroku[web.1]: Process exited
2012-01-14T23:32:06+00:00 heroku[router]: Error H10 (App crashed) -> GET mmcarry.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-01-14T23:32:06+00:00 heroku[router]: Error H10 (App crashed) -> GET mmcarry.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=
2012-01-14T23:32:11+00:00 heroku[router]: Error H10 (App crashed) -> GET mmcarry.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-01-14T23:32:11+00:00 heroku[router]: Error H10 (App crashed) -> GET mmcarry.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=

Ответы [ 4 ]

6 голосов
/ 14 ноября 2013

Я думаю, у вас проблема в том, что название региона, хотя и называется "Стандарт США", на самом деле называется "us-east-1" из-за тумана.Чтобы исправить это, измените эту строку:

:region => 'US-Standard'

на:

:region => 'us-east-1'

Я думаю, что это должно решить вашу проблему.

3 голосов
/ 23 мая 2015

я думаю, что вы должны дать config.fog_public = 'false', следуйте инструкциям ниже

CarrierWave.configure do|config|
 config.fog_credentials = {
  provider:              'AWS',
  aws_access_key_id:     'AWS_ACCESS_KEY',
  aws_secret_access_key: 'AWS_SECRET_KEY',
  region:                'region-name',
  host:                  's3.example.com',
  endpoint:              'https://s3.example.com'
 }
 config.fog_directory = 'name of the bucket'
 config.fog_public = 'false'
 config.fog_attributes = {'Cache-Control' => "max-age=#{365.to_i}" }
end
2 голосов
/ 05 марта 2012

Я думаю, это потому, что ваш регион неверен.Регион обычно имеет следующий формат: «us-east-1», «us-west-1» и т. Д. Проверьте, в каком из них вы находитесь в первую очередь, внесите изменения и увидите?

0 голосов
/ 30 июня 2013

Вы когда-нибудь решали эту проблему? У меня была похожая проблема, и она исчезла после изменения порядка драгоценных камней в Gemfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...